1 | var TreeWalker = require("../lib/tree-walker");
|
2 |
|
3 | describe('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 |
|
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 | });
|