Skip to content
Snippets Groups Projects
Select Git revision
  • 2fb8420b0ade42f185ebb9ea0e38e25cf2006cfb
  • master default protected
  • v1.23.2
  • v1.23.1
  • v1.23.0
  • v1.22.0
  • v1.21.1
  • v1.21.0
  • v1.20.3
  • v1.20.2
  • v1.20.1
  • v1.20.0
  • v1.19.4
  • v1.19.3
  • v1.19.2
  • v1.19.1
  • v1.19.0
  • v1.18.2
  • v1.18.1
  • v1.18.0
  • v1.17.0
  • v1.16.1
22 results

topological-sort_test.go

Blame
  • 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)
    	}
    }