1
+ 'use strict'
2
+
3
+
4
+ let assert = require ( 'assert' )
5
+ , Digraph = require ( './index' )
6
+ , DirectedDFS = require ( './directedDFS' )
7
+
8
+ , testData = [ [ '4' , '2' ]
9
+ , [ '2' , '3' ]
10
+ , [ '3' , '2' ]
11
+ , [ '6' , '0' ]
12
+ , [ '0' , '1' ]
13
+ , [ '2' , '0' ]
14
+ , [ '11' , '12' ]
15
+ , [ '12' , '9' ]
16
+ , [ '9' , '10' ]
17
+ , [ '9' , '11' ]
18
+ , [ '8' , '9' ]
19
+ , [ '10' , '12' ]
20
+ , [ '11' , '4' ]
21
+ , [ '4' , '3' ]
22
+ , [ '3' , '5' ]
23
+ , [ '7' , '8' ]
24
+ , [ '8' , '7' ]
25
+ , [ '5' , '4' ]
26
+ , [ '0' , '5' ]
27
+ , [ '6' , '4' ]
28
+ , [ '6' , '9' ]
29
+ , [ '7' , '6' ] ]
30
+
31
+ // 测试单点可达
32
+ function test1 ( ) {
33
+ let G = new Digraph ( )
34
+
35
+ testData . forEach ( d => G . addEdge ( d [ 0 ] , d [ 1 ] ) )
36
+ assert . deepStrictEqual ( G . V ( ) , 13 )
37
+ assert . deepStrictEqual ( G . E ( ) , 22 )
38
+
39
+ let D1 = new DirectedDFS ( G , '1' )
40
+ , D2 = new DirectedDFS ( G , '2' )
41
+
42
+ assert . deepStrictEqual ( D1 . marked ( '1' ) , true )
43
+ assert . deepStrictEqual ( D1 . marked ( 1 ) , false )
44
+
45
+ ~ ~ [ '0' , '1' , '2' , '3' , '4' , '5' ] . forEach ( v => {
46
+ assert . deepStrictEqual ( D2 . marked ( v ) , true )
47
+ } )
48
+
49
+
50
+ }
51
+
52
+
53
+ // 测试多点可达
54
+ function test2 ( ) {
55
+
56
+ let G = new Digraph ( )
57
+
58
+ testData . forEach ( d => G . addEdge ( d [ 0 ] , d [ 1 ] ) )
59
+
60
+ let D = new DirectedDFS ( G , [ '1' , '2' , '6' ] )
61
+
62
+ ~ ~ [ '0' , '1' , '2' , '3' , '4' , '5' , '6' , '9' , '10' , '11' , '12' ] . forEach ( v => {
63
+ assert . deepStrictEqual ( D . marked ( v ) , true )
64
+ } )
65
+ }
66
+
67
+
68
+ test1 ( )
69
+ test2 ( )
70
+
71
+ console . log ( '如果看到这里,恭喜你,测试全过了' )
0 commit comments