Add hungarian testcase
[trackerpp.git] / test / TestHungarian.cpp
1 #include "hungarian.h"
2 #include "gtest/gtest.h"
3
4 using namespace std;
5 using namespace Eigen;
6
7 TEST(Hungarian, 3x3)
8 {
9     Matrix3i C;
10     C << 1, 2, 3,
11          2, 4, 6,
12          3, 6, 9;
13
14     VectorXi row_ind, col_ind;
15     int ret = linear_sum_assignment(C, row_ind, col_ind);
16     cout << "row: [" << row_ind.transpose() << "], col: [" << col_ind.transpose() << "]" << endl;
17     Vector3i expect_row_ind, expect_col_ind;
18
19     expect_row_ind << 0, 1, 2;
20     expect_col_ind << 2, 1, 0;
21
22     EXPECT_EQ(ret, 10);
23     EXPECT_TRUE(expect_row_ind == row_ind);
24     EXPECT_TRUE(expect_col_ind == col_ind);
25 }
26
27 TEST(Hungarian, 4x3)
28 {
29     MatrixXi C(4, 3);
30
31     C << 4, 1, 3,
32          2, 4, 2,
33          3, 6, 9,
34          2, 6, 3;
35
36     VectorXi row_ind, col_ind;
37     int ret = linear_sum_assignment(C, row_ind, col_ind);
38     Vector3i expect_row_ind, expect_col_ind;
39
40     expect_row_ind << 0, 1, 3;
41     expect_col_ind << 1, 2, 0;
42
43     EXPECT_EQ(ret, 5);
44     EXPECT_TRUE(expect_row_ind == row_ind);
45     EXPECT_TRUE(expect_col_ind == col_ind);
46 }