PopulateBlocks_test.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package solver
  2. import (
  3. "slices"
  4. "testing"
  5. "gitea.ligthert.net/golang/sudoku-funpark/controller"
  6. "gitea.ligthert.net/golang/sudoku-funpark/outputter"
  7. )
  8. // This functions tests the PopulateBlocks function.
  9. // It does this by creating a small set of rows and then
  10. // calling the PopulateBlocks function. It then checks
  11. // if the number of blocks is as expected.
  12. func TestPopulateBlocks(t *testing.T) {
  13. // Do all the necesarry steps to initialize the solver.
  14. solver := Solver{}
  15. outp := outputter.Outputter{}
  16. outp.OutputType = "short"
  17. solver.Outp = &outp
  18. controller := controller.Controller{}
  19. solver.Controller = &controller
  20. solver.LoadBlocks()
  21. // Create a set of rows
  22. // Using the following values: [769154832 154832769 832769154 671945328 945328671 328671945 597416283 416283597 283597416]
  23. solver.Controller.Row1 = "769154800"
  24. solver.Controller.Row2 = "154832700"
  25. solver.Controller.Row3 = "832769100"
  26. solver.Controller.Row4 = "671945300"
  27. solver.Controller.Row5 = "945328600"
  28. solver.Controller.Row6 = "328671900"
  29. solver.Controller.Row7 = "597416200"
  30. solver.Controller.Row8 = "416283500"
  31. solver.Controller.Row9 = "283597400"
  32. // Call the PopulateBlocks function
  33. solver.PopulateBlocks()
  34. // Check if the number of blocks is as expected
  35. if solver.Iter != 512 {
  36. t.Errorf("Expected 19683 blocks, got %d", solver.Iter)
  37. }
  38. // Check if solver.row1s is as expected
  39. if slices.Compare(solver.row1s, []string{"769154823", "769154832"}) != 0 {
  40. t.Errorf("Expected [769154832, 769154823], got %s", solver.row1s)
  41. }
  42. // check if solver.row2s is as expected
  43. if slices.Compare(solver.row2s, []string{"154832769", "154832796"}) != 0 {
  44. t.Errorf("Expected [154832769, 154832796], got %s", solver.row2s)
  45. }
  46. // check if solver.row3s is as expected
  47. if slices.Compare(solver.row3s, []string{"832769145", "832769154"}) != 0 {
  48. t.Errorf("Expected [832769154, 832769145], got %s", solver.row3s)
  49. }
  50. // check if solver.row4s is as expected
  51. if slices.Compare(solver.row4s, []string{"671945328", "671945382"}) != 0 {
  52. t.Errorf("Expected [671945328, 671945382], got %s", solver.row4s)
  53. }
  54. // check if solver.row5s is as expected
  55. if slices.Compare(solver.row5s, []string{"945328617", "945328671"}) != 0 {
  56. t.Errorf("Expected [945328617, 945328671], got %s", solver.row5s)
  57. }
  58. // check if solver.row6s is as expected
  59. if slices.Compare(solver.row6s, []string{"328671945", "328671954"}) != 0 {
  60. t.Errorf("Expected [328671945, 328671954], got %s", solver.row6s)
  61. }
  62. // check if solver.row7s is as expected
  63. if slices.Compare(solver.row7s, []string{"597416238", "597416283"}) != 0 {
  64. t.Errorf("Expected [597416238, 597416283], got %s", solver.row7s)
  65. }
  66. // check if solver.row8s is as expected
  67. if slices.Compare(solver.row8s, []string{"416283579", "416283597"}) != 0 {
  68. t.Errorf("Expected [416283579, 416283597], got %s", solver.row8s)
  69. }
  70. // check if solver.row9s is as expected
  71. if slices.Compare(solver.row9s, []string{"283597416", "283597461"}) != 0 {
  72. t.Errorf("Expected [283597416, 283597461], got %s", solver.row9s)
  73. }
  74. }