Skip to content

Commit fa24d57

Browse files
committed
test:First version of distance and distance-matrix tests.
1 parent 738dfdc commit fa24d57

1 file changed

Lines changed: 68 additions & 0 deletions

File tree

t/23-distance-matrix.rakutest

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
use v6.d;
2+
use Test;
3+
4+
#use lib <. lib>;
5+
use Graph;
6+
use Graph::Grid;
7+
8+
## 1
9+
subtest {
10+
my $g = Graph::Grid.new(6, 6, :!directed);
11+
12+
is $g.distance('0_0', '5_5'), 10, '0_0 to 5_5';
13+
is $g.distance('0_0', '0_0'), 0, '0_0 to 0_0';
14+
15+
is-deeply
16+
$g.distance('0_0'),
17+
(0, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 4, 5, 6, 7, 8, 9, 5, 6, 7, 8, 9, 10),
18+
'from 0_0';
19+
20+
is-deeply
21+
$g.distance('0_0'):pairs,
22+
{"0_0" => 0, "0_1" => 1, "0_2" => 2, "0_3" => 3, "0_4" => 4, "0_5" => 5, "1_0" => 1, "1_1" => 2, "1_2" => 3, "1_3" => 4, "1_4" => 5, "1_5" => 6, "2_0" => 2, "2_1" => 3, "2_2" => 4, "2_3" => 5, "2_4" => 6, "2_5" => 7, "3_0" => 3, "3_1" => 4, "3_2" => 5, "3_3" => 6, "3_4" => 7, "3_5" => 8, "4_0" => 4, "4_1" => 5, "4_2" => 6, "4_3" => 7, "4_4" => 8, "4_5" => 9, "5_0" => 5, "5_1" => 6, "5_2" => 7, "5_3" => 8, "5_4" => 9, "5_5" => 10}
23+
'from 0_0, pairs';
24+
25+
}, "Full grid graph";
26+
27+
28+
## 2
29+
subtest {
30+
my $g0 = Graph::Grid.new(6, 6, :!directed);
31+
my $g = $g0.clone.vertex-delete($g0.vertex-list.grep({ $_.split('_', :skip-empty)».Int.sum == 5 }));
32+
33+
is $g.distance('0_0', '5_5'), Inf, '0_0 to 5_5';
34+
is $g.distance('0_0', '0_0'), 0, '0_0 to 0_0';
35+
36+
my %distances = $g0.distance('0_0', :pairs).map({ $_.key => $_.value.split('_', :skip-empty)».Int.sum ≤ 5 ?? $_.value !! Inf });
37+
%distances = $g.vertex-list Z=> %distances{|$g.vertex-list};
38+
39+
is-deeply
40+
$g.distance('0_0'),
41+
%distances{|$g.vertex-list},
42+
'from 0_0';
43+
44+
is-deeply
45+
$g.distance('0_0'):pairs,
46+
%distances,
47+
'from 0_0, pairs';
48+
49+
}, "Disconnected grid graph";
50+
51+
## 3
52+
subtest {
53+
my $g = Graph::Grid.new(3, 3, :!directed);
54+
55+
isa-ok $g.distance-matrix, List:D, 'expected result, list 1';
56+
is $g.distance-matrix.all ~~ List:D, True, 'expected result, list 2';
57+
58+
isa-ok $g.distance-matrix(:pairs), Map:D, 'expected result, hash 1';
59+
is $g.distance-matrix(:pairs).values.all ~~ Numeric:D, True, 'expected result, hash 2';
60+
61+
isa-ok $g.distance-matrix(3, :pairs), Map:D, 'expected result, :3max-distance, hash 1';
62+
is $g.distance-matrix(3, :pairs).values.all ~~ Numeric:D, True, 'expected result, :3max-distance, hash 2';
63+
64+
is-deeply $g.distance-matrix(2).flat.Bag, List:D, 'expected result, list 1';
65+
66+
}, 'Grid graph distance matrix';
67+
68+
done-testing;

0 commit comments

Comments
 (0)