-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathtests.html
94 lines (74 loc) · 2.22 KB
/
tests.html
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
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Args.js</title>
<link href="tests-lib/qunit.css" rel="stylesheet" />
<script src="tests-lib/jquery.js"></script>
<script src="tests-lib/qunit.js"></script>
<script src="args.js"></script>
</head>
<body>
<h1 id="qunit-header">Args.js tests</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture"></div>
</body>
<!-- Tests -->
<script>
module('Args.js');
test('Default values', function () {
var run = function (foo, bar) {
Args(arguments).defaults(1, 2);
return [foo, bar];
};
deepEqual(run( ), [1, 2], 'Zero arguments');
deepEqual(run(3 ), [3, 2], 'One argument ');
deepEqual(run(3, 4), [3, 4], 'Two arguments');
});
test('Default values + required', function () {
var run = function (keyname, fn) {
Args(arguments).defaults(null, Args.required);
return [keyname, fn];
}
var listener = function () { alert(1) };
deepEqual(run( 'enter', listener ), ['enter', listener], 'Two arguments');
deepEqual(run( listener ), [ null , listener], 'Only second arguments');
raises(function () {
run(); // Error: 1 args required, 0 given
}, 'Required argument is empty');
});
test('All arguments required', function () {
var run = function (foo, bar, qux) {
Args(arguments).allRequired();
return true;
}
ok(run(1,2,3), 'All arguments presents');
raises(function () {
run(1,2 ); // Error: 3 args required, 2 given
}, 'not enought arguments');
});
test('Type casting', function () {
var run = function (foo, bar) {
Args(arguments).cast(String, parseInt);
strictEqual(foo, '123', 'Number becames a string');
strictEqual(bar, 256 , 'Hex string parsed as int');
}
run(123, '0x100');
});
test('Type Hinting', function () {
var Foo = function(){};
var Bar = function(){};
var run = function (foo, bar) {
Args(arguments).hinting(Foo, Bar);
return true;
};
ok(run(new Foo(), new Bar()), 'Type hinting successful'); // Success
raises(function () {
run(1,2); // Error
}, 'Wrong types in type hinting');
});
</script>
</html>