MCPcopy
hub / github.com/unconed/MathBox.js / test

Function test

test/Attributes.test.js:3–45  ·  view source on GitHub ↗
(object, assert)

Source from the content-addressed store, hash-verified

1Test.Tests.Attributes = function (assert, done) {
2
3 function test(object, assert) {
4 // Add validator
5 var limit = 10;
6 object.validateFoo = function (foo) {
7 return Math.max(limit, foo);
8 }
9
10 // Prepare test of event firing.
11 var fired = false;
12 object.on('change', function (changed) {
13 fired = changed;
14 });
15 function didFire() {
16 assert(fired, "Attributes change event fired");
17 fired = false;
18 }
19
20 // Test get/set
21 assert(object.get, 'Has get method');
22 assert(object.set, 'Has set method');
23
24 var data = { foo: 33, bar: 2 };
25 object.set(data);
26 didFire();
27 assert(object.get().foo == data.foo, 'Multiple set, attr get foo');
28 assert(object.get().bar == data.bar, 'Multiple set, attr get bar');
29
30 assert(object.get('foo') == data.foo, 'Multiple set, key get foo');
31 assert(object.get('bar') == data.bar, 'Multiple set, key get bar');
32
33 data.foo = 30;
34 object.set('foo', data.foo);
35 didFire();
36 assert(object.get().foo == data.foo, 'Single set, attr get');
37
38 // Test validator
39 object.set('foo', limit - 10);
40 didFire();
41 assert(object.get().foo == limit, 'Validator works');
42
43 // Set random value
44 object.set('random', Math.random());
45 }
46
47 var klass = function () {};
48 MathBox.Attributes.mixin(klass);

Callers 2

Attributes.test.jsFile · 0.85
runFunction · 0.85

Calls 2

assertFunction · 0.85
didFireFunction · 0.85

Tested by

no test coverage detected