Select Git revision
topological-sort_test.go
topological-sort_test.go 6.41 KiB
package jobqueue
import (
"reflect"
"testing"
)
func TestTopologicalSortJobs(t *testing.T) {
// Create a sample set of jobs with dependencies and priorities
job1 := &Job[string]{id: "1", priority: PriorityDefault}
job2 := &Job[string]{id: "2", priority: PriorityHigh, dependencies: []JobID{"1"}}
job3 := &Job[string]{id: "3", priority: PriorityLow, dependencies: []JobID{"1"}}
job4 := &Job[string]{id: "4", priority: PriorityCritical, dependencies: []JobID{"3"}}
job5 := &Job[string]{id: "5", dependencies: []JobID{"2", "4"}}
jobs := []GenericJob{
job1,
job2,
job3,
job4,
job5,
}
// Call the function to get the sorted job IDs
sortedJobIDs, err := topologicalSortJobs(jobs)
if err != nil {
t.Errorf("Error in sorting jobs: %v", err)
}
// Define the expected order
expectedOrder := []JobID{"1", "2", "3", "4", "5"}
// Check if the result matches the expected order
if !reflect.DeepEqual(sortedJobIDs, expectedOrder) {
t.Errorf("Expected order %v, but got %v", expectedOrder, sortedJobIDs)
}
}
func TestTopologicalSortJobs2(t *testing.T) {
// Create a sample set of jobs with dependencies and priorities
job1 := &Job[string]{id: "1", priority: PriorityHigh}
job2 := &Job[string]{id: "2", priority: PriorityHigh, dependencies: []JobID{"1"}}
job3 := &Job[string]{id: "3", priority: PriorityLow, dependencies: []JobID{"1"}}
job4 := &Job[string]{id: "4", priority: PriorityCritical, dependencies: []JobID{"3"}}
job5 := &Job[string]{id: "5", dependencies: []JobID{"2", "4"}}
jobs := []GenericJob{
job1,
job2,
job3,
job4,
job5,
}
// Call the function to get the sorted job IDs
sortedJobIDs, err := topologicalSortJobs(jobs)
if err != nil {
t.Errorf("Error in sorting jobs: %v", err)
}
// Define the expected order
expectedOrder := []JobID{"1", "2", "3", "4", "5"}
// Check if the result matches the expected order
if !reflect.DeepEqual(sortedJobIDs, expectedOrder) {
t.Errorf("Expected order %v, but got %v", expectedOrder, sortedJobIDs)
}
}