@@ -54,8 +54,39 @@ describe('breadthFirstSearch', () => {
54
54
expect ( enterVertexCallback ) . toHaveBeenCalledTimes ( 8 ) ;
55
55
expect ( leaveVertexCallback ) . toHaveBeenCalledTimes ( 8 ) ;
56
56
57
- expect ( enterVertexCallback . mock . calls . toString ( ) ) . toBe ( 'A,B,D,E,C,H,F,G' ) ;
58
- expect ( leaveVertexCallback . mock . calls . toString ( ) ) . toBe ( 'A,B,D,E,C,H,F,G' ) ;
57
+ const enterVertexParamsMap = [
58
+ { currentVertex : vertexA , previousVertex : null } ,
59
+ { currentVertex : vertexB , previousVertex : vertexA } ,
60
+ { currentVertex : vertexD , previousVertex : vertexB } ,
61
+ { currentVertex : vertexE , previousVertex : vertexD } ,
62
+ { currentVertex : vertexC , previousVertex : vertexE } ,
63
+ { currentVertex : vertexH , previousVertex : vertexC } ,
64
+ { currentVertex : vertexF , previousVertex : vertexH } ,
65
+ { currentVertex : vertexG , previousVertex : vertexF } ,
66
+ ] ;
67
+
68
+ for ( let callIndex = 0 ; callIndex < graph . getAllVertices ( ) . length ; callIndex += 1 ) {
69
+ const params = enterVertexCallback . mock . calls [ callIndex ] [ 0 ] ;
70
+ expect ( params . currentVertex ) . toEqual ( enterVertexParamsMap [ callIndex ] . currentVertex ) ;
71
+ expect ( params . previousVertex ) . toEqual ( enterVertexParamsMap [ callIndex ] . previousVertex ) ;
72
+ }
73
+
74
+ const leaveVertexParamsMap = [
75
+ { currentVertex : vertexA , previousVertex : null } ,
76
+ { currentVertex : vertexB , previousVertex : vertexA } ,
77
+ { currentVertex : vertexD , previousVertex : vertexB } ,
78
+ { currentVertex : vertexE , previousVertex : vertexD } ,
79
+ { currentVertex : vertexC , previousVertex : vertexE } ,
80
+ { currentVertex : vertexH , previousVertex : vertexC } ,
81
+ { currentVertex : vertexF , previousVertex : vertexH } ,
82
+ { currentVertex : vertexG , previousVertex : vertexF } ,
83
+ ] ;
84
+
85
+ for ( let callIndex = 0 ; callIndex < graph . getAllVertices ( ) . length ; callIndex += 1 ) {
86
+ const params = leaveVertexCallback . mock . calls [ callIndex ] [ 0 ] ;
87
+ expect ( params . currentVertex ) . toEqual ( leaveVertexParamsMap [ callIndex ] . currentVertex ) ;
88
+ expect ( params . previousVertex ) . toEqual ( leaveVertexParamsMap [ callIndex ] . previousVertex ) ;
89
+ }
59
90
} ) ;
60
91
61
92
it ( 'should allow to create custom vertex visiting logic' , ( ) => {
@@ -100,15 +131,44 @@ describe('breadthFirstSearch', () => {
100
131
breadthFirstSearch ( graph , vertexA , {
101
132
enterVertex : enterVertexCallback ,
102
133
leaveVertex : leaveVertexCallback ,
103
- allowTraversal : ( vertex , neighbor ) => {
104
- return ! ( vertex === vertexA && neighbor === vertexB ) ;
134
+ allowTraversal : ( { currentVertex , nextVertex } ) => {
135
+ return ! ( currentVertex === vertexA && nextVertex === vertexB ) ;
105
136
} ,
106
137
} ) ;
107
138
108
139
expect ( enterVertexCallback ) . toHaveBeenCalledTimes ( 7 ) ;
109
140
expect ( leaveVertexCallback ) . toHaveBeenCalledTimes ( 7 ) ;
110
141
111
- expect ( enterVertexCallback . mock . calls . toString ( ) ) . toBe ( 'A,D,E,H,F,D,H' ) ;
112
- expect ( leaveVertexCallback . mock . calls . toString ( ) ) . toBe ( 'A,D,E,H,F,D,H' ) ;
142
+ const enterVertexParamsMap = [
143
+ { currentVertex : vertexA , previousVertex : null } ,
144
+ { currentVertex : vertexD , previousVertex : vertexA } ,
145
+ { currentVertex : vertexE , previousVertex : vertexD } ,
146
+ { currentVertex : vertexH , previousVertex : vertexE } ,
147
+ { currentVertex : vertexF , previousVertex : vertexH } ,
148
+ { currentVertex : vertexD , previousVertex : vertexF } ,
149
+ { currentVertex : vertexH , previousVertex : vertexD } ,
150
+ ] ;
151
+
152
+ for ( let callIndex = 0 ; callIndex < 7 ; callIndex += 1 ) {
153
+ const params = enterVertexCallback . mock . calls [ callIndex ] [ 0 ] ;
154
+ expect ( params . currentVertex ) . toEqual ( enterVertexParamsMap [ callIndex ] . currentVertex ) ;
155
+ expect ( params . previousVertex ) . toEqual ( enterVertexParamsMap [ callIndex ] . previousVertex ) ;
156
+ }
157
+
158
+ const leaveVertexParamsMap = [
159
+ { currentVertex : vertexA , previousVertex : null } ,
160
+ { currentVertex : vertexD , previousVertex : vertexA } ,
161
+ { currentVertex : vertexE , previousVertex : vertexD } ,
162
+ { currentVertex : vertexH , previousVertex : vertexE } ,
163
+ { currentVertex : vertexF , previousVertex : vertexH } ,
164
+ { currentVertex : vertexD , previousVertex : vertexF } ,
165
+ { currentVertex : vertexH , previousVertex : vertexD } ,
166
+ ] ;
167
+
168
+ for ( let callIndex = 0 ; callIndex < 7 ; callIndex += 1 ) {
169
+ const params = leaveVertexCallback . mock . calls [ callIndex ] [ 0 ] ;
170
+ expect ( params . currentVertex ) . toEqual ( leaveVertexParamsMap [ callIndex ] . currentVertex ) ;
171
+ expect ( params . previousVertex ) . toEqual ( leaveVertexParamsMap [ callIndex ] . previousVertex ) ;
172
+ }
113
173
} ) ;
114
174
} ) ;
0 commit comments