package solver import ( "testing" "gitea.ligthert.net/golang/sudoku-funpark/controller" "gitea.ligthert.net/golang/sudoku-funpark/outputter" ) // Function to test the setWorkload function. func TestSetWorkload(t *testing.T) { // Create a new Solver struct. solver := Solver{} // Create outputter struct. outp := outputter.Outputter{} // Set the output type to human. outp.OutputType = "short" // Set the outputter of the solver to the outputter. solver.Outp = &outp // Create a controller struct. controller := controller.Controller{} // Set the controller of the solver to the controller. solver.Controller = &controller // Execute the loadBlocks function. solver.LoadBlocks() // Provide controller.row1 with a value. // This is the row that will be used in the findBlocks function. controller.Row1 = "769104802" // Fill the other rows with values. solver.row2s = []string{"769104802"} solver.row3s = []string{"769104802"} solver.row4s = []string{"769104802"} solver.row5s = []string{"769104802"} solver.row6s = []string{"769104802"} solver.row7s = []string{"769104802"} solver.row8s = []string{"769104802"} solver.row9s = []string{"769104802"} // Call the findBlocks function with the row and the slice of rows. solver.findBlocks(&controller.Row1, &solver.row1s) // Divide the work between two agents. solver.Controller.Split = 2 // Set the part of the workload that the first agent will do. solver.Controller.Part = 1 // Call the splitWorkload function. agents := solver.splitWorkload() // Run the setWorkload function. solver.setWorkload(agents) // Check if the solver.row1s slice is as expected. if len(solver.row1s) != 1 { t.Errorf("Expected 1, got %v", len(solver.row1s)) } // Check if the solver.Iter value is as expected. if solver.Iter != 1 { t.Errorf("Expected 9, got %v", solver.Iter) } }