77
88#include < sparta/WeakPartialOrdering.h>
99
10+ #include < array>
1011#include < gtest/gtest.h>
1112#include < set>
1213#include < sstream>
@@ -109,13 +110,18 @@ TEST(WeakPartialOrderingTest, exampleFromWtoPaper) {
109110
110111 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
111112 // Notice that forward edges are not considered.
112- Answer lst[] = {
113- {" 1" , true , false , false , 1 , 0 , 0 }, {" 2" , true , false , false , 1 , 1 , 0 },
114- {" 3" , false , true , false , 1 , 1 , 0 }, {" 4" , true , false , false , 1 , 1 , 0 },
115- {" 5" , false , true , false , 1 , 1 , 0 }, {" 6" , true , false , false , 1 , 1 , 0 },
116- {" 5" , false , false , true , 1 , 1 , 1 }, {" 7" , true , false , false , 1 , 1 , 0 },
117- {" 3" , false , false , true , 1 , 1 , 1 }, {" 8" , true , false , false , 0 , 1 , 0 },
118- };
113+ auto lst = std::to_array<Answer>({
114+ {" 1" , true , false , false , 1 , 0 , 0 },
115+ {" 2" , true , false , false , 1 , 1 , 0 },
116+ {" 3" , false , true , false , 1 , 1 , 0 },
117+ {" 4" , true , false , false , 1 , 1 , 0 },
118+ {" 5" , false , true , false , 1 , 1 , 0 },
119+ {" 6" , true , false , false , 1 , 1 , 0 },
120+ {" 5" , false , false , true , 1 , 1 , 1 },
121+ {" 7" , true , false , false , 1 , 1 , 0 },
122+ {" 3" , false , false , true , 1 , 1 , 1 },
123+ {" 8" , true , false , false , 0 , 1 , 0 },
124+ });
119125
120126 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
121127 std::stack<WpoIdx> wl;
@@ -193,11 +199,11 @@ TEST(WeakPartialOrderingTest, SingletonSccAtEnd) {
193199 EXPECT_EQ (3 , wpo.size ());
194200
195201 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
196- Answer lst[] = {
202+ auto lst = std::to_array<Answer>( {
197203 {" 1" , true , false , false , 1 , 0 , 0 },
198204 {" 2" , false , true , false , 1 , 1 , 0 },
199205 {" 2" , false , false , true , 0 , 1 , 1 },
200- };
206+ }) ;
201207
202208 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
203209 std::stack<WpoIdx> wl;
@@ -273,11 +279,13 @@ TEST(WeakPartialOrderingTest, SingletonSccAtEnd) {
273279 EXPECT_EQ (5 , wpo.size ());
274280
275281 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
276- Answer lst[] = {
277- {" 1" , false , true , false , 1 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
278- {" 2" , false , false , true , 1 , 1 , 1 }, {" 1" , false , false , true , 1 , 1 , 0 },
282+ auto lst = std::to_array<Answer>({
283+ {" 1" , false , true , false , 1 , 0 , 0 },
284+ {" 2" , false , true , false , 1 , 1 , 0 },
285+ {" 2" , false , false , true , 1 , 1 , 1 },
286+ {" 1" , false , false , true , 1 , 1 , 0 },
279287 {" 3" , true , false , false , 0 , 1 , 0 },
280- };
288+ }) ;
281289
282290 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
283291 std::stack<WpoIdx> wl;
@@ -357,12 +365,12 @@ TEST(WeakPartialOrderingTest, SccAtEnd) {
357365 EXPECT_EQ (4 , wpo.size ());
358366
359367 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
360- Answer lst[] = {
368+ auto lst = std::to_array<Answer>( {
361369 {" 1" , true , false , false , 1 , 0 , 0 },
362370 {" 2" , false , true , false , 1 , 1 , 0 },
363371 {" 3" , true , false , false , 1 , 1 , 0 },
364372 {" 2" , false , false , true , 0 , 1 , 1 },
365- };
373+ }) ;
366374
367375 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
368376 std::stack<WpoIdx> wl;
@@ -440,11 +448,14 @@ TEST(WeakPartialOrderingTest, SccAtEnd) {
440448 EXPECT_EQ (6 , wpo.size ());
441449
442450 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
443- Answer lst[] = {
444- {" 1" , false , true , false , 1 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
445- {" 3" , true , false , false , 1 , 1 , 0 }, {" 2" , false , false , true , 1 , 1 , 1 },
446- {" 1" , false , false , true , 1 , 1 , 0 }, {" 4" , true , false , false , 0 , 1 , 0 },
447- };
451+ auto lst = std::to_array<Answer>({
452+ {" 1" , false , true , false , 1 , 0 , 0 },
453+ {" 2" , false , true , false , 1 , 1 , 0 },
454+ {" 3" , true , false , false , 1 , 1 , 0 },
455+ {" 2" , false , false , true , 1 , 1 , 1 },
456+ {" 1" , false , false , true , 1 , 1 , 0 },
457+ {" 4" , true , false , false , 0 , 1 , 0 },
458+ });
448459
449460 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
450461 std::stack<WpoIdx> wl;
@@ -510,9 +521,9 @@ TEST(WeakPartialOrderingTest, SingleNode) {
510521 EXPECT_EQ (1 , wpo.size ());
511522
512523 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
513- Answer lst[] = {
524+ auto lst = std::to_array<Answer>( {
514525 {" 1" , true , false , false , 0 , 0 , 0 },
515- };
526+ }) ;
516527
517528 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
518529 std::stack<WpoIdx> wl;
@@ -590,15 +601,21 @@ TEST(WeakPartialOrderingTest, exampleFromWpoPaper) {
590601 EXPECT_EQ (13 , wpo.size ());
591602
592603 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
593- Answer lst[] = {
594- {" 1" , true , false , false , 1 , 0 , 0 }, {" 2" , false , true , false , 2 , 1 , 0 },
595- {" 3" , false , true , false , 1 , 1 , 0 }, {" 4" , true , false , false , 1 , 1 , 0 },
596- {" 3" , false , false , true , 1 , 1 , 1 }, {" 6" , false , true , false , 2 , 1 , 0 },
597- {" 7" , true , false , false , 1 , 1 , 0 }, {" 9" , true , false , false , 1 , 1 , 0 },
598- {" 8" , true , false , false , 1 , 2 , 0 }, {" 6" , false , false , true , 1 , 1 , 1 },
599- {" 5" , true , false , false , 1 , 2 , 0 }, {" 2" , false , false , true , 1 , 1 , 1 },
604+ auto lst = std::to_array<Answer>({
605+ {" 1" , true , false , false , 1 , 0 , 0 },
606+ {" 2" , false , true , false , 2 , 1 , 0 },
607+ {" 3" , false , true , false , 1 , 1 , 0 },
608+ {" 4" , true , false , false , 1 , 1 , 0 },
609+ {" 3" , false , false , true , 1 , 1 , 1 },
610+ {" 6" , false , true , false , 2 , 1 , 0 },
611+ {" 7" , true , false , false , 1 , 1 , 0 },
612+ {" 9" , true , false , false , 1 , 1 , 0 },
613+ {" 8" , true , false , false , 1 , 2 , 0 },
614+ {" 6" , false , false , true , 1 , 1 , 1 },
615+ {" 5" , true , false , false , 1 , 2 , 0 },
616+ {" 2" , false , false , true , 1 , 1 , 1 },
600617 {" 10" , true , false , false , 0 , 1 , 0 },
601- };
618+ }) ;
602619
603620 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
604621 std::stack<WpoIdx> wl;
@@ -684,12 +701,16 @@ TEST(WeakPartialOrderingTest, exampleFromWpoPaperIrreducible) {
684701 EXPECT_EQ (8 , wpo.size ());
685702
686703 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
687- Answer lst[] = {
688- {" 1" , true , false , false , 2 , 0 , 0 }, {" 2" , false , true , false , 2 , 1 , 0 },
689- {" 3" , false , true , false , 1 , 1 , 0 }, {" 5" , true , false , false , 1 , 1 , 0 },
690- {" 6" , true , false , false , 1 , 1 , 0 }, {" 4" , true , false , false , 1 , 3 , 0 },
691- {" 3" , false , false , true , 1 , 1 , 2 }, {" 2" , false , false , true , 0 , 1 , 2 },
692- };
704+ auto lst = std::to_array<Answer>({
705+ {" 1" , true , false , false , 2 , 0 , 0 },
706+ {" 2" , false , true , false , 2 , 1 , 0 },
707+ {" 3" , false , true , false , 1 , 1 , 0 },
708+ {" 5" , true , false , false , 1 , 1 , 0 },
709+ {" 6" , true , false , false , 1 , 1 , 0 },
710+ {" 4" , true , false , false , 1 , 3 , 0 },
711+ {" 3" , false , false , true , 1 , 1 , 2 },
712+ {" 2" , false , false , true , 0 , 1 , 2 },
713+ });
693714
694715 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
695716 std::stack<WpoIdx> wl;
@@ -766,12 +787,16 @@ TEST(WeakPartialOrderingTest, exampleFromWpoPaperIrreducible) {
766787 EXPECT_EQ (8 , wpo.size ());
767788
768789 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
769- Answer lst[] = {
770- {" 1" , true , false , false , 2 , 0 , 0 }, {" 6" , true , false , false , 1 , 1 , 0 },
771- {" 2" , false , true , false , 2 , 2 , 0 }, {" 5" , true , false , false , 1 , 1 , 0 },
772- {" 3" , false , true , false , 1 , 2 , 0 }, {" 4" , true , false , false , 1 , 1 , 0 },
773- {" 3" , false , false , true , 1 , 1 , 1 }, {" 2" , false , false , true , 0 , 1 , 1 },
774- };
790+ auto lst = std::to_array<Answer>({
791+ {" 1" , true , false , false , 2 , 0 , 0 },
792+ {" 6" , true , false , false , 1 , 1 , 0 },
793+ {" 2" , false , true , false , 2 , 2 , 0 },
794+ {" 5" , true , false , false , 1 , 1 , 0 },
795+ {" 3" , false , true , false , 1 , 2 , 0 },
796+ {" 4" , true , false , false , 1 , 1 , 0 },
797+ {" 3" , false , false , true , 1 , 1 , 1 },
798+ {" 2" , false , false , true , 0 , 1 , 1 },
799+ });
775800
776801 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
777802 std::stack<WpoIdx> wl;
@@ -860,7 +885,7 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
860885 EXPECT_EQ (16 , wpo.size ());
861886
862887 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
863- Answer lst[] = {
888+ auto lst = std::to_array<Answer>( {
864889 {" 1" , true , false , false , 4 , 0 , 0 },
865890 {" 12" , true , false , false , 1 , 1 , 0 },
866891 {" 16" , true , false , false , 2 , 1 , 0 },
@@ -877,7 +902,7 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
877902 {" 46" , false , false , true , 1 , 1 , 2 },
878903 {" 75" , true , false , false , 1 , 2 , 0 },
879904 {" 45" , false , false , true , 0 , 1 , 4 },
880- };
905+ }) ;
881906
882907 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
883908 std::stack<WpoIdx> wl;
@@ -965,13 +990,18 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
965990 EXPECT_EQ (10 , wpo.size ());
966991
967992 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
968- Answer lst[] = {
969- {" 1" , true , false , false , 2 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
970- {" 3" , false , true , false , 1 , 1 , 0 }, {" 8" , true , false , false , 1 , 1 , 0 },
971- {" 4" , true , false , false , 1 , 2 , 0 }, {" 5" , true , false , false , 1 , 1 , 0 },
972- {" 3" , false , false , true , 1 , 1 , 2 }, {" 6" , true , false , false , 1 , 1 , 0 },
973- {" 2" , false , false , true , 1 , 1 , 2 }, {" 7" , true , false , false , 0 , 1 , 0 },
974- };
993+ auto lst = std::to_array<Answer>({
994+ {" 1" , true , false , false , 2 , 0 , 0 },
995+ {" 2" , false , true , false , 1 , 1 , 0 },
996+ {" 3" , false , true , false , 1 , 1 , 0 },
997+ {" 8" , true , false , false , 1 , 1 , 0 },
998+ {" 4" , true , false , false , 1 , 2 , 0 },
999+ {" 5" , true , false , false , 1 , 1 , 0 },
1000+ {" 3" , false , false , true , 1 , 1 , 2 },
1001+ {" 6" , true , false , false , 1 , 1 , 0 },
1002+ {" 2" , false , false , true , 1 , 1 , 2 },
1003+ {" 7" , true , false , false , 0 , 1 , 0 },
1004+ });
9751005
9761006 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
9771007 std::stack<WpoIdx> wl;
@@ -1041,13 +1071,18 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
10411071 EXPECT_EQ (10 , wpo.size ());
10421072
10431073 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
1044- Answer lst[] = {
1045- {" 1" , true , false , false , 2 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
1046- {" 8" , true , false , false , 1 , 1 , 0 }, {" 3" , false , true , false , 1 , 2 , 0 },
1047- {" 4" , true , false , false , 1 , 1 , 0 }, {" 5" , true , false , false , 1 , 1 , 0 },
1048- {" 3" , false , false , true , 1 , 1 , 1 }, {" 6" , true , false , false , 1 , 1 , 0 },
1049- {" 2" , false , false , true , 1 , 1 , 2 }, {" 7" , true , false , false , 0 , 1 , 0 },
1050- };
1074+ auto lst = std::to_array<Answer>({
1075+ {" 1" , true , false , false , 2 , 0 , 0 },
1076+ {" 2" , false , true , false , 1 , 1 , 0 },
1077+ {" 8" , true , false , false , 1 , 1 , 0 },
1078+ {" 3" , false , true , false , 1 , 2 , 0 },
1079+ {" 4" , true , false , false , 1 , 1 , 0 },
1080+ {" 5" , true , false , false , 1 , 1 , 0 },
1081+ {" 3" , false , false , true , 1 , 1 , 1 },
1082+ {" 6" , true , false , false , 1 , 1 , 0 },
1083+ {" 2" , false , false , true , 1 , 1 , 2 },
1084+ {" 7" , true , false , false , 0 , 1 , 0 },
1085+ });
10511086
10521087 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
10531088 std::stack<WpoIdx> wl;
@@ -1118,14 +1153,19 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
11181153 EXPECT_EQ (11 , wpo.size ());
11191154
11201155 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
1121- Answer lst[] = {
1122- {" 1" , false , true , false , 2 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
1123- {" 3" , false , true , false , 1 , 1 , 0 }, {" 8" , true , false , false , 1 , 1 , 0 },
1124- {" 4" , true , false , false , 1 , 2 , 0 }, {" 5" , true , false , false , 1 , 1 , 0 },
1125- {" 3" , false , false , true , 1 , 1 , 2 }, {" 6" , true , false , false , 1 , 1 , 0 },
1126- {" 2" , false , false , true , 1 , 1 , 2 }, {" 7" , true , false , false , 1 , 1 , 0 },
1156+ auto lst = std::to_array<Answer>({
1157+ {" 1" , false , true , false , 2 , 0 , 0 },
1158+ {" 2" , false , true , false , 1 , 1 , 0 },
1159+ {" 3" , false , true , false , 1 , 1 , 0 },
1160+ {" 8" , true , false , false , 1 , 1 , 0 },
1161+ {" 4" , true , false , false , 1 , 2 , 0 },
1162+ {" 5" , true , false , false , 1 , 1 , 0 },
1163+ {" 3" , false , false , true , 1 , 1 , 2 },
1164+ {" 6" , true , false , false , 1 , 1 , 0 },
1165+ {" 2" , false , false , true , 1 , 1 , 2 },
1166+ {" 7" , true , false , false , 1 , 1 , 0 },
11271167 {" 1" , false , false , true , 0 , 1 , 0 },
1128- };
1168+ }) ;
11291169
11301170 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
11311171 std::stack<WpoIdx> wl;
@@ -1198,15 +1238,21 @@ TEST(WeakPartialOrderingTest, handlingOuterPreds) {
11981238 EXPECT_EQ (13 , wpo.size ());
11991239
12001240 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
1201- Answer lst[] = {
1202- {" 0" , true , false , false , 1 , 0 , 0 }, {" 1" , false , true , false , 2 , 1 , 0 },
1203- {" 2" , false , true , false , 1 , 1 , 0 }, {" 3" , false , true , false , 1 , 1 , 0 },
1204- {" 8" , true , false , false , 1 , 1 , 0 }, {" 4" , true , false , false , 1 , 2 , 0 },
1205- {" 5" , true , false , false , 1 , 1 , 0 }, {" 3" , false , false , true , 1 , 1 , 2 },
1206- {" 6" , true , false , false , 1 , 1 , 0 }, {" 2" , false , false , true , 1 , 1 , 2 },
1207- {" 7" , true , false , false , 1 , 1 , 0 }, {" 1" , false , false , true , 1 , 1 , 1 },
1241+ auto lst = std::to_array<Answer>({
1242+ {" 0" , true , false , false , 1 , 0 , 0 },
1243+ {" 1" , false , true , false , 2 , 1 , 0 },
1244+ {" 2" , false , true , false , 1 , 1 , 0 },
1245+ {" 3" , false , true , false , 1 , 1 , 0 },
1246+ {" 8" , true , false , false , 1 , 1 , 0 },
1247+ {" 4" , true , false , false , 1 , 2 , 0 },
1248+ {" 5" , true , false , false , 1 , 1 , 0 },
1249+ {" 3" , false , false , true , 1 , 1 , 2 },
1250+ {" 6" , true , false , false , 1 , 1 , 0 },
1251+ {" 2" , false , false , true , 1 , 1 , 2 },
1252+ {" 7" , true , false , false , 1 , 1 , 0 },
1253+ {" 1" , false , false , true , 1 , 1 , 1 },
12081254 {" 9" , true , false , false , 0 , 1 , 0 },
1209- };
1255+ }) ;
12101256
12111257 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
12121258 std::stack<WpoIdx> wl;
@@ -1276,12 +1322,15 @@ TEST(WeakPartialOrderingTest, handleNestedLoopsWithBranch) {
12761322 EXPECT_EQ (7 , wpo.size ());
12771323
12781324 // node, plain, head, exit, num_succs, num_preds, num_outer_preds
1279- Answer lst[] = {
1280- {" 1" , false , true , false , 2 , 0 , 0 }, {" 2" , false , true , false , 1 , 1 , 0 },
1281- {" 3" , true , false , false , 1 , 1 , 0 }, {" 2" , false , false , true , 1 , 1 , 1 },
1282- {" 4" , true , false , false , 1 , 1 , 0 }, {" 5" , true , false , false , 1 , 2 , 0 },
1325+ auto lst = std::to_array<Answer>({
1326+ {" 1" , false , true , false , 2 , 0 , 0 },
1327+ {" 2" , false , true , false , 1 , 1 , 0 },
1328+ {" 3" , true , false , false , 1 , 1 , 0 },
1329+ {" 2" , false , false , true , 1 , 1 , 1 },
1330+ {" 4" , true , false , false , 1 , 1 , 0 },
1331+ {" 5" , true , false , false , 1 , 2 , 0 },
12831332 {" 1" , false , false , true , 0 , 1 , 0 },
1284- };
1333+ }) ;
12851334
12861335 std::unordered_map<WpoIdx, uint32_t > count (wpo.size ());
12871336 std::stack<WpoIdx> wl;
0 commit comments