UNPKG

1.65 kBJavaScriptView Raw
1var TreeWalker = require("../lib/tree-walker");
2
3describe('TreeWalker', function() {
4 function X(out, chr) {
5 if( typeof chr === 'undefined' ) {
6 return (function( node, path ){
7 out.txt += JSON.stringify( node );
8 });
9 }
10 var f = function() {
11 out.txt += chr;
12 };
13 return f;
14 }
15
16 var data = {
17 weapon: [
18 { gender: "F", name: "Sword" },
19 { gender: "F", name: "Pike" },
20 { gender: "M", name: "Bow" }
21 ],
22 races: {
23 human: [
24 { gender: "M", name: "John" },
25 { gender: "M", name: "Tyron" },
26 { gender: "F", name: "Arya" },
27 { gender: "F", name: "Cercey" },
28 { gender: "F", name: "Sansa" },
29 { gender: "M", name: "Tywin" },
30 ],
31 monster: [
32 { gender: "F", name: "Dragon" },
33 { gender: "M", name: "Troll" },
34 { gender: "M", name: "Gobelin" }
35 ]
36 }
37 };
38
39 it('should get the names of all males', function() {
40 var out = {txt: ''};
41 TreeWalker.create({ '**/[gender=M]/name': X(out) }).walk( data );
42 //expect( out.txt ).toBe( '"Bow""John""Tyron""Tywin""Troll""Gobelin"' );
43 });
44
45 it('should traverse all nodes with `**`', function() {
46 var out = {txt: ''};
47 TreeWalker.create({ '**': X(out) }).walk( data );
48 expect( out.txt ).toBe( '"F""Sword""F""Pike""M""Bow""M""John""M""Tyron""F""Arya""F""Cercey""F""Sansa""M""Tywin""F""Dragon""M""Troll""M""Gobelin"' );
49 });
50
51});