Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0c99491

Browse files
author
CLR
committedJan 26, 2009
-- let's try to set up a qUnit testing environment --
1 parent 100c0e5 commit 0c99491

8 files changed

+1271
-0
lines changed
 

‎lib/jquery-1.3.1.min.js

+19
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎lib/testrunner.js

+790
Large diffs are not rendered by default.

‎lib/testsuite.css

+120
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
body, div, h1 { font-family: 'trebuchet ms', verdana, arial; margin: 0; padding: 0 }
2+
body {font-size: 10pt; }
3+
h1 { padding: 15px; font-size: large; background-color: #06b; color: white; }
4+
h1 a { color: white; }
5+
h2 { padding: 10px; background-color: #eee; color: black; margin: 0; font-size: small; font-weight: normal }
6+
7+
.pass { color: green; }
8+
.fail { color: red; }
9+
p.result { margin-left: 1em; }
10+
11+
#banner { height: 2em; border-bottom: 1px solid white; }
12+
h2.pass { background-color: green; }
13+
h2.fail { background-color: red; }
14+
15+
div.testrunner-toolbar { background: #eee; border-top: 1px solid black; padding: 10px; }
16+
17+
ol#tests > li > strong { cursor:pointer; }
18+
19+
div#fx-tests h4 {
20+
background: red;
21+
}
22+
23+
div#fx-tests h4.pass {
24+
background: green;
25+
}
26+
27+
div#fx-tests div.box {
28+
background: red url(data/cow.jpg) no-repeat;
29+
overflow: hidden;
30+
border: 2px solid #000;
31+
}
32+
33+
div#fx-tests div.overflow {
34+
overflow: visible;
35+
}
36+
37+
div.inline {
38+
display: inline;
39+
}
40+
41+
div.autoheight {
42+
height: auto;
43+
}
44+
45+
div.autowidth {
46+
width: auto;
47+
}
48+
49+
div.autoopacity {
50+
opacity: auto;
51+
}
52+
53+
div.largewidth {
54+
width: 100px;
55+
}
56+
57+
div.largeheight {
58+
height: 100px;
59+
}
60+
61+
div.largeopacity {
62+
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
63+
}
64+
65+
div.medwidth {
66+
width: 50px;
67+
}
68+
69+
div.medheight {
70+
height: 50px;
71+
}
72+
73+
div.medopacity {
74+
opacity: 0.5;
75+
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=50);
76+
}
77+
78+
div.nowidth {
79+
width: 0px;
80+
}
81+
82+
div.noheight {
83+
height: 0px;
84+
}
85+
86+
div.noopacity {
87+
opacity: 0;
88+
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
89+
}
90+
91+
div.hidden {
92+
display: none;
93+
}
94+
95+
div#fx-tests div.widewidth {
96+
background-repeat: repeat-x;
97+
}
98+
99+
div#fx-tests div.wideheight {
100+
background-repeat: repeat-y;
101+
}
102+
103+
div#fx-tests div.widewidth.wideheight {
104+
background-repeat: repeat;
105+
}
106+
107+
div#fx-tests div.noback {
108+
background-image: none;
109+
}
110+
111+
div.chain, div.chain div { width: 100px; height: 20px; position: relative; float: left; }
112+
div.chain div { position: absolute; top: 0px; left: 0px; }
113+
114+
div.chain.test { background: red; }
115+
div.chain.test div { background: green; }
116+
117+
div.chain.out { background: green; }
118+
div.chain.out div { background: red; display: none; }
119+
120+
div#show-tests * { display: none; }

‎run.html~

Whitespace-only changes.

‎test/engine_test.html

+139
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" >
3+
<head>
4+
<title>Sassij Engine Tests</title>
5+
<script language="javascript" src="../lib/jquery-1.3.1.min.js" type="text/javascript"></script>
6+
<script language="javascript" src="../lib/testrunner.js" type="text/javascript"></script>
7+
<link media="screen" href="../lib/testsuite.css" type="text/css" rel="stylesheet"/>
8+
</head>
9+
<body>
10+
<script language="javascript" type="text/javascript">
11+
12+
/*
13+
* A map of erroneous Sass documents to the error messages they should produce.
14+
* The error messages may be arrays;
15+
* if so, the second element should be the line number that should be reported for the error.
16+
* If this isn't provided, the tests will assume the line number should be the last line of the document.
17+
*/
18+
EXCEPTION_MAP = {
19+
"!a = 1 + " => 'Expected expression, was end of text.',
20+
"!a = 1 + 2 +" => 'Expected expression, was end of text.',
21+
"!a = 1 + 2 + %" => 'Expected expression, was mod token.',
22+
"!a = foo(\"bar\"" => 'Expected rparen token, was end of text.',
23+
"!a = 1 }" => 'Unexpected right_bracket token.',
24+
"!a = 1 }foo\"" => 'Unexpected right_bracket token.',
25+
"!a = #aaa - \"a\"" => 'Undefined operation: "#aaaaaa minus a".',
26+
"!a = #aaa / \"a\"" => 'Undefined operation: "#aaaaaa div a".',
27+
"!a = #aaa * \"a\"" => 'Undefined operation: "#aaaaaa times a".',
28+
"!a = #aaa % \"a\"" => 'Undefined operation: "#aaaaaa mod a".',
29+
"!a = 1 - \"a\"" => 'Undefined operation: "1 minus a".',
30+
"!a = 1 * \"a\"" => 'Undefined operation: "1 times a".',
31+
"!a = 1 / \"a\"" => 'Undefined operation: "1 div a".',
32+
"!a = 1 % \"a\"" => 'Undefined operation: "1 mod a".',
33+
":" => 'Invalid attribute: ":".',
34+
": a" => 'Invalid attribute: ": a".',
35+
":= a" => 'Invalid attribute: ":= a".',
36+
"a\n :b" => 'Invalid attribute: ":b ".',
37+
"a\n :b: c" => 'Invalid attribute: ":b: c".',
38+
"a\n :b:c d" => 'Invalid attribute: ":b:c d".',
39+
"a\n :b=c d" => 'Invalid attribute: ":b=c d".',
40+
"a\n :b c;" => 'Invalid attribute: ":b c;" (This isn\'t CSS!).',
41+
"a\n b : c" => 'Invalid attribute: "b : c".',
42+
"a\n b=c: d" => 'Invalid attribute: "b=c: d".',
43+
":a" => 'Attributes aren\'t allowed at the root of a document.',
44+
"!" => 'Invalid variable: "!".',
45+
"!a" => 'Invalid variable: "!a".',
46+
"! a" => 'Invalid variable: "! a".',
47+
"!a b" => 'Invalid variable: "!a b".',
48+
"!a = 1b + 2c" => "Incompatible units: 'c' and 'b'.",
49+
"a\n :b= 1b * 2c" => "2b*c isn't a valid CSS value.",
50+
"a\n :b= 1b % 2c" => "Cannot modulo by a number with units: 2c.",
51+
"!a = 2px + #ccc" => "Cannot add a number with units (2px) to a color (#cccccc).",
52+
"!a = #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).",
53+
"& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
54+
"a\n :b\n c" => "Illegal nesting: Only attributes may be nested beneath attributes.",
55+
"a,\n :b c" => ["Rules can\'t end in commas.", 1],
56+
"a," => "Rules can\'t end in commas.",
57+
"a,\n!b = 1" => ["Rules can\'t end in commas.", 1],
58+
"!a = b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
59+
"@import foo.sass" => "File to import not found or unreadable: foo.sass.",
60+
"@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
61+
"foo\n @import templates/basic" => "Import directives may only be used at the root of a document.",
62+
%Q{!foo = "bar" "baz" !} => %Q{Syntax error in '"bar" "baz" !' at character 20.},
63+
"=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.",
64+
".bar\n =foo\n :color red\n" => ["Mixins may only be defined at the root of a document.", 2],
65+
"=foo\n :color red\n.bar\n +foo\n :color red" => "Illegal nesting: Nothing may be nested beneath mixin directives.",
66+
" a\n b: c" => ["Indenting at the beginning of the document is illegal.", 1],
67+
" \n \n\t\n a\n b: c" => ["Indenting at the beginning of the document is illegal.", 4],
68+
"a\n b: c\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3],
69+
"a\n b: c\na\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4],
70+
"a\n\t\tb: c\n\tb: c" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3],
71+
"a\n b: c\n b: c" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3],
72+
"a\n b: c\n a\n d: e" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4],
73+
"a\n b: c\na\n d: e" => ["The line was indented 2 levels deeper than the previous line.", 4],
74+
"a\n b: c\n a\n d: e" => ["The line was indented 3 levels deeper than the previous line.", 4],
75+
"a\n \tb: c" => ["Indentation can't use both tabs and spaces.", 2],
76+
"=a(" => 'Invalid mixin "a(".',
77+
"=a(b)" => 'Mixin argument "b" must begin with an exclamation point (!).',
78+
"=a(,)" => "Mixin arguments can't be empty.",
79+
"=a(!)" => "Mixin arguments can't be empty.",
80+
"=a(!foo bar)" => "Invalid variable \"!foo bar\".",
81+
"=foo\n bar: baz\n+foo" => ["Attributes aren't allowed at the root of a document.", 2],
82+
"a-\#{!b\n c: d" => ["Expected right_bracket token, was end of text.", 1],
83+
"=a(!b = 1, !c)" => "Required arguments must not follow optional arguments \"!c\".",
84+
"=a(!b = 1)\n :a= !b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.",
85+
"=a(!b)\n :a= !b\ndiv\n +a" => "Mixin a is missing parameter !b.",
86+
"@else\n a\n b: c" => ["@else must come after @if.", 1],
87+
"@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if <expr>'.",
88+
"@if false\n@else if " => "Invalid else directive '@else if': expected 'if <expr>'.",
89+
"a\n !b = 12\nc\n d = !b" => 'Undefined variable: "!b".',
90+
"=foo\n !b = 12\nc\n +foo\n d = !b" => 'Undefined variable: "!b".',
91+
'@for !a from 1 to "foo"' => '"foo" is not an integer.',
92+
'@for !a from 1 to 1.232323' => '1.232 is not an integer.',
93+
'@if' => "Invalid if directive '@if': expected expression.",
94+
'@while' => "Invalid while directive '@while': expected expression.",
95+
'@debug' => "Invalid debug directive '@debug': expected expression.",
96+
// Regression tests
97+
"a\n b:\n c\n d" => [ "Illegal nesting: Only attributes may be nested beneath attributes.", 3 ],
98+
"& foo\n bar: baz\n blat: bang" => [ "Base-level rules cannot contain the parent-selector-referencing character '&'.", 1 ],
99+
"a\n b: c\n& foo\n bar: baz\n blat: bang" => [ "Base-level rules cannot contain the parent-selector-referencing character '&'.", 3 ],
100+
}
101+
102+
qUnitTesting( function( config ){
103+
104+
config.beforeEach = function(){
105+
}
106+
107+
config.afterEach = function(){
108+
}
109+
110+
module( "Sassij Engine Tests");
111+
112+
test( "should show the correct Exception when invalid syntax is supplied to the renderer", function(){
113+
$( EXCEPTION_MAP ).each( function( key, value ) {
114+
try {
115+
Sassij.Engine.new( key ).render();
116+
} catch( error ) {
117+
equals( error, value, "Line: " + key );
118+
}
119+
})
120+
121+
})
122+
123+
test( "should render css import command", function(){
124+
equals( render( "@import url(./fonts.css) screen", "@import url(./fonts.css) screen;" ) );
125+
equals( render( "@import \"./fonts.css\" screen", "@import \"./fonts.css\" screen;" ) );
126+
})
127+
128+
});
129+
130+
</script>
131+
132+
<h1>My Foo Tests</h1>
133+
<h2 id="banner"></h2>
134+
<ol id="tests"></ol>
135+
<div id="results"></div>
136+
<div id="main"></div>
137+
138+
</body>
139+
</html>

‎test/engine_test.html~

+133
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" >
3+
<head>
4+
<title>Sassij Engine Tests</title>
5+
<script language="javascript" src="../lib/jquery-1.3.1.min.js" type="text/javascript"></script>
6+
<script language="javascript" src="../lib/testrunner.js" type="text/javascript"></script>
7+
<link media="screen" href="../lib/testsuite.css" type="text/css" rel="stylesheet"/>
8+
</head>
9+
<body>
10+
<script language="javascript" type="text/javascript">
11+
12+
/*
13+
* A map of erroneous Sass documents to the error messages they should produce.
14+
* The error messages may be arrays;
15+
* if so, the second element should be the line number that should be reported for the error.
16+
* If this isn't provided, the tests will assume the line number should be the last line of the document.
17+
*/
18+
EXCEPTION_MAP = {
19+
"!a = 1 + " => 'Expected expression, was end of text.',
20+
"!a = 1 + 2 +" => 'Expected expression, was end of text.',
21+
"!a = 1 + 2 + %" => 'Expected expression, was mod token.',
22+
"!a = foo(\"bar\"" => 'Expected rparen token, was end of text.',
23+
"!a = 1 }" => 'Unexpected right_bracket token.',
24+
"!a = 1 }foo\"" => 'Unexpected right_bracket token.',
25+
"!a = #aaa - \"a\"" => 'Undefined operation: "#aaaaaa minus a".',
26+
"!a = #aaa / \"a\"" => 'Undefined operation: "#aaaaaa div a".',
27+
"!a = #aaa * \"a\"" => 'Undefined operation: "#aaaaaa times a".',
28+
"!a = #aaa % \"a\"" => 'Undefined operation: "#aaaaaa mod a".',
29+
"!a = 1 - \"a\"" => 'Undefined operation: "1 minus a".',
30+
"!a = 1 * \"a\"" => 'Undefined operation: "1 times a".',
31+
"!a = 1 / \"a\"" => 'Undefined operation: "1 div a".',
32+
"!a = 1 % \"a\"" => 'Undefined operation: "1 mod a".',
33+
":" => 'Invalid attribute: ":".',
34+
": a" => 'Invalid attribute: ": a".',
35+
":= a" => 'Invalid attribute: ":= a".',
36+
"a\n :b" => 'Invalid attribute: ":b ".',
37+
"a\n :b: c" => 'Invalid attribute: ":b: c".',
38+
"a\n :b:c d" => 'Invalid attribute: ":b:c d".',
39+
"a\n :b=c d" => 'Invalid attribute: ":b=c d".',
40+
"a\n :b c;" => 'Invalid attribute: ":b c;" (This isn\'t CSS!).',
41+
"a\n b : c" => 'Invalid attribute: "b : c".',
42+
"a\n b=c: d" => 'Invalid attribute: "b=c: d".',
43+
":a" => 'Attributes aren\'t allowed at the root of a document.',
44+
"!" => 'Invalid variable: "!".',
45+
"!a" => 'Invalid variable: "!a".',
46+
"! a" => 'Invalid variable: "! a".',
47+
"!a b" => 'Invalid variable: "!a b".',
48+
"!a = 1b + 2c" => "Incompatible units: 'c' and 'b'.",
49+
"a\n :b= 1b * 2c" => "2b*c isn't a valid CSS value.",
50+
"a\n :b= 1b % 2c" => "Cannot modulo by a number with units: 2c.",
51+
"!a = 2px + #ccc" => "Cannot add a number with units (2px) to a color (#cccccc).",
52+
"!a = #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).",
53+
"& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1],
54+
"a\n :b\n c" => "Illegal nesting: Only attributes may be nested beneath attributes.",
55+
"a,\n :b c" => ["Rules can\'t end in commas.", 1],
56+
"a," => "Rules can\'t end in commas.",
57+
"a,\n!b = 1" => ["Rules can\'t end in commas.", 1],
58+
"!a = b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.",
59+
"@import foo.sass" => "File to import not found or unreadable: foo.sass.",
60+
"@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.",
61+
"foo\n @import templates/basic" => "Import directives may only be used at the root of a document.",
62+
%Q{!foo = "bar" "baz" !} => %Q{Syntax error in '"bar" "baz" !' at character 20.},
63+
"=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.",
64+
".bar\n =foo\n :color red\n" => ["Mixins may only be defined at the root of a document.", 2],
65+
"=foo\n :color red\n.bar\n +foo\n :color red" => "Illegal nesting: Nothing may be nested beneath mixin directives.",
66+
" a\n b: c" => ["Indenting at the beginning of the document is illegal.", 1],
67+
" \n \n\t\n a\n b: c" => ["Indenting at the beginning of the document is illegal.", 4],
68+
"a\n b: c\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3],
69+
"a\n b: c\na\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4],
70+
"a\n\t\tb: c\n\tb: c" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3],
71+
"a\n b: c\n b: c" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3],
72+
"a\n b: c\n a\n d: e" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4],
73+
"a\n b: c\na\n d: e" => ["The line was indented 2 levels deeper than the previous line.", 4],
74+
"a\n b: c\n a\n d: e" => ["The line was indented 3 levels deeper than the previous line.", 4],
75+
"a\n \tb: c" => ["Indentation can't use both tabs and spaces.", 2],
76+
"=a(" => 'Invalid mixin "a(".',
77+
"=a(b)" => 'Mixin argument "b" must begin with an exclamation point (!).',
78+
"=a(,)" => "Mixin arguments can't be empty.",
79+
"=a(!)" => "Mixin arguments can't be empty.",
80+
"=a(!foo bar)" => "Invalid variable \"!foo bar\".",
81+
"=foo\n bar: baz\n+foo" => ["Attributes aren't allowed at the root of a document.", 2],
82+
"a-\#{!b\n c: d" => ["Expected right_bracket token, was end of text.", 1],
83+
"=a(!b = 1, !c)" => "Required arguments must not follow optional arguments \"!c\".",
84+
"=a(!b = 1)\n :a= !b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.",
85+
"=a(!b)\n :a= !b\ndiv\n +a" => "Mixin a is missing parameter !b.",
86+
"@else\n a\n b: c" => ["@else must come after @if.", 1],
87+
"@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if <expr>'.",
88+
"@if false\n@else if " => "Invalid else directive '@else if': expected 'if <expr>'.",
89+
"a\n !b = 12\nc\n d = !b" => 'Undefined variable: "!b".',
90+
"=foo\n !b = 12\nc\n +foo\n d = !b" => 'Undefined variable: "!b".',
91+
'@for !a from 1 to "foo"' => '"foo" is not an integer.',
92+
'@for !a from 1 to 1.232323' => '1.232 is not an integer.',
93+
'@if' => "Invalid if directive '@if': expected expression.",
94+
'@while' => "Invalid while directive '@while': expected expression.",
95+
'@debug' => "Invalid debug directive '@debug': expected expression.",
96+
// Regression tests
97+
"a\n b:\n c\n d" => [ "Illegal nesting: Only attributes may be nested beneath attributes.", 3 ],
98+
"& foo\n bar: baz\n blat: bang" => [ "Base-level rules cannot contain the parent-selector-referencing character '&'.", 1 ],
99+
"a\n b: c\n& foo\n bar: baz\n blat: bang" => [ "Base-level rules cannot contain the parent-selector-referencing character '&'.", 3 ],
100+
}
101+
102+
qUnitTesting( function( config ){
103+
104+
config.beforeEach = function(){
105+
}
106+
107+
config.afterEach = function(){
108+
}
109+
110+
module( "Sassij Engine Tests");
111+
112+
test( "should show the correct Exception when invalid syntax is supplied to the renderer", function(){
113+
$( EXCEPTION_MAP ).each( function( key, value ) {
114+
try {
115+
Sassij.Engine.new( key ).render();
116+
} catch( error ) {
117+
equals( error, value, "Line: " + key );
118+
}
119+
})
120+
121+
})
122+
});
123+
124+
</script>
125+
126+
<h1>My Foo Tests</h1>
127+
<h2 id="banner"></h2>
128+
<ol id="tests"></ol>
129+
<div id="results"></div>
130+
<div id="main"></div>
131+
132+
</body>
133+
</html>

‎tests.html

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" >
3+
<head>
4+
<title>Sassij Tests</title>
5+
<script language="javascript" src="lib/jquery-1.3.1.min.js" type="text/javascript"></script>
6+
<script language="javascript" src="lib/testrunner.js" type="text/javascript"></script>
7+
<!-- add a script reference to your library here -->
8+
<link media="screen" href="lib/testsuite.css" type="text/css" rel="stylesheet"/>
9+
</head>
10+
<body>
11+
<script language="javascript" type="text/javascript">
12+
13+
qUnitTesting(function(config){
14+
15+
config.beforeEach = function(){
16+
}
17+
18+
config.afterEach = function(){
19+
}
20+
21+
//TODO: Modules and tests go here
22+
});
23+
24+
</script>
25+
26+
<h1>My Foo Tests</h1>
27+
<h2 id="banner"></h2>
28+
<ol id="tests"></ol>
29+
<div id="results"></div>
30+
<div id="main"></div>
31+
32+
<!-- Any HTML you may require for your tests to work properly -->
33+
34+
</body>
35+
</html>

‎tests.html~

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml" >
3+
<head>
4+
<title>Sassij Tests</title>
5+
<script language="javascript" src="lib/jquery-1.3.1.min.js" type="text/javascript"></script>
6+
<script language="javascript" src="lib/testrunner.js" type="text/javascript"></script>
7+
<!-- add a script reference to your library here -->
8+
<link media="screen" href="lib/testsuite.css" type="text/css" rel="stylesheet"/>
9+
</head>
10+
<body>
11+
<script language="javascript" type="text/javascript">
12+
13+
qUnitTesting(function(config){
14+
15+
config.beforeEach = function(){
16+
}
17+
18+
config.afterEach = function(){
19+
}
20+
21+
//TODO: Modules and tests go here
22+
});
23+
24+
</script>
25+
26+
<h1>My Foo Tests</h1>
27+
<h2 id="banner"></h2>
28+
<ol id="tests"></ol>
29+
<div id="results"></div>
30+
<div id="main"></div>
31+
32+
<!-- Any HTML you may require for your tests to work properly -->
33+
34+
</body>
35+
</html>

0 commit comments

Comments
 (0)
Please sign in to comment.