Index import dependencies for local scope scheduling
This commit is contained in:
@@ -5,6 +5,29 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestImportSchedulingKeepsUnselectedSlotsAndScopeBoundaries(t *testing.T) {
|
||||
dependent := importNodeKey{resourcePath: "a-dependent"}
|
||||
external := importNodeKey{resourcePath: "external"}
|
||||
prerequisite := importNodeKey{resourcePath: "z-prerequisite"}
|
||||
graph := newImportInclusionGraph()
|
||||
for _, key := range []importNodeKey{dependent, external, prerequisite} {
|
||||
graph.addNode(importGraphNode{key: key})
|
||||
}
|
||||
graph.addEdge(dependent, prerequisite, Location{})
|
||||
graph.addEdge(dependent, external, Location{})
|
||||
graph.addEdge(external, prerequisite, Location{})
|
||||
contributions := []acquiredContribution{
|
||||
{identity: dependent}, {identity: external}, {identity: prerequisite},
|
||||
}
|
||||
scheduled := scheduleContributionSlots(contributions, []int{0, 2}, indexImportDependencies(graph))
|
||||
if scheduled[0].identity != prerequisite || scheduled[1].identity != external || scheduled[2].identity != dependent {
|
||||
t.Fatalf("scope schedule = %#v", scheduled)
|
||||
}
|
||||
if contributions[0].identity != dependent || contributions[2].identity != prerequisite {
|
||||
t.Fatal("scheduling changed the input slots")
|
||||
}
|
||||
}
|
||||
|
||||
func TestImportAndInheritanceIntegrationsUseEquivalentReadySchedules(t *testing.T) {
|
||||
names := []string{"a-base", "b-independent", "z-dependent"}
|
||||
keys := make(map[string]importNodeKey, len(names))
|
||||
@@ -33,7 +56,7 @@ func TestImportAndInheritanceIntegrationsUseEquivalentReadySchedules(t *testing.
|
||||
}
|
||||
graph.addEdge(keys["z-dependent"], keys["a-base"], Location{})
|
||||
|
||||
scheduled := scheduleContributionSlots(contributions, []int{0, 1, 2}, graph)
|
||||
scheduled := scheduleContributionSlots(contributions, []int{0, 1, 2}, indexImportDependencies(graph))
|
||||
got := make([]string, len(scheduled))
|
||||
for index, contribution := range scheduled {
|
||||
got[index] = contribution.identity.resourcePath[1:]
|
||||
|
||||
Reference in New Issue
Block a user