Skip to content

Commit 1fb2cb5

Browse files
committed
Added simplified test cases for non-square matrices based on already existed test cases. Removed wrong tests cases. Changed numbering of tests.
1 parent 5b66cd7 commit 1fb2cb5

1 file changed

Lines changed: 101 additions & 57 deletions

File tree

tests/munkrestest.cpp

Lines changed: 101 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)