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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
if (typeof module !== 'undefined') {
var assert = require('assert');
var sinon = require('sinon');
var faker = require('../index');
}
describe("tree.js", function () {
describe("createTree()", function () {
var proto = {
"firstname": "faker.random.first_name()",
"children": "__RECURSE__"
};
it("requires the width to be at least one", function () {
sinon.spy(faker.Tree, 'createTree');
try {
faker.Tree.createTree(0, 0, {});
}
catch (e) {
}
assert.ok(faker.Tree.createTree.threw);
faker.Tree.createTree.restore();
});
it("requires that the object passed in should not be null", function () {
sinon.spy(faker.Tree, 'createTree');
try {
faker.Tree.createTree(1, 1, null);
}
catch (e) {
}
assert.ok(faker.Tree.createTree.threw);
faker.Tree.createTree.restore();
});
it("can create a trivial tree with one node", function () {
sinon.spy(faker.random, 'first_name');
var tree = faker.Tree.createTree(0, 1, proto);
assert.ok(faker.random.first_name.calledOnce);
assert.ok(tree.children == null);
faker.random.first_name.restore();
});
it("can create a deep tree with one node at each level", function () {
sinon.spy(faker.random, 'first_name');
var tree = faker.Tree.createTree(2, 1, proto);
assert.ok(faker.random.first_name.calledThrice);
assert.ok(tree.firstname);
assert.ok(tree.children[0].firstname);
assert.ok(tree.children[0].children[0].firstname);
faker.random.first_name.restore();
});
it("can create a basic N-tree", function () {
var n = 3;
sinon.spy(faker.random, 'first_name');
var tree = faker.Tree.createTree(1, n, proto);
assert.ok(faker.random.first_name.callCount == 4);
assert.ok(tree.firstname);
assert.ok(tree.children[0].firstname);
assert.ok(tree.children[1].firstname);
assert.ok(tree.children[2].firstname);
faker.random.first_name.restore();
});
it("can create a full N-tree", function () {
var n = 3;
sinon.spy(faker.random, 'first_name');
var tree = faker.Tree.createTree(2, n, proto);
assert.ok(faker.random.first_name.callCount == 13);
faker.random.first_name.restore();
});
it("can accept a function for the width", function () {
var widthFuncCalled = 0;
var widthFunc = function () {
widthFuncCalled = widthFuncCalled + 1;
return 2;
};
var tree = faker.Tree.createTree(2, widthFunc, proto);
assert.equal(widthFuncCalled, 3);
});
});
});
|