-
Notifications
You must be signed in to change notification settings - Fork 0
/
compass_test.ts
83 lines (76 loc) · 2.54 KB
/
compass_test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { Compass } from "./compass.ts";
import { assertEquals } from "https://deno.land/std/testing/asserts.ts"
Deno.test("Test define and find",()=>{
let c = new Compass();
c.define("/");
c.define("/name_of");
c.define("/name_of/app/compass");
c.define("/name_of/:usrname/info");
c.define("/:docid/meta/:param_name");
c.define("/name_of/department/:dep_code/info");
//@ts-ignore
assertEquals(c.path_tree,{
value: "/",
parameterized:{
docid:{
plain:{
meta:{
parameterized:{
param_name: {value: "/:docid/meta/:param_name"}
}
}
}
}
},
plain:{
name_of:{
value: "/name_of",
parameterized:{
usrname:{
plain:{
info: {value: "/name_of/:usrname/info"}
}
}
},
plain:{
app:{
plain:{
compass: {value: "/name_of/app/compass"}
}
},
department:{
parameterized:{
dep_code:{
plain:{
info:{value:"/name_of/department/:dep_code/info"}
}
}
}
}
}
}
}
});
console.log("testing for paths");
let r0 = c.find("/");
console.log(r0);
assertEquals(r0?.matched_pattern,"/");
assertEquals(r0?.parent_matches,[]);
let r1 = c.find("/name_of/anurag/info");
console.log(r1);
assertEquals(r1!==undefined, true);
assertEquals(r1?.matched_pattern,"/name_of/:usrname/info");
assertEquals(r1?.parent_matches,["/", "/name_of"]);
let r2 = c.find("123/meta/size");
console.log(r2);
assertEquals(r2!==undefined, true);
assertEquals(r2?.matched_pattern,"/:docid/meta/:param_name");
assertEquals(r2?.parent_matches,["/"]);
let r3 = c.find("/name_of/department/123/info");
console.log(r3);
assertEquals(r3!==undefined,true);
assertEquals(r3?.matched_pattern,"/name_of/department/:dep_code/info");
assertEquals(r3?.parent_matches,[ "/", "/name_of"]);
let r4=c.find("/path/not/defined");
assertEquals(r4,undefined);
})