@@ -15,7 +15,11 @@ namespace k2 {
15
15
16
16
TEST (FsaUtil, GetEnteringArcs) {
17
17
std::vector<Arc> arcs = {
18
- {0 , 1 , 2 }, {0 , 2 , 1 }, {1 , 2 , 0 }, {1 , 3 , 5 }, {2 , 3 , 6 },
18
+ {0 , 1 , 2 }, // 0
19
+ {0 , 2 , 1 }, // 1
20
+ {1 , 2 , 0 }, // 2
21
+ {1 , 3 , 5 }, // 3
22
+ {2 , 3 , 6 }, // 4
19
23
};
20
24
std::vector<Range> leaving_arcs = {
21
25
{0 , 2 }, {2 , 4 }, {4 , 5 }, {0 , 0 }, // the last state has no leaving arcs
@@ -25,44 +29,26 @@ TEST(FsaUtil, GetEnteringArcs) {
25
29
fsa.leaving_arcs = std::move (leaving_arcs);
26
30
fsa.arcs = std::move (arcs);
27
31
28
- VecOfVec entering_arcs;
29
- GetEnteringArcs (fsa, &entering_arcs);
30
-
31
- const auto &ranges = entering_arcs.ranges ;
32
- const auto &values = entering_arcs.values ;
33
- EXPECT_EQ (ranges.size (), 4u ); // there are 4 states
34
- EXPECT_EQ (values.size (), 5u ); // there are 5 arcs
35
-
36
- // state 0, no entering arcs
37
- EXPECT_EQ (ranges[0 ].begin , ranges[0 ].end );
38
-
39
- // state 1 has one entering arc from state 0 with label 2
40
- EXPECT_EQ (ranges[1 ].begin , 0 );
41
- EXPECT_EQ (ranges[1 ].end , 1 );
42
- EXPECT_EQ (values[0 ].first , 2 ); // label is 2
43
- EXPECT_EQ (values[0 ].second , 0 ); // state is 0
44
-
45
- // state 2 has two entering arcs
46
- // the first one: from state 0 with label 1
47
- // the second one: from state 1 with label 0
48
- EXPECT_EQ (ranges[2 ].begin , 1 );
49
- EXPECT_EQ (ranges[2 ].end , 3 );
50
- EXPECT_EQ (values[1 ].first , 1 ); // label is 1
51
- EXPECT_EQ (values[1 ].second , 0 ); // state is 0
52
-
53
- EXPECT_EQ (values[2 ].first , 0 ); // label is 0
54
- EXPECT_EQ (values[2 ].second , 1 ); // state is 1
55
-
56
- // state 3 has two entering arcs
57
- // the first one: from state 1 with label 5
58
- // the second one: from state 2 with label 6
59
- EXPECT_EQ (ranges[3 ].begin , 3 );
60
- EXPECT_EQ (ranges[3 ].end , 5 );
61
- EXPECT_EQ (values[3 ].first , 5 ); // label is 5
62
- EXPECT_EQ (values[3 ].second , 1 ); // state is 1
63
-
64
- EXPECT_EQ (values[4 ].first , 6 ); // label is 6
65
- EXPECT_EQ (values[4 ].second , 2 ); // state is 2
32
+ std::vector<int32_t > arc_index (10 ); // an arbitray number
33
+ std::vector<int32_t > end_index (20 );
34
+
35
+ GetEnteringArcs (fsa, &arc_index, &end_index);
36
+
37
+ EXPECT_EQ (end_index.size (), 4u ); // there are 4 states
38
+ EXPECT_EQ (arc_index.size (), 5u ); // there are 5 arcs
39
+
40
+ EXPECT_EQ (end_index[0 ], 0 ); // state 0 has no entering arcs
41
+
42
+ EXPECT_EQ (end_index[1 ], 1 ); // state 1 has one entering arc
43
+ EXPECT_EQ (arc_index[0 ], 0 ); // arc index 0 from state 0
44
+
45
+ EXPECT_EQ (end_index[2 ], 3 ); // state 2 has two entering arcs
46
+ EXPECT_EQ (arc_index[1 ], 1 ); // arc index 1 from state 0
47
+ EXPECT_EQ (arc_index[2 ], 2 ); // arc index 2 from state 1
48
+
49
+ EXPECT_EQ (end_index[3 ], 5 ); // state 3 has two entering arcs
50
+ EXPECT_EQ (arc_index[3 ], 3 ); // arc index 3 from state 1
51
+ EXPECT_EQ (arc_index[4 ], 4 ); // arc index 4 from state 2
66
52
}
67
53
68
54
} // namespace k2
0 commit comments