@@ -471,18 +471,43 @@ TEST_F (MunkresTest, solve_3x2_NonObviousSolutionCase001_Success)
471471
472472
473473
474- TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase001_Success)
474+ // This is simplified version of test case #008.
475+ TEST_F (MunkresTest, solve_3x2_NonObviousSolutionCase002_Success)
476+ {
477+ // Arrange.
478+ Matrix<double > etalon_matrix{
479+ {-1.0 , -1.0 },
480+ { 0.0 , -1.0 },
481+ {-1.0 , 0.0 }
482+ };
483+ Matrix<double > test_matrix{
484+ {1.0e+17 , 3 },
485+ {2 , 1.0e+17 },
486+ {4 , 1 }
487+ };
488+
489+ Munkres<double > munkres;
490+
491+ // Act.
492+ munkres.solve (test_matrix);
493+
494+ // Assert.
495+ EXPECT_EQ (etalon_matrix, test_matrix);
496+ }
497+
498+
499+
500+ // This is simplified version of test case #009 (transposed version of test case 002).
501+ TEST_F (MunkresTest, solve_2x3_NonObviousSolutionCase003_Success)
475502{
476503 // Arrange.
477504 Matrix<double > etalon_matrix{
478505 {-1.0 , 0.0 , -1.0 },
479- { 0.0 , -1.0 , -1.0 },
480506 {-1.0 , -1.0 , 0.0 }
481507 };
482508 Matrix<double > test_matrix{
483- {1.0 , 2.0 , 1.0 },
484- {0.0 , 9.0 , 9.0 },
485- {9.0 , 9.0 , 0.0 }
509+ {1.0e+17 , 2 , 4 },
510+ {3 , 1.0e+17 , 1 }
486511 };
487512
488513 Munkres<double > munkres;
@@ -496,18 +521,21 @@ TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase001_Success)
496521
497522
498523
499- TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase002_Success)
524+ // This is test case based on test case #002, but extended by one "impossible" task and one "lazy" worker.
525+ TEST_F (MunkresTest, solve_4x3_NonObviousSolutionCase004_Success)
500526{
501527 // Arrange.
502528 Matrix<double > etalon_matrix{
529+ {-1.0 , -1.0 , -1.0 },
530+ { 0.0 , -1.0 , -1.0 },
503531 {-1.0 , -1.0 , 0.0 },
504- {-1.0 , 0.0 , -1.0 },
505- { 0.0 , -1.0 , -1.0 }
532+ {-1.0 , 0.0 , -1.0 }
506533 };
507534 Matrix<double > test_matrix{
508- {0.0 , 0.0 , 4.0 },
509- {4.0 , 3.0 , 9.0 },
510- {3.0 , 4.0 , 9.0 }
535+ {1.0e+17 , 3 , 1.0e+17 },
536+ {2 , 1.0e+17 , 1.0e+17 },
537+ {1.0e+17 , 1.0e+17 , 1.0e+17 },
538+ {4 , 1 , 1.0e+17 }
511539 };
512540
513541 Munkres<double > munkres;
@@ -516,29 +544,51 @@ TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase002_Success)
516544 munkres.solve (test_matrix);
517545
518546 // Assert.
519- EXPECT_EQ (etalon_matrix, test_matrix);
547+ EXPECT_EQ (etalon_matrix (1 , 0 ), test_matrix (1 , 0 ) );
548+ EXPECT_EQ (etalon_matrix (3 , 1 ), test_matrix (3 , 1 ) );
520549}
521550
522551
523552
524- TEST_F (MunkresTest, solve_6x4_NonObviousSolutionCase003_Success)
553+ // This is test case based on test case #003, but extended by one "impossible" task and one "lazy" worker.
554+ TEST_F (MunkresTest, solve_3x4_NonObviousSolutionCase005_Success)
525555{
526556 // Arrange.
527557 Matrix<double > etalon_matrix{
528- {-1.0 , -1.0 , -1.0 , -1.0 },
529- { 0.0 , -1.0 , -1.0 , -1.0 },
530558 {-1.0 , 0.0 , -1.0 , -1.0 },
531- {-1.0 , -1.0 , -1.0 , -1.0 },
532559 {-1.0 , -1.0 , -1.0 , 0.0 },
533560 {-1.0 , -1.0 , 0.0 , -1.0 }
534561 };
535562 Matrix<double > test_matrix{
536- {1.79769e+308 , 7.33184e+08 , 9.41561e+08 , 2.79247e+08 },
537- {3.06449e+08 , 1.79769e+308 , 3.3464e+08 , 7.06878e+08 },
538- {9.93296e+08 , 1.9414e+08 , 1.79769e+308 , 1.14174e+08 },
539- {3.51623e+08 , 2.48635e+08 , 7.81242e+08 , 1.79769e+308 },
540- {7.02639e+08 , 8.51663e+08 , 9.37382e+08 , 4.96945e+07 },
541- {7.58851e+08 , 8.58445e+08 , 8.7235e+07 , 5.47076e+08 }
563+ {1.0e+17 , 2 , 1.0e17 , 4 },
564+ {3 , 1.0e+17 , 1.0e17 , 1 },
565+ {1.0e+17 , 1.0e+17 , 1.0e17 , 1.0e+17 }
566+ };
567+
568+ Munkres<double > munkres;
569+
570+ // Act.
571+ munkres.solve (test_matrix);
572+
573+ // Assert.
574+ EXPECT_EQ (etalon_matrix (0 , 1 ), test_matrix (0 , 1 ) );
575+ EXPECT_EQ (etalon_matrix (1 , 3 ), test_matrix (1 , 3 ) );
576+ }
577+
578+
579+
580+ TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase006_Success)
581+ {
582+ // Arrange.
583+ Matrix<double > etalon_matrix{
584+ {-1.0 , 0.0 , -1.0 },
585+ { 0.0 , -1.0 , -1.0 },
586+ {-1.0 , -1.0 , 0.0 }
587+ };
588+ Matrix<double > test_matrix{
589+ {1.0 , 2.0 , 1.0 },
590+ {0.0 , 9.0 , 9.0 },
591+ {9.0 , 9.0 , 0.0 }
542592 };
543593
544594 Munkres<double > munkres;
@@ -552,20 +602,18 @@ TEST_F (MunkresTest, solve_6x4_NonObviousSolutionCase003_Success)
552602
553603
554604
555- TEST_F (MunkresTest, solve_4x6_NonObviousSolutionCase004_Success )
605+ TEST_F (MunkresTest, solve_3x3_NonObviousSolutionCase007_Success )
556606{
557607 // Arrange.
558608 Matrix<double > etalon_matrix{
559- {-1.0 , 0.0 , -1.0 , -1.0 , -1.0 , -1.0 },
560- {-1.0 , -1.0 , 0.0 , -1.0 , -1.0 , -1.0 },
561- {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 , 0.0 },
562- {-1.0 , -1.0 , -1.0 , -1.0 , 0.0 , -1.0 }
609+ {-1.0 , -1.0 , 0.0 },
610+ {-1.0 , 0.0 , -1.0 },
611+ { 0.0 , -1.0 , -1.0 }
563612 };
564613 Matrix<double > test_matrix{
565- {1.79769e+308 , 3.06449e+08 , 9.93296e+08 , 3.51623e+08 , 7.02639e+08 , 7.58851e+08 },
566- {7.33184e+08 , 1.79769e+308 , 1.9414e+08 , 2.48635e+08 , 8.51663e+08 , 8.58445e+08 },
567- {9.41561e+08 , 3.3464e+08 , 1.79769e+308 , 7.81242e+08 , 9.37382e+08 , 8.7235e+07 },
568- {2.79247e+08 , 7.06878e+08 , 1.14174e+08 , 1.79769e+308 , 4.96945e+07 , 5.47076e+08 }
614+ {0.0 , 0.0 , 4.0 },
615+ {4.0 , 3.0 , 9.0 },
616+ {3.0 , 4.0 , 9.0 }
569617 };
570618
571619 Munkres<double > munkres;
@@ -579,26 +627,24 @@ TEST_F (MunkresTest, solve_4x6_NonObviousSolutionCase004_Success)
579627
580628
581629
582- TEST_F (MunkresTest, DISABLED_solve_7x5_NonObviousSolutionCase005_Success )
630+ TEST_F (MunkresTest, solve_6x4_NonObviousSolutionCase008_Success )
583631{
584632 // Arrange.
585633 Matrix<double > etalon_matrix{
586- {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 },
587- { 0.0 , -1.0 , -1.0 , -1.0 , -1.0 },
588- {-1.0 , 0.0 , -1.0 , -1.0 , -1.0 },
589- {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 },
590- {-1.0 , -1.0 , -1.0 , 0.0 , -1.0 },
591- {-1.0 , -1.0 , -1.0 , -1.0 , 0.0 },
592- {-1.0 , -1.0 , 0.0 , -1.0 , -1.0 }
634+ {-1.0 , -1.0 , -1.0 , -1.0 },
635+ { 0.0 , -1.0 , -1.0 , -1.0 },
636+ {-1.0 , 0.0 , -1.0 , -1.0 },
637+ {-1.0 , -1.0 , -1.0 , -1.0 },
638+ {-1.0 , -1.0 , -1.0 , 0.0 },
639+ {-1.0 , -1.0 , 0.0 , -1.0 }
593640 };
594641 Matrix<double > test_matrix{
595- {1.79769e+308 , 7.33184e+08 , 9.41561e+08 , 2.79247e+08 , 1.79769e+308 },
596- {3.06449e+08 , 1.79769e+308 , 3.3464e+08 , 7.06878e+08 , 1.79769e+308 },
597- {9.93296e+08 , 1.9414e+08 , 1.79769e+308 , 1.14174e+08 , 1.79769e+308 },
598- {3.51623e+08 , 2.48635e+08 , 7.81242e+08 , 1.79769e+308 , 1.79769e+308 },
599- {7.02639e+08 , 8.51663e+08 , 9.37382e+08 , 4.96945e+07 , 1.79769e+308 },
600- {1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 },
601- {7.58851e+08 , 8.58445e+08 , 8.7235e+07 , 5.47076e+08 , 1.79769e+308 }
642+ {1.79769e+308 , 7.33184e+08 , 9.41561e+08 , 2.79247e+08 },
643+ {3.06449e+08 , 1.79769e+308 , 3.3464e+08 , 7.06878e+08 },
644+ {9.93296e+08 , 1.9414e+08 , 1.79769e+308 , 1.14174e+08 },
645+ {3.51623e+08 , 2.48635e+08 , 7.81242e+08 , 1.79769e+308 },
646+ {7.02639e+08 , 8.51663e+08 , 9.37382e+08 , 4.96945e+07 },
647+ {7.58851e+08 , 8.58445e+08 , 8.7235e+07 , 5.47076e+08 }
602648 };
603649
604650 Munkres<double > munkres;
@@ -612,22 +658,20 @@ TEST_F (MunkresTest, DISABLED_solve_7x5_NonObviousSolutionCase005_Success)
612658
613659
614660
615- TEST_F (MunkresTest, DISABLED_solve_5x7_NonObviousSolutionCase006_Success )
661+ TEST_F (MunkresTest, solve_4x6_NonObviousSolutionCase009_Success )
616662{
617663 // Arrange.
618664 Matrix<double > etalon_matrix{
619- {-1.0 , 0.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 },
620- {-1.0 , -1.0 , 0.0 , -1.0 , -1.0 , -1.0 , -1.0 },
621- {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 , -1.0 , 0.0 },
622- {-1.0 , -1.0 , -1.0 , -1.0 , 0.0 , -1.0 , -1.0 },
623- {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 , 0.0 , -1.0 }
665+ {-1.0 , 0.0 , -1.0 , -1.0 , -1.0 , -1.0 },
666+ {-1.0 , -1.0 , 0.0 , -1.0 , -1.0 , -1.0 },
667+ {-1.0 , -1.0 , -1.0 , -1.0 , -1.0 , 0.0 },
668+ {-1.0 , -1.0 , -1.0 , -1.0 , 0.0 , -1.0 }
624669 };
625670 Matrix<double > test_matrix{
626- {1.79769e+308 , 3.06449e+08 , 9.93296e+08 , 3.51623e+08 , 7.02639e+08 , 1.79769e+308 , 7.58851e+08 },
627- {7.33184e+08 , 1.79769e+308 , 1.9414e+08 , 2.48635e+08 , 8.51663e+08 , 1.79769e+308 , 8.58445e+08 },
628- {9.41561e+08 , 3.3464e+08 , 1.79769e+308 , 7.81242e+08 , 9.37382e+08 , 1.79769e+308 , 8.7235e+07 },
629- {2.79247e+08 , 7.06878e+08 , 1.14174e+08 , 1.79769e+308 , 4.96945e+07 , 1.79769e+308 , 5.47076e+08 },
630- {1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 , 1.79769e+308 }
671+ {1.79769e+308 , 3.06449e+08 , 9.93296e+08 , 3.51623e+08 , 7.02639e+08 , 7.58851e+08 },
672+ {7.33184e+08 , 1.79769e+308 , 1.9414e+08 , 2.48635e+08 , 8.51663e+08 , 8.58445e+08 },
673+ {9.41561e+08 , 3.3464e+08 , 1.79769e+308 , 7.81242e+08 , 9.37382e+08 , 8.7235e+07 },
674+ {2.79247e+08 , 7.06878e+08 , 1.14174e+08 , 1.79769e+308 , 4.96945e+07 , 5.47076e+08 }
631675 };
632676
633677 Munkres<double > munkres;
0 commit comments