@@ -9,6 +9,7 @@ import { writeFile, remove } from 'fs-extra'
9
9
import * as path from 'path'
10
10
import {
11
11
fileExists ,
12
+ getFileDistance ,
12
13
getNonexistentFilename ,
13
14
isInDirectory ,
14
15
makeTemporaryToolkitFolder ,
@@ -119,4 +120,79 @@ describe('filesystemUtilities', function () {
119
120
assert . ok ( ! isInDirectory ( '/foo/bar/baz/' , '/FOO/BAR/BAZ/A.TXT' ) )
120
121
}
121
122
} )
123
+
124
+ describe ( 'getFileDistance' , function ( ) {
125
+ let fileA : string
126
+ let fileB : string
127
+
128
+ it ( 'distance 0' , function ( ) {
129
+ fileA = 'foo/bar/a.java'
130
+ fileB = 'foo/bar/b.java'
131
+ const actual = getFileDistance ( fileA , fileB )
132
+ assert . strictEqual ( actual , 0 )
133
+ } )
134
+
135
+ it ( 'root distance 0' , function ( ) {
136
+ fileA = 'a.txt'
137
+ fileB = 'b.txt'
138
+ const actual = getFileDistance ( fileA , fileB )
139
+ assert . strictEqual ( actual , 0 )
140
+ } )
141
+
142
+ it ( 'distance 1' , function ( ) {
143
+ fileA = 'foo/bar/a.java'
144
+ fileB = 'foo/b.java'
145
+ const actual = getFileDistance ( fileA , fileB )
146
+ assert . strictEqual ( actual , 1 )
147
+ } )
148
+
149
+ it ( 'distance 3' , function ( ) {
150
+ fileA = 'foo/bar/a.java'
151
+ fileB = 'lzz/b.java'
152
+ const actual = getFileDistance ( fileA , fileB )
153
+ assert . strictEqual ( actual , 3 )
154
+ } )
155
+
156
+ it ( 'distance 4' , function ( ) {
157
+ fileA = 'foo/bar/a.java'
158
+ fileB = 'lzz/baz/b.java'
159
+ const actual = getFileDistance ( fileA , fileB )
160
+ assert . strictEqual ( actual , 4 )
161
+ } )
162
+
163
+ it ( 'another distance 4' , function ( ) {
164
+ fileA = 'foo/a.py'
165
+ fileB = 'foo/foo/foo/foo/foo/b.py'
166
+ const actual = getFileDistance ( fileA , fileB )
167
+ assert . strictEqual ( actual , 4 )
168
+ } )
169
+
170
+ it ( 'distance 5' , function ( ) {
171
+ fileA = 'foo/bar/a.java'
172
+ fileB = 'lzz/baz/zoo/b.java'
173
+ const actual = getFileDistance ( fileA , fileB )
174
+ assert . strictEqual ( actual , 5 )
175
+ } )
176
+
177
+ it ( 'distance 6' , function ( ) {
178
+ fileA = 'foo/zoo/a.java'
179
+ fileB = 'bar/baz/bee/bww/b.java'
180
+ const actual = getFileDistance ( fileA , fileB )
181
+ assert . strictEqual ( actual , 6 )
182
+ } )
183
+
184
+ it ( 'backslash distance 1' , function ( ) {
185
+ fileA = 'C:\\FOO\\BAR\\BAZ\\A.TXT'
186
+ fileB = 'C:\\FOO\\BAR\\B.TXT'
187
+ const actual = getFileDistance ( fileA , fileB )
188
+ assert . strictEqual ( actual , 1 )
189
+ } )
190
+
191
+ it ( 'backslash distnace 3' , function ( ) {
192
+ fileA = 'C:\\FOO\\BAR\\BAZ\\LOO\\WOW\\A.txt'
193
+ fileB = 'C:\\FOO\\BAR\\B.txt'
194
+ const actual = getFileDistance ( fileA , fileB )
195
+ assert . strictEqual ( actual , 3 )
196
+ } )
197
+ } )
122
198
} )
0 commit comments