|
1 |
| -import test from 'ava'; |
| 1 | +import test from 'ava' ; |
2 | 2 |
|
3 |
| -var check = function(key, alg, callback){ |
4 |
| - test(key, function(assert){ |
5 |
| - callback(alg, assert); |
6 |
| - }); |
7 |
| -}; |
| 3 | +import * as gn from '../../../../../../src' ; |
8 | 4 |
|
| 5 | +function macro ( t , alg , callback ) { |
| 6 | + callback(alg, t); |
| 7 | +} |
9 | 8 |
|
10 |
| -var tests = { |
| 9 | +const tests = { |
11 | 10 |
|
12 |
| - test10_empty : function(alg){ |
| 11 | + test10_empty : (alg,t) => { |
13 | 12 | // empty input graph
|
14 | 13 | t.deepEqual(alg([]), []);
|
15 | 14 | },
|
16 |
| - test11_singleedge : function(alg){ |
| 15 | + test11_singleedge : (alg,t) => { |
17 | 16 | // single edge
|
18 | 17 | t.deepEqual(alg([ [0,1,1] ]), [1, 0]);
|
19 | 18 | },
|
20 | 19 |
|
21 |
| - test12 : function(alg){ |
| 20 | + test12 : (alg,t) => { |
22 | 21 | t.deepEqual(alg([ [1,2,10], [2,3,11] ]), [ -1, -1, 3, 2 ]);
|
23 | 22 | },
|
24 | 23 |
|
25 |
| - test13 : function(alg){ |
| 24 | + test13 : (alg,t) => { |
26 | 25 | t.deepEqual(alg([ [1,2,5], [2,3,11], [3,4,5] ]), [ -1, -1, 3, 2, -1 ]);
|
27 | 26 | },
|
28 | 27 |
|
29 |
| - test14_maxcard : function(alg){ |
| 28 | + test14_maxcard : (alg,t) => { |
30 | 29 | // maximum cardinality
|
31 | 30 | t.deepEqual(alg([ [1,2,5], [2,3,11], [3,4,5] ], true), [ -1, 2, 1, 4, 3 ]);
|
32 | 31 | },
|
33 | 32 |
|
34 |
| - test15_float : function(alg){ |
| 33 | + test15_float : (alg,t) => { |
35 | 34 | // floating point weigths
|
36 | 35 | t.deepEqual(alg([ [1,2,Math.PI], [2,3,Math.E], [1,3,3.0], [1,4,Math.sqrt(2.0)] ]), [ -1, 4, 3, 2, 1 ]);
|
37 | 36 | },
|
38 | 37 |
|
39 |
| - test16_negative : function(alg){ |
| 38 | + test16_negative : (alg,t) => { |
40 | 39 | // negative weights
|
41 | 40 | t.deepEqual(alg([ [1,2,2], [1,3,-2], [2,3,1], [2,4,-1], [3,4,-6] ], false), [ -1, 2, 1, -1, -1 ]);
|
42 | 41 | t.deepEqual(alg([ [1,2,2], [1,3,-2], [2,3,1], [2,4,-1], [3,4,-6] ], true), [ -1, 3, 4, 1, 2 ]);
|
43 | 42 | },
|
44 | 43 |
|
45 |
| - test20_sblossom : function(alg){ |
| 44 | + test20_sblossom : (alg,t) => { |
46 | 45 | // create S-blossom and use it for augmentation
|
47 | 46 | t.deepEqual(alg([ [1,2,8], [1,3,9], [2,3,10], [3,4,7] ]), [ -1, 2, 1, 4, 3 ]);
|
48 | 47 | t.deepEqual(alg([ [1,2,8], [1,3,9], [2,3,10], [3,4,7], [1,6,5], [4,5,6] ]), [ -1, 6, 3, 2, 5, 4, 1 ]);
|
49 | 48 | },
|
50 | 49 |
|
51 |
| - test21_tblossom : function(alg){ |
| 50 | + test21_tblossom : (alg,t) => { |
52 | 51 | // create S-blossom, relabel as T-blossom, use for augmentation
|
53 | 52 | t.deepEqual(alg([ [1,2,9], [1,3,8], [2,3,10], [1,4,5], [4,5,4], [1,6,3] ]), [ -1, 6, 3, 2, 5, 4, 1 ]);
|
54 | 53 | t.deepEqual(alg([ [1,2,9], [1,3,8], [2,3,10], [1,4,5], [4,5,3], [1,6,4] ]), [ -1, 6, 3, 2, 5, 4, 1 ]);
|
55 | 54 | t.deepEqual(alg([ [1,2,9], [1,3,8], [2,3,10], [1,4,5], [4,5,3], [3,6,4] ]), [ -1, 2, 1, 6, 5, 4, 3 ]);
|
56 | 55 | },
|
57 | 56 |
|
58 |
| - test22_s_nest : function(alg){ |
| 57 | + test22_s_nest : (alg,t) => { |
59 | 58 | // create nested S-blossom, use for augmentation
|
60 | 59 | t.deepEqual(alg([ [1,2,9], [1,3,9], [2,3,10], [2,4,8], [3,5,8], [4,5,10], [5,6,6] ]), [ -1, 3, 4, 1, 2, 6, 5 ]);
|
61 | 60 | },
|
62 | 61 |
|
63 |
| - test23_s_relabel_nest : function(alg){ |
| 62 | + test23_s_relabel_nest : (alg,t) => { |
64 | 63 | // create S-blossom, relabel as S, include in nested S-blossom
|
65 | 64 | t.deepEqual(alg([ [1,2,10], [1,7,10], [2,3,12], [3,4,20], [3,5,20], [4,5,25], [5,6,10], [6,7,10], [7,8,8] ]), [ -1, 2, 1, 4, 3, 6, 5, 8, 7 ]);
|
66 | 65 | },
|
67 | 66 |
|
68 |
| - test24_s_nest_expand : function(alg){ |
| 67 | + test24_s_nest_expand : (alg,t) => { |
69 | 68 | // create nested S-blossom, augment, expand recursively
|
70 | 69 | t.deepEqual(alg([ [1,2,8], [1,3,8], [2,3,10], [2,4,12], [3,5,12], [4,5,14], [4,6,12], [5,7,12], [6,7,14], [7,8,12] ]), [ -1, 2, 1, 5, 6, 3, 4, 8, 7 ]);
|
71 | 70 | },
|
72 | 71 |
|
73 |
| - test25_s_t_expand : function(alg){ |
| 72 | + test25_s_t_expand : (alg,t) => { |
74 | 73 | // create S-blossom, relabel as T, expand
|
75 | 74 | t.deepEqual(alg([ [1,2,23], [1,5,22], [1,6,15], [2,3,25], [3,4,22], [4,5,25], [4,8,14], [5,7,13] ]), [ -1, 6, 3, 2, 8, 7, 1, 5, 4 ]);
|
76 | 75 | },
|
77 | 76 |
|
78 |
| - test26_s_nest_t_expand : function(alg){ |
| 77 | + test26_s_nest_t_expand : (alg,t) => { |
79 | 78 | // create nested S-blossom, relabel as T, expand
|
80 | 79 | t.deepEqual(alg([ [1,2,19], [1,3,20], [1,8,8], [2,3,25], [2,4,18], [3,5,18], [4,5,13], [4,7,7], [5,6,7] ]), [ -1, 8, 3, 2, 7, 6, 5, 4, 1 ]);
|
81 | 80 | },
|
82 | 81 |
|
83 |
| - test30_tnasty_expand : function(alg){ |
| 82 | + test30_tnasty_expand : (alg,t) => { |
84 | 83 | // create blossom, relabel as T in more than one way, expand, augment
|
85 | 84 | t.deepEqual(alg([ [1,2,45], [1,5,45], [2,3,50], [3,4,45], [4,5,50], [1,6,30], [3,9,35], [4,8,35], [5,7,26], [9,10,5] ]), [ -1, 6, 3, 2, 8, 7, 1, 5, 4, 10, 9 ]);
|
86 | 85 | },
|
87 | 86 |
|
88 |
| - test31_tnasty2_expand : function(alg){ |
| 87 | + test31_tnasty2_expand : (alg,t) => { |
89 | 88 | // again but slightly different
|
90 | 89 | t.deepEqual(alg([ [1,2,45], [1,5,45], [2,3,50], [3,4,45], [4,5,50], [1,6,30], [3,9,35], [4,8,26], [5,7,40], [9,10,5] ]), [ -1, 6, 3, 2, 8, 7, 1, 5, 4, 10, 9 ]);
|
91 | 90 | },
|
92 | 91 |
|
93 |
| - test32_t_expand_leastslack : function(alg){ |
| 92 | + test32_t_expand_leastslack : (alg,t) => { |
94 | 93 | // create blossom, relabel as T, expand such that a new least-slack S-to-free edge is produced, augment
|
95 | 94 | t.deepEqual(alg([ [1,2,45], [1,5,45], [2,3,50], [3,4,45], [4,5,50], [1,6,30], [3,9,35], [4,8,28], [5,7,26], [9,10,5] ]), [ -1, 6, 3, 2, 8, 7, 1, 5, 4, 10, 9 ]);
|
96 | 95 | },
|
97 | 96 |
|
98 |
| - test33_nest_tnasty_expand : function(alg){ |
| 97 | + test33_nest_tnasty_expand : (alg,t) => { |
99 | 98 | // create nested blossom, relabel as T in more than one way, expand outer blossom such that inner blossom ends up on an augmenting path
|
100 | 99 | t.deepEqual(alg([ [1,2,45], [1,7,45], [2,3,50], [3,4,45], [4,5,95], [4,6,94], [5,6,94], [6,7,50], [1,8,30], [3,11,35], [5,9,36], [7,10,26], [11,12,5] ]), [ -1, 8, 3, 2, 6, 9, 4, 10, 1, 5, 7, 12, 11 ]);
|
101 | 100 | },
|
102 | 101 |
|
103 |
| - test34_nest_relabel_expand : function(alg){ |
| 102 | + test34_nest_relabel_expand : (alg,t) => { |
104 | 103 | // create nested S-blossom, relabel as S, expand recursively
|
105 | 104 | t.deepEqual(alg([ [1,2,40], [1,3,40], [2,3,60], [2,4,55], [3,5,55], [4,5,50], [1,8,15], [5,7,30], [7,6,10], [8,10,10], [4,9,30] ]), [ -1, 2, 1, 5, 9, 3, 7, 6, 10, 4, 8 ]);
|
106 | 105 | }
|
107 | 106 | };
|
108 | 107 |
|
109 |
| -var alg = [ |
110 |
| - gn.wblossom_n3_t(true, true, true), |
| 108 | +const alg = [ |
| 109 | + gn.wblossom_n3_t(false, true, true), |
111 | 110 | gn.wblossom_n3_t(false, false, false),
|
112 | 111 | gn.wblossom_n3_t()
|
113 | 112 | ];
|
114 | 113 |
|
115 |
| - |
116 |
| -for(var i = 0; i < alg.length; ++i){ |
117 |
| - for(var key in tests) |
118 |
| - check(key, alg[i], tests[key]); |
119 |
| -} |
| 114 | +for(let i = 0; i < alg.length; ++i) |
| 115 | + for(const key in tests) |
| 116 | + test(`${key} ${i}`, macro, alg[i], tests[key]); |
0 commit comments