jbarnette-johnson 1.0.0.20090326122910 → 1.0.0.20090326154650
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +26 -19
- data/Rakefile +16 -215
- data/{cross-compile.txt → docs/cross-compile.txt} +0 -0
- data/ext/spidermonkey/extconf.rb +20 -15
- data/johnson.gemspec +7 -5
- data/lib/tasks/gem.rake +9 -0
- data/lib/tasks/parsing.rake +37 -0
- data/lib/tasks/testing.rake +36 -0
- data/lib/tasks/vendor.rake +20 -0
- data/test/helper.rb +0 -3
- data/test/johnson/prelude_test.rb +7 -7
- metadata +22 -29
- data/MANIFEST.txt +0 -389
- data/js/johnson/browser/env.js +0 -705
- data/js/johnson/browser/jquery.js +0 -3446
- data/js/johnson/browser/xmlsax.js +0 -1564
- data/js/johnson/browser/xmlw3cdom.js +0 -4189
- data/js/johnson/browser.js +0 -9
- data/js/johnson/template.js +0 -29
- data/srcs/xmlparser-0.6.8.tar +0 -0
- data/test/assets/index.html +0 -38
- data/test/assets/jquery_test.html +0 -186
- data/test/jquery_units/simple.js +0 -12
- data/test/jquery_units/test.js +0 -31
- data/test/jquery_units/test_helper.js +0 -197
- data/test/jquery_units/units/ajax.js +0 -795
- data/test/jquery_units/units/core.js +0 -1571
- data/test/jquery_units/units/event.js +0 -299
- data/test/jquery_units/units/fx.js +0 -427
- data/test/jquery_units/units/offset.js +0 -112
- data/test/jquery_units/units/selector.js +0 -224
- data/test/jspec/helper.js +0 -7
- data/test/jspec/jspec.js +0 -192
- data/test/jspec/simple_spec.js +0 -68
@@ -1,224 +0,0 @@
|
|
1
|
-
module("selector");
|
2
|
-
|
3
|
-
test("element", function() {
|
4
|
-
expect(9);
|
5
|
-
ok( $("*").size() >= 30, "Select all" );
|
6
|
-
var all = $("*"), good = true;
|
7
|
-
for ( var i = 0; i < all.length; i++ )
|
8
|
-
if ( all[i].nodeType == 8 )
|
9
|
-
good = false;
|
10
|
-
ok( good, "Select all elements, no comment nodes" );
|
11
|
-
t( "Element Selector", "p", ["firstp","ap","sndp","en","sap","first"] );
|
12
|
-
t( "Element Selector", "body", ["body"] );
|
13
|
-
t( "Element Selector", "html", ["html"] );
|
14
|
-
t( "Parent Element", "div p", ["firstp","ap","sndp","en","sap","first"] );
|
15
|
-
ok( $("param", "#object1").length == 2, "Object/param as context" );
|
16
|
-
|
17
|
-
ok( $("#length").length, '<input name="length"> cannot be found under IE, see #945' );
|
18
|
-
ok( $("#lengthtest input").length, '<input name="length"> cannot be found under IE, see #945' );
|
19
|
-
});
|
20
|
-
|
21
|
-
if ( location.protocol != "file:" ) {
|
22
|
-
test("Element Selector with underscore", function() {
|
23
|
-
expect(1);
|
24
|
-
stop();
|
25
|
-
$.get("data/with_fries.xml", function(xml) {
|
26
|
-
ok( $("foo_bar", xml).length == 1, "Element Selector with underscore" );
|
27
|
-
start();
|
28
|
-
});
|
29
|
-
});
|
30
|
-
}
|
31
|
-
|
32
|
-
test("broken", function() {
|
33
|
-
expect(7);
|
34
|
-
t( "Broken Selector", "[", [] );
|
35
|
-
t( "Broken Selector", "(", [] );
|
36
|
-
t( "Broken Selector", "{", [] );
|
37
|
-
t( "Broken Selector", "<", [] );
|
38
|
-
t( "Broken Selector", "()", [] );
|
39
|
-
t( "Broken Selector", "<>", [] );
|
40
|
-
t( "Broken Selector", "{}", [] );
|
41
|
-
});
|
42
|
-
|
43
|
-
test("id", function() {
|
44
|
-
expect(25);
|
45
|
-
t( "ID Selector", "#body", ["body"] );
|
46
|
-
t( "ID Selector w/ Element", "body#body", ["body"] );
|
47
|
-
t( "ID Selector w/ Element", "ul#first", [] );
|
48
|
-
t( "ID selector with existing ID descendant", "#firstp #simon1", ["simon1"] );
|
49
|
-
t( "ID selector with non-existant descendant", "#firstp #foobar", [] );
|
50
|
-
t( "ID selector using UTF8", "#台北Táiběi", ["台北Táiběi"] );
|
51
|
-
t( "Multiple ID selectors using UTF8", "#台北Táiběi, #台北", ["台北Táiběi","台北"] );
|
52
|
-
t( "Descendant ID selector using UTF8", "div #台北", ["台北"] );
|
53
|
-
t( "Child ID selector using UTF8", "form > #台北", ["台北"] );
|
54
|
-
|
55
|
-
t( "Escaped ID", "#foo\\:bar", ["foo:bar"] );
|
56
|
-
t( "Escaped ID", "#test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
57
|
-
t( "Descendant escaped ID", "div #foo\\:bar", ["foo:bar"] );
|
58
|
-
t( "Descendant escaped ID", "div #test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
59
|
-
t( "Child escaped ID", "form > #foo\\:bar", ["foo:bar"] );
|
60
|
-
t( "Child escaped ID", "form > #test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
61
|
-
|
62
|
-
t( "ID Selector, child ID present", "#form > #radio1", ["radio1"] ); // bug #267
|
63
|
-
t( "ID Selector, not an ancestor ID", "#form #first", [] );
|
64
|
-
t( "ID Selector, not a child ID", "#form > #option1a", [] );
|
65
|
-
|
66
|
-
t( "All Children of ID", "#foo > *", ["sndp", "en", "sap"] );
|
67
|
-
t( "All Children of ID with no children", "#firstUL/*", [] );
|
68
|
-
|
69
|
-
$('<a name="tName1">tName1 A</a><a name="tName2">tName2 A</a><div id="tName1">tName1 Div</div>').appendTo('#main');
|
70
|
-
ok( $("#tName1")[0].id == 'tName1', "ID selector with same value for a name attribute" );
|
71
|
-
ok( $("#tName2").length == 0, "ID selector non-existing but name attribute on an A tag" );
|
72
|
-
t( "ID Selector on Form with an input that has a name of 'id'", "#lengthtest", ["lengthtest"] );
|
73
|
-
|
74
|
-
t( "ID selector with non-existant ancestor", "#asdfasdf #foobar", [] ); // bug #986
|
75
|
-
|
76
|
-
isSet( $("body").find("div#form"), [], "ID selector within the context of another element" );
|
77
|
-
});
|
78
|
-
|
79
|
-
test("class", function() {
|
80
|
-
expect(16);
|
81
|
-
t( "Class Selector", ".blog", ["mark","simon"] );
|
82
|
-
t( "Class Selector", ".blog.link", ["simon"] );
|
83
|
-
t( "Class Selector w/ Element", "a.blog", ["mark","simon"] );
|
84
|
-
t( "Parent Class Selector", "p .blog", ["mark","simon"] );
|
85
|
-
|
86
|
-
t( "Class selector using UTF8", ".台北Táiběi", ["utf8class1"] );
|
87
|
-
t( "Class selector using UTF8", ".台北", ["utf8class1","utf8class2"] );
|
88
|
-
t( "Class selector using UTF8", ".台北Táiběi.台北", ["utf8class1"] );
|
89
|
-
t( "Class selector using UTF8", ".台北Táiběi, .台北", ["utf8class1","utf8class2"] );
|
90
|
-
t( "Descendant class selector using UTF8", "div .台北Táiběi", ["utf8class1"] );
|
91
|
-
t( "Child class selector using UTF8", "form > .台北Táiběi", ["utf8class1"] );
|
92
|
-
|
93
|
-
t( "Escaped Class", ".foo\\:bar", ["foo:bar"] );
|
94
|
-
t( "Escaped Class", ".test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
95
|
-
t( "Descendant scaped Class", "div .foo\\:bar", ["foo:bar"] );
|
96
|
-
t( "Descendant scaped Class", "div .test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
97
|
-
t( "Child escaped Class", "form > .foo\\:bar", ["foo:bar"] );
|
98
|
-
t( "Child escaped Class", "form > .test\\.foo\\[5\\]bar", ["test.foo[5]bar"] );
|
99
|
-
});
|
100
|
-
|
101
|
-
test("multiple", function() {
|
102
|
-
expect(4);
|
103
|
-
t( "Comma Support", "a.blog, p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
|
104
|
-
t( "Comma Support", "a.blog , p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
|
105
|
-
t( "Comma Support", "a.blog ,p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
|
106
|
-
t( "Comma Support", "a.blog,p", ["mark","simon","firstp","ap","sndp","en","sap","first"] );
|
107
|
-
});
|
108
|
-
|
109
|
-
test("child and adjacent", function() {
|
110
|
-
expect(37);
|
111
|
-
t( "Child", "p > a", ["simon1","google","groups","mark","yahoo","simon"] );
|
112
|
-
t( "Child", "p> a", ["simon1","google","groups","mark","yahoo","simon"] );
|
113
|
-
t( "Child", "p >a", ["simon1","google","groups","mark","yahoo","simon"] );
|
114
|
-
t( "Child", "p>a", ["simon1","google","groups","mark","yahoo","simon"] );
|
115
|
-
t( "Child w/ Class", "p > a.blog", ["mark","simon"] );
|
116
|
-
t( "All Children", "code > *", ["anchor1","anchor2"] );
|
117
|
-
t( "All Grandchildren", "p > * > *", ["anchor1","anchor2"] );
|
118
|
-
t( "Adjacent", "a + a", ["groups"] );
|
119
|
-
t( "Adjacent", "a +a", ["groups"] );
|
120
|
-
t( "Adjacent", "a+ a", ["groups"] );
|
121
|
-
t( "Adjacent", "a+a", ["groups"] );
|
122
|
-
t( "Adjacent", "p + p", ["ap","en","sap"] );
|
123
|
-
t( "Comma, Child, and Adjacent", "a + a, code > a", ["groups","anchor1","anchor2"] );
|
124
|
-
|
125
|
-
t( "First Child", "p:first-child", ["firstp","sndp"] );
|
126
|
-
t( "Nth Child", "p:nth-child(1)", ["firstp","sndp"] );
|
127
|
-
|
128
|
-
t( "Last Child", "p:last-child", ["sap"] );
|
129
|
-
t( "Last Child", "a:last-child", ["simon1","anchor1","mark","yahoo","anchor2","simon"] );
|
130
|
-
|
131
|
-
t( "Nth-child", "#main form#form > *:nth-child(2)", ["text2"] );
|
132
|
-
t( "Nth-child", "#main form#form > :nth-child(2)", ["text2"] );
|
133
|
-
|
134
|
-
t( "Nth-child", "#form select:first option:nth-child(3)", ["option1c"] );
|
135
|
-
t( "Nth-child", "#form select:first option:nth-child(0n+3)", ["option1c"] );
|
136
|
-
t( "Nth-child", "#form select:first option:nth-child(1n+0)", ["option1a", "option1b", "option1c", "option1d"] );
|
137
|
-
t( "Nth-child", "#form select:first option:nth-child(1n)", ["option1a", "option1b", "option1c", "option1d"] );
|
138
|
-
t( "Nth-child", "#form select:first option:nth-child(n)", ["option1a", "option1b", "option1c", "option1d"] );
|
139
|
-
t( "Nth-child", "#form select:first option:nth-child(even)", ["option1b", "option1d"] );
|
140
|
-
t( "Nth-child", "#form select:first option:nth-child(odd)", ["option1a", "option1c"] );
|
141
|
-
t( "Nth-child", "#form select:first option:nth-child(2n)", ["option1b", "option1d"] );
|
142
|
-
t( "Nth-child", "#form select:first option:nth-child(2n+1)", ["option1a", "option1c"] );
|
143
|
-
t( "Nth-child", "#form select:first option:nth-child(3n)", ["option1c"] );
|
144
|
-
t( "Nth-child", "#form select:first option:nth-child(3n+1)", ["option1a", "option1d"] );
|
145
|
-
t( "Nth-child", "#form select:first option:nth-child(3n+2)", ["option1b"] );
|
146
|
-
t( "Nth-child", "#form select:first option:nth-child(3n+3)", ["option1c"] );
|
147
|
-
t( "Nth-child", "#form select:first option:nth-child(3n-1)", ["option1b"] );
|
148
|
-
t( "Nth-child", "#form select:first option:nth-child(3n-2)", ["option1a", "option1d"] );
|
149
|
-
t( "Nth-child", "#form select:first option:nth-child(3n-3)", ["option1c"] );
|
150
|
-
t( "Nth-child", "#form select:first option:nth-child(3n+0)", ["option1c"] );
|
151
|
-
t( "Nth-child", "#form select:first option:nth-child(-n+3)", ["option1a", "option1b", "option1c"] );
|
152
|
-
});
|
153
|
-
|
154
|
-
test("attributes", function() {
|
155
|
-
expect(20);
|
156
|
-
t( "Attribute Exists", "a[title]", ["google"] );
|
157
|
-
t( "Attribute Exists", "*[title]", ["google"] );
|
158
|
-
t( "Attribute Exists", "[title]", ["google"] );
|
159
|
-
|
160
|
-
t( "Attribute Equals", "a[rel='bookmark']", ["simon1"] );
|
161
|
-
t( "Attribute Equals", 'a[rel="bookmark"]', ["simon1"] );
|
162
|
-
t( "Attribute Equals", "a[rel=bookmark]", ["simon1"] );
|
163
|
-
t( "Multiple Attribute Equals", "#form input[type='hidden'],#form input[type='radio']", ["hidden1","radio1","radio2"] );
|
164
|
-
t( "Multiple Attribute Equals", "#form input[type=\"hidden\"],#form input[type='radio']", ["hidden1","radio1","radio2"] );
|
165
|
-
t( "Multiple Attribute Equals", "#form input[type=hidden],#form input[type=radio]", ["hidden1","radio1","radio2"] );
|
166
|
-
|
167
|
-
t( "Attribute selector using UTF8", "span[lang=中文]", ["台北"] );
|
168
|
-
|
169
|
-
t( "Attribute Begins With", "a[href ^= 'http://www']", ["google","yahoo"] );
|
170
|
-
t( "Attribute Ends With", "a[href $= 'org/']", ["mark"] );
|
171
|
-
t( "Attribute Contains", "a[href *= 'google']", ["google","groups"] );
|
172
|
-
|
173
|
-
t("Select options via [selected]", "#select1 option[selected]", ["option1a"] );
|
174
|
-
t("Select options via [selected]", "#select2 option[selected]", ["option2d"] );
|
175
|
-
t("Select options via [selected]", "#select3 option[selected]", ["option3b", "option3c"] );
|
176
|
-
|
177
|
-
t( "Grouped Form Elements", "input[name='foo[bar]']", ["hidden2"] );
|
178
|
-
|
179
|
-
t( ":not() Existing attribute", "#form select:not([multiple])", ["select1", "select2"]);
|
180
|
-
t( ":not() Equals attribute", "#form select:not([name=select1])", ["select2", "select3"]);
|
181
|
-
t( ":not() Equals quoted attribute", "#form select:not([name='select1'])", ["select2", "select3"]);
|
182
|
-
});
|
183
|
-
|
184
|
-
test("pseudo (:) selectors", function() {
|
185
|
-
expect(35);
|
186
|
-
t( "First Child", "p:first-child", ["firstp","sndp"] );
|
187
|
-
t( "Last Child", "p:last-child", ["sap"] );
|
188
|
-
t( "Only Child", "a:only-child", ["simon1","anchor1","yahoo","anchor2"] );
|
189
|
-
t( "Empty", "ul:empty", ["firstUL"] );
|
190
|
-
t( "Enabled UI Element", "#form input:enabled", ["text1","radio1","radio2","check1","check2","hidden1","hidden2","name"] );
|
191
|
-
t( "Disabled UI Element", "#form input:disabled", ["text2"] );
|
192
|
-
t( "Checked UI Element", "#form input:checked", ["radio2","check1"] );
|
193
|
-
t( "Selected Option Element", "#form option:selected", ["option1a","option2d","option3b","option3c"] );
|
194
|
-
t( "Text Contains", "a:contains('Google')", ["google","groups"] );
|
195
|
-
t( "Text Contains", "a:contains('Google Groups')", ["groups"] );
|
196
|
-
t( "Element Preceded By", "p ~ div", ["foo","fx-queue","fx-tests", "moretests"] );
|
197
|
-
t( "Not", "a.blog:not(.link)", ["mark"] );
|
198
|
-
t( "Not - multiple", "#form option:not(:contains('Nothing'),#option1b,:selected)", ["option1c", "option1d", "option2b", "option2c", "option3d"] );
|
199
|
-
t( "Not - complex", "#form option:not([id^='opt']:gt(0):nth-child(-n+3))", [ "option1a", "option1d", "option2d", "option3d"] );
|
200
|
-
t( "Not - recursive", "#form option:not(:not(:selected))[id^='option3']", [ "option3b", "option3c"] );
|
201
|
-
|
202
|
-
t( "nth Element", "p:nth(1)", ["ap"] );
|
203
|
-
t( "First Element", "p:first", ["firstp"] );
|
204
|
-
t( "Last Element", "p:last", ["first"] );
|
205
|
-
t( "Even Elements", "p:even", ["firstp","sndp","sap"] );
|
206
|
-
t( "Odd Elements", "p:odd", ["ap","en","first"] );
|
207
|
-
t( "Position Equals", "p:eq(1)", ["ap"] );
|
208
|
-
t( "Position Greater Than", "p:gt(0)", ["ap","sndp","en","sap","first"] );
|
209
|
-
t( "Position Less Than", "p:lt(3)", ["firstp","ap","sndp"] );
|
210
|
-
t( "Is A Parent", "p:parent", ["firstp","ap","sndp","en","sap","first"] );
|
211
|
-
t( "Is Visible", "#form input:visible", ["text1","text2","radio1","radio2","check1","check2","name"] );
|
212
|
-
t( "Is Hidden", "#form input:hidden", ["hidden1","hidden2"] );
|
213
|
-
|
214
|
-
t( "Form element :input", "#form :input", ["text1", "text2", "radio1", "radio2", "check1", "check2", "hidden1", "hidden2", "name", "button", "area1", "select1", "select2", "select3"] );
|
215
|
-
t( "Form element :radio", "#form :radio", ["radio1", "radio2"] );
|
216
|
-
t( "Form element :checkbox", "#form :checkbox", ["check1", "check2"] );
|
217
|
-
t( "Form element :text", "#form :text", ["text1", "text2", "hidden2", "name"] );
|
218
|
-
t( "Form element :radio:checked", "#form :radio:checked", ["radio2"] );
|
219
|
-
t( "Form element :checkbox:checked", "#form :checkbox:checked", ["check1"] );
|
220
|
-
t( "Form element :checkbox:checked, :radio:checked", "#form :checkbox:checked, #form :radio:checked", ["check1", "radio2"] );
|
221
|
-
|
222
|
-
t( "Headers", ":header", ["header", "banner", "userAgent"] );
|
223
|
-
t( "Has Children - :has()", "p:has(a)", ["firstp","ap","en","sap"] );
|
224
|
-
});
|
data/test/jspec/helper.js
DELETED
data/test/jspec/jspec.js
DELETED
@@ -1,192 +0,0 @@
|
|
1
|
-
console = {
|
2
|
-
indentation: 0,
|
3
|
-
indent: function() {
|
4
|
-
for(i=0;i<this.indentation - 1;i++) Ruby.print(" ");
|
5
|
-
if(this.indentation > 0) Ruby.print("- ");
|
6
|
-
},
|
7
|
-
group: function(msg) {
|
8
|
-
this.info(msg);
|
9
|
-
this.indentation += 1;
|
10
|
-
},
|
11
|
-
info: function(msg) {
|
12
|
-
this.indent();
|
13
|
-
Ruby.puts(msg);
|
14
|
-
},
|
15
|
-
error: function(msg) {
|
16
|
-
this.info("F " + msg);
|
17
|
-
},
|
18
|
-
warn: function(msg) {
|
19
|
-
this.info("W " + msg);
|
20
|
-
},
|
21
|
-
groupEnd: function() {
|
22
|
-
this.indentation -= 1;
|
23
|
-
}
|
24
|
-
};
|
25
|
-
|
26
|
-
jspec = {
|
27
|
-
fn_contents: function(fn) {
|
28
|
-
return fn.toString().match(/^[^\{]*{((.*\n*)*)}/m)[1];
|
29
|
-
},
|
30
|
-
TOP_LEVEL: 0, DESCRIBE: 1, IT_SHOULD_PASS: 2, IT_SHOULD_FAIL: 3,
|
31
|
-
FAILURE: 4, DONE_EXAMPLE: 5, DONE_GROUP: 6, PENDING: 7,
|
32
|
-
logger: function(state, message) {
|
33
|
-
switch(state) {
|
34
|
-
case jspec.TOP_LEVEL:
|
35
|
-
console.group(message);
|
36
|
-
break;
|
37
|
-
case jspec.DESCRIBE:
|
38
|
-
console.group(message);
|
39
|
-
break;
|
40
|
-
case jspec.IT_SHOULD_PASS:
|
41
|
-
console.info(message);
|
42
|
-
break;
|
43
|
-
case jspec.IT_SHOULD_FAIL:
|
44
|
-
console.group(message);
|
45
|
-
break;
|
46
|
-
case jspec.FAILURE:
|
47
|
-
console.error(message);
|
48
|
-
console.groupEnd();
|
49
|
-
break;
|
50
|
-
case jspec.DONE_EXAMPLE:
|
51
|
-
console.groupEnd();
|
52
|
-
break;
|
53
|
-
case jspec.DONE_GROUP:
|
54
|
-
console.groupEnd();
|
55
|
-
break;
|
56
|
-
case jspec.PENDING:
|
57
|
-
console.warn("Pending: " + message);
|
58
|
-
break;
|
59
|
-
}
|
60
|
-
|
61
|
-
},
|
62
|
-
describe: function(str, desc) {
|
63
|
-
jspec.logger(jspec.TOP_LEVEL, str);
|
64
|
-
var it = function(str, fn) {
|
65
|
-
if(fn) {
|
66
|
-
jspec.logger(jspec.DESCRIBE, str);
|
67
|
-
fn();
|
68
|
-
jspec.logger(jspec.DONE_EXAMPLE);
|
69
|
-
} else {
|
70
|
-
jspec.logger(jspec.PENDING, str);
|
71
|
-
};
|
72
|
-
};
|
73
|
-
var Expectation = function(p) { this.expectation = p; };
|
74
|
-
Expectation.prototype.to = function(fn_str, to_compare, not) {
|
75
|
-
try {
|
76
|
-
var pass = jspec.matchers[fn_str].matches(this.expectation, to_compare);
|
77
|
-
if(not) var pass = !pass;
|
78
|
-
} catch(e) {
|
79
|
-
var pass = null;
|
80
|
-
}
|
81
|
-
var should_string = (jspec.matchers[fn_str].describe &&
|
82
|
-
jspec.matchers[fn_str].describe(this.expectation, to_compare, not)) ||
|
83
|
-
this.toString() + " should " + (not ? "not " : "") + fn_str + " " + to_compare;
|
84
|
-
if(pass) {
|
85
|
-
jspec.logger(jspec.IT_SHOULD_PASS, should_string + " (PASS)");
|
86
|
-
} else {
|
87
|
-
jspec.logger(jspec.IT_SHOULD_FAIL, should_string + (pass == false ? " (FAIL)" : " (ERROR)"));
|
88
|
-
jspec.logger(jspec.FAILURE, jspec.matchers[fn_str].failure_message(this.expectation, to_compare, not))
|
89
|
-
}
|
90
|
-
}
|
91
|
-
Expectation.prototype.not_to = function(fn_str, to_compare) { this.to(fn_str, to_compare, true) }
|
92
|
-
var expect = function(p) { return new Expectation(p) };
|
93
|
-
x = desc.toString()
|
94
|
-
var fn_body = this.fn_contents(desc);
|
95
|
-
var fn = new Function("it", "expect", fn_body);
|
96
|
-
fn.call(this, it, expect);
|
97
|
-
jspec.logger(jspec.DONE_GROUP);
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
// Helper for
|
102
|
-
|
103
|
-
jspec.print_object = function(obj) {
|
104
|
-
if(obj instanceof Function) {
|
105
|
-
return obj.toString().match(/^([^\{]*) {/)[1];
|
106
|
-
} else if(obj instanceof Array) {
|
107
|
-
return "[" + obj.toString() + "]";
|
108
|
-
} else if(typeof HTMLElement != "undefined" && obj instanceof HTMLElement) {
|
109
|
-
return "<" + obj.tagName + (obj.className != "" ? " class='" + obj.className + "'" : "") +
|
110
|
-
(obj.id != "" ? " id='" + obj.id + "'" : "") + ">";
|
111
|
-
} else if(typeof DOMDocument != "undefined" && obj instanceof DOMDocument) {
|
112
|
-
return "The document element";
|
113
|
-
} else {
|
114
|
-
return obj.toString().replace(/\n\s*/g, "");
|
115
|
-
}
|
116
|
-
}
|
117
|
-
|
118
|
-
// Matchers begin here
|
119
|
-
|
120
|
-
jspec.matchers = {};
|
121
|
-
|
122
|
-
jspec.matchers["=="] = {
|
123
|
-
describe: function(self, target, not) {
|
124
|
-
return jspec.print_object(self) + " should " + (not ? "not " : "") + "equal " + jspec.print_object(target)
|
125
|
-
},
|
126
|
-
matches: function(self, target) {
|
127
|
-
return self == target;
|
128
|
-
},
|
129
|
-
failure_message: function(self, target, not) {
|
130
|
-
if (not)
|
131
|
-
return "Expected " + jspec.print_object(self) + " not to equal " + jspec.print_object(target);
|
132
|
-
else
|
133
|
-
return "Expected " + jspec.print_object(self) + ". Got " + jspec.print_object(target);
|
134
|
-
}
|
135
|
-
}
|
136
|
-
|
137
|
-
jspec.matchers["include"] = {
|
138
|
-
matches: function(self, target) {
|
139
|
-
if(Array.prototype.indexOf) return Array.prototype.indexOf.call(self, target) != -1;
|
140
|
-
else {
|
141
|
-
for(i=0,j=self.length;i<j;i++) {
|
142
|
-
if(target == self[i]) return true;
|
143
|
-
}
|
144
|
-
return false;
|
145
|
-
}
|
146
|
-
},
|
147
|
-
failure_message: function(self, target, not) {
|
148
|
-
return "Expected [" + jspec.print_object(self) + "] " + (not ? "not " : "") + "to include " + target;
|
149
|
-
}
|
150
|
-
}
|
151
|
-
|
152
|
-
jspec.matchers["exist"] = {
|
153
|
-
describe: function(self, target, not) {
|
154
|
-
return jspec.print_object(self) + " should " + (not ? "not " : "") + "exist."
|
155
|
-
},
|
156
|
-
matches: function(self, target) {
|
157
|
-
return !!this;
|
158
|
-
},
|
159
|
-
failure_message: function(self, target, not) {
|
160
|
-
return "Expected " + (not ? "not " : "") + "to exist, but was " + jspec.print_object(self);
|
161
|
-
}
|
162
|
-
}
|
163
|
-
|
164
|
-
jspec.matchers["be_instanceof"] = {
|
165
|
-
describe: function(self, target, not) {
|
166
|
-
return jspec.print_object(self) + " should " + (not ? "not " : "") +
|
167
|
-
"be an instance of " + jspec.print_object(target);
|
168
|
-
},
|
169
|
-
matches: function(self, target) {
|
170
|
-
return self instanceof target;
|
171
|
-
},
|
172
|
-
failure_message: function(self, target, not) {
|
173
|
-
return "Expected " + jspec.print_object(self) + (not ? "not " : "") +
|
174
|
-
"to be an instance of " + jspec.print_object(target) + ", but was " +
|
175
|
-
jspec.print_object(target.constructor);
|
176
|
-
}
|
177
|
-
}
|
178
|
-
|
179
|
-
jspec.matchers["have_constructor"] = {
|
180
|
-
describe: function(self, target, not) {
|
181
|
-
return jspec.print_object(self) + " should " + (not ? "not " : "") +
|
182
|
-
"have " + jspec.print_object(target) + " as its constructor";
|
183
|
-
},
|
184
|
-
matches: function(self, target) {
|
185
|
-
return self instanceof target;
|
186
|
-
},
|
187
|
-
failure_message: function(self, target, not) {
|
188
|
-
return "Expected " + jspec.print_object(self) + (not ? "not " : "") +
|
189
|
-
"to have " + jspec.print_object(target) + ", as its constructor but was " +
|
190
|
-
jspec.print_object(target.constructor);
|
191
|
-
}
|
192
|
-
}
|
data/test/jspec/simple_spec.js
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
Johnson.require("test/jspec/helper");
|
2
|
-
|
3
|
-
var setup = function() {
|
4
|
-
var fileLocation = "file://" + Ruby.File.expand_path(Ruby.Dir.pwd()) + "/test/assets/index.html";
|
5
|
-
window.location = fileLocation;
|
6
|
-
Johnson.waitForThreads();
|
7
|
-
}
|
8
|
-
|
9
|
-
setup();
|
10
|
-
|
11
|
-
jspec.describe("browser emulator", function() {
|
12
|
-
|
13
|
-
it("can set its location", function() {
|
14
|
-
var uriLocation = "file:" + Ruby.File.expand_path(Ruby.Dir.pwd()) + "/test/assets/index.html";
|
15
|
-
expect(window.location).to("==", uriLocation);
|
16
|
-
});
|
17
|
-
|
18
|
-
it("makes the document node a DOMDocument element", function() {
|
19
|
-
// setup();
|
20
|
-
expect(document).to("have_constructor", DOMDocument);
|
21
|
-
});
|
22
|
-
|
23
|
-
it("makes the document body a DOMNode", function() {
|
24
|
-
// setup();
|
25
|
-
expect(document.body).to("have_constructor", DOMNode);
|
26
|
-
})
|
27
|
-
|
28
|
-
it("makes childNodes a DOMNodeList", function() {
|
29
|
-
// setup();
|
30
|
-
expect(document.body.childNodes).to("have_constructor", DOMNodeList);
|
31
|
-
})
|
32
|
-
|
33
|
-
it("knows how to get an element by ID and get its correct tagName", function() {
|
34
|
-
// setup();
|
35
|
-
expect(document.getElementById('test').tagName).to("==", "HR");
|
36
|
-
})
|
37
|
-
|
38
|
-
it("sets the constructor of elements gotten via getElementsByTagName to DOMNode", function() {
|
39
|
-
// setup();
|
40
|
-
expect(document.getElementsByTagName("hr")[0]).to("have_constructor", DOMNode);
|
41
|
-
})
|
42
|
-
|
43
|
-
it("knows how to get the right tagName from elements gotten via getElementsByTagName", function() {
|
44
|
-
// setup();
|
45
|
-
expect(document.getElementsByTagName("hr")[0].tagName).to("==", "HR");
|
46
|
-
})
|
47
|
-
|
48
|
-
});
|
49
|
-
|
50
|
-
jspec.describe("jQuery Support", function() {
|
51
|
-
it("loads jQuery", function() {
|
52
|
-
Johnson.require("johnson/browser/jquery");
|
53
|
-
expect($).to("==", jQuery);
|
54
|
-
});
|
55
|
-
|
56
|
-
it("gets elements with $(tag)", function() {
|
57
|
-
expect($("hr").length).to("==", 2);
|
58
|
-
});
|
59
|
-
});
|
60
|
-
|
61
|
-
Johnson.require("johnson/browser/jquery");
|
62
|
-
jspec.describe("The jQuery file", function() {
|
63
|
-
it("loads the jQuery HTML files", function() {
|
64
|
-
window.location = "file:" + Ruby.File.expand_path(Ruby.Dir.pwd()) + "/test/assets/jquery_test.html";
|
65
|
-
Johnson.waitForThreads();
|
66
|
-
expect($("h1").length).to("==", 1);
|
67
|
-
});
|
68
|
-
});
|