Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
J
jquery
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
夏彬
jquery
Commits
aec0dad9
Commit
aec0dad9
authored
May 08, 2008
by
Jörn Zaefferer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
jquery core: reverted qunit introduction until build scripts are updated
parent
b6bb0d46
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
449 additions
and
4 deletions
+449
-4
testrunner.js
test/data/testrunner.js
+328
-0
testsuite.css
test/data/testsuite.css
+117
-0
index.html
test/index.html
+2
-2
offset.html
test/offset.html
+2
-2
No files found.
test/data/testrunner.js
0 → 100644
View file @
aec0dad9
var
_config
=
{
fixture
:
null
,
Test
:
[],
stats
:
{
all
:
0
,
bad
:
0
},
queue
:
[],
blocking
:
true
,
timeout
:
null
,
expected
:
null
,
currentModule
:
null
,
asyncTimeout
:
2
// seconds for async timeout
};
_config
.
filters
=
location
.
search
.
length
>
1
&&
//restrict modules/tests by get parameters
$
.
map
(
location
.
search
.
slice
(
1
).
split
(
'&'
),
decodeURIComponent
);
var
isLocal
=
!!
(
window
.
location
.
protocol
==
'file:'
);
$
(
function
()
{
$
(
'#userAgent'
).
html
(
navigator
.
userAgent
);
runTest
();
});
function
synchronize
(
callback
)
{
_config
.
queue
[
_config
.
queue
.
length
]
=
callback
;
if
(
!
_config
.
blocking
)
{
process
();
}
}
function
process
()
{
while
(
_config
.
queue
.
length
&&
!
_config
.
blocking
)
{
var
call
=
_config
.
queue
[
0
];
_config
.
queue
=
_config
.
queue
.
slice
(
1
);
call
();
}
}
function
stop
(
allowFailure
)
{
_config
.
blocking
=
true
;
var
handler
=
allowFailure
?
start
:
function
()
{
ok
(
false
,
"Test timed out"
);
start
();
};
// Disabled, caused too many random errors
//_config.timeout = setTimeout(handler, _config.asyncTimeout * 1000);
}
function
start
()
{
// A slight delay, to avoid any current callbacks
setTimeout
(
function
(){
if
(
_config
.
timeout
)
clearTimeout
(
_config
.
timeout
);
_config
.
blocking
=
false
;
process
();
},
13
);
}
function
validTest
(
name
)
{
var
filters
=
_config
.
filters
;
if
(
!
filters
)
return
true
;
var
i
=
filters
.
length
,
run
=
false
;
while
(
i
--
){
var
filter
=
filters
[
i
],
not
=
filter
.
charAt
(
0
)
==
'!'
;
if
(
not
)
filter
=
filter
.
slice
(
1
);
if
(
name
.
indexOf
(
filter
)
!=
-
1
)
return
!
not
;
if
(
not
)
run
=
true
;
}
return
run
;
}
function
runTest
()
{
_config
.
blocking
=
false
;
var
time
=
new
Date
();
_config
.
fixture
=
document
.
getElementById
(
'main'
).
innerHTML
;
_config
.
ajaxSettings
=
$
.
ajaxSettings
;
synchronize
(
function
()
{
time
=
new
Date
()
-
time
;
$
(
"<div>"
).
html
([
'<p class="result">Tests completed in '
,
time
,
' milliseconds.<br/>'
,
_config
.
stats
.
bad
,
' tests of '
,
_config
.
stats
.
all
,
' failed.</p>'
]
.
join
(
''
))
.
appendTo
(
"body"
);
$
(
"#banner"
).
addClass
(
_config
.
stats
.
bad
?
"fail"
:
"pass"
);
});
}
function
test
(
name
,
callback
,
nowait
)
{
if
(
_config
.
currentModule
)
name
=
_config
.
currentModule
+
" module: "
+
name
;
if
(
!
validTest
(
name
)
)
return
;
synchronize
(
function
()
{
_config
.
Test
=
[];
try
{
callback
();
}
catch
(
e
)
{
if
(
typeof
console
!=
"undefined"
&&
console
.
error
&&
console
.
warn
)
{
console
.
error
(
"Test "
+
name
+
" died, exception and test follows"
);
console
.
error
(
e
);
console
.
warn
(
callback
.
toString
());
}
_config
.
Test
.
push
(
[
false
,
"Died on test #"
+
(
_config
.
Test
.
length
+
1
)
+
": "
+
e
]
);
}
});
synchronize
(
function
()
{
reset
();
// don't output pause tests
if
(
nowait
)
return
;
if
(
_config
.
expected
&&
_config
.
expected
!=
_config
.
Test
.
length
)
{
_config
.
Test
.
push
(
[
false
,
"Expected "
+
_config
.
expected
+
" assertions, but "
+
_config
.
Test
.
length
+
" were run"
]
);
}
_config
.
expected
=
null
;
var
good
=
0
,
bad
=
0
;
var
ol
=
document
.
createElement
(
"ol"
);
ol
.
style
.
display
=
"none"
;
var
li
=
""
,
state
=
"pass"
;
for
(
var
i
=
0
;
i
<
_config
.
Test
.
length
;
i
++
)
{
var
li
=
document
.
createElement
(
"li"
);
li
.
className
=
_config
.
Test
[
i
][
0
]
?
"pass"
:
"fail"
;
li
.
innerHTML
=
_config
.
Test
[
i
][
1
];
ol
.
appendChild
(
li
);
_config
.
stats
.
all
++
;
if
(
!
_config
.
Test
[
i
][
0
]
)
{
state
=
"fail"
;
bad
++
;
_config
.
stats
.
bad
++
;
}
else
good
++
;
}
var
li
=
document
.
createElement
(
"li"
);
li
.
className
=
state
;
var
b
=
document
.
createElement
(
"strong"
);
b
.
innerHTML
=
name
+
" <b style='color:black;'>(<b class='fail'>"
+
bad
+
"</b>, <b class='pass'>"
+
good
+
"</b>, "
+
_config
.
Test
.
length
+
")</b>"
;
b
.
onclick
=
function
(){
var
n
=
this
.
nextSibling
;
if
(
jQuery
.
css
(
n
,
"display"
)
==
"none"
)
n
.
style
.
display
=
"block"
;
else
n
.
style
.
display
=
"none"
;
};
$
(
b
).
dblclick
(
function
(
event
)
{
var
target
=
jQuery
(
event
.
target
).
filter
(
"strong"
).
clone
();
if
(
target
.
length
)
{
target
.
children
().
remove
();
location
.
href
=
location
.
href
.
match
(
/^
(
.+
?)(\?
.*
)?
$/
)[
1
]
+
"?"
+
encodeURIComponent
(
$
.
trim
(
target
.
text
()));
}
});
li
.
appendChild
(
b
);
li
.
appendChild
(
ol
);
document
.
getElementById
(
"tests"
).
appendChild
(
li
);
});
}
// call on start of module test to prepend name to all tests
function
module
(
moduleName
)
{
_config
.
currentModule
=
moduleName
;
}
/**
* Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
*/
function
expect
(
asserts
)
{
_config
.
expected
=
asserts
;
}
/**
* Resets the test setup. Useful for tests that modify the DOM.
*/
function
reset
()
{
$
(
"#main"
).
html
(
_config
.
fixture
);
$
.
event
.
global
=
{};
$
.
ajaxSettings
=
$
.
extend
({},
_config
.
ajaxSettings
);
}
/**
* Asserts true.
* @example ok( $("a").size() > 5, "There must be at least 5 anchors" );
*/
function
ok
(
a
,
msg
)
{
_config
.
Test
.
push
(
[
!!
a
,
msg
]
);
}
/**
* Asserts that two arrays are the same
*/
function
isSet
(
a
,
b
,
msg
)
{
var
ret
=
true
;
if
(
a
&&
b
&&
a
.
length
!=
undefined
&&
a
.
length
==
b
.
length
)
{
for
(
var
i
=
0
;
i
<
a
.
length
;
i
++
)
if
(
a
[
i
]
!=
b
[
i
]
)
ret
=
false
;
}
else
ret
=
false
;
if
(
!
ret
)
_config
.
Test
.
push
(
[
ret
,
msg
+
" expected: "
+
serialArray
(
b
)
+
" result: "
+
serialArray
(
a
)
]
);
else
_config
.
Test
.
push
(
[
ret
,
msg
]
);
}
/**
* Asserts that two objects are equivalent
*/
function
isObj
(
a
,
b
,
msg
)
{
var
ret
=
true
;
if
(
a
&&
b
)
{
for
(
var
i
in
a
)
if
(
a
[
i
]
!=
b
[
i
]
)
ret
=
false
;
for
(
i
in
b
)
if
(
a
[
i
]
!=
b
[
i
]
)
ret
=
false
;
}
else
ret
=
false
;
_config
.
Test
.
push
(
[
ret
,
msg
]
);
}
function
serialArray
(
a
)
{
var
r
=
[];
if
(
a
&&
a
.
length
)
for
(
var
i
=
0
;
i
<
a
.
length
;
i
++
)
{
var
str
=
a
[
i
].
nodeName
;
if
(
str
)
{
str
=
str
.
toLowerCase
();
if
(
a
[
i
].
id
)
str
+=
"#"
+
a
[
i
].
id
;
}
else
str
=
a
[
i
];
r
.
push
(
str
);
}
return
"[ "
+
r
.
join
(
", "
)
+
" ]"
;
}
/**
* Returns an array of elements with the given IDs, eg.
* @example q("main", "foo", "bar")
* @result [<div id="main">, <span id="foo">, <input id="bar">]
*/
function
q
()
{
var
r
=
[];
for
(
var
i
=
0
;
i
<
arguments
.
length
;
i
++
)
r
.
push
(
document
.
getElementById
(
arguments
[
i
]
)
);
return
r
;
}
/**
* Asserts that a select matches the given IDs
* @example t("Check for something", "//[a]", ["foo", "baar"]);
* @result returns true if "//[a]" return two elements with the IDs 'foo' and 'baar'
*/
function
t
(
a
,
b
,
c
)
{
var
f
=
jQuery
(
b
);
var
s
=
""
;
for
(
var
i
=
0
;
i
<
f
.
length
;
i
++
)
s
+=
(
s
&&
","
)
+
'"'
+
f
[
i
].
id
+
'"'
;
isSet
(
f
,
q
.
apply
(
q
,
c
),
a
+
" ("
+
b
+
")"
);
}
/**
* Add random number to url to stop IE from caching
*
* @example url("data/test.html")
* @result "data/test.html?10538358428943"
*
* @example url("data/test.php?foo=bar")
* @result "data/test.php?foo=bar&10538358345554"
*/
function
url
(
value
)
{
return
value
+
(
/
\?
/
.
test
(
value
)
?
"&"
:
"?"
)
+
new
Date
().
getTime
()
+
""
+
parseInt
(
Math
.
random
()
*
100000
);
}
/**
* Checks that the first two arguments are equal, with an optional message.
* Prints out both expected and actual values on failure.
*
* Prefered to ok( expected == actual, message )
*
* @example equals( "Expected 2 characters.", v.formatMessage("Expected {0} characters.", 2) );
*
* @param Object actual
* @param Object expected
* @param String message (optional)
*/
function
equals
(
actual
,
expected
,
message
)
{
var
result
=
expected
==
actual
;
message
=
message
||
(
result
?
"okay"
:
"failed"
);
_config
.
Test
.
push
(
[
result
,
result
?
message
+
": "
+
expected
:
message
+
" expected: "
+
expected
+
" actual: "
+
actual
]
);
}
/**
* Trigger an event on an element.
*
* @example triggerEvent( document.body, "click" );
*
* @param DOMElement elem
* @param String type
*/
function
triggerEvent
(
elem
,
type
,
event
)
{
if
(
jQuery
.
browser
.
mozilla
||
jQuery
.
browser
.
opera
)
{
event
=
document
.
createEvent
(
"MouseEvents"
);
event
.
initMouseEvent
(
type
,
true
,
true
,
elem
.
ownerDocument
.
defaultView
,
0
,
0
,
0
,
0
,
0
,
false
,
false
,
false
,
false
,
0
,
null
);
elem
.
dispatchEvent
(
event
);
}
else
if
(
jQuery
.
browser
.
msie
)
{
elem
.
fireEvent
(
"on"
+
type
);
}
}
test/data/testsuite.css
0 → 100644
View file @
aec0dad9
body
,
div
,
h1
{
font-family
:
'trebuchet ms'
,
verdana
,
arial
;
margin
:
0
;
padding
:
0
}
body
{
font-size
:
10pt
;
}
h1
{
padding
:
15px
;
font-size
:
large
;
background-color
:
#06b
;
color
:
white
;
}
h2
{
padding
:
10px
;
background-color
:
#eee
;
color
:
black
;
margin
:
0
;
font-size
:
small
;
font-weight
:
normal
}
.pass
{
color
:
green
;
}
.fail
{
color
:
red
;
}
p
.result
{
margin-left
:
1em
;
}
#banner
{
height
:
2em
;
border-bottom
:
1px
solid
white
;
}
h2
.pass
{
background-color
:
green
;
}
h2
.fail
{
background-color
:
red
;
}
ol
#tests
>
li
>
strong
{
cursor
:
pointer
;
}
div
#fx-tests
h4
{
background
:
red
;
}
div
#fx-tests
h4
.pass
{
background
:
green
;
}
div
#fx-tests
div
.box
{
background
:
red
url(data/cow.jpg)
no-repeat
;
overflow
:
hidden
;
border
:
2px
solid
#000
;
}
div
#fx-tests
div
.overflow
{
overflow
:
visible
;
}
div
.inline
{
display
:
inline
;
}
div
.autoheight
{
height
:
auto
;
}
div
.autowidth
{
width
:
auto
;
}
div
.autoopacity
{
opacity
:
auto
;
}
div
.largewidth
{
width
:
100px
;
}
div
.largeheight
{
height
:
100px
;
}
div
.largeopacity
{
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Alpha
(
opacity
=
100
);
}
div
.medwidth
{
width
:
50px
;
}
div
.medheight
{
height
:
50px
;
}
div
.medopacity
{
opacity
:
0.5
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Alpha
(
opacity
=
50
);
}
div
.nowidth
{
width
:
0px
;
}
div
.noheight
{
height
:
0px
;
}
div
.noopacity
{
opacity
:
0
;
filter
:
progid
:
DXImageTransform
.
Microsoft
.
Alpha
(
opacity
=
0
);
}
div
.hidden
{
display
:
none
;
}
div
#fx-tests
div
.widewidth
{
background-repeat
:
repeat-x
;
}
div
#fx-tests
div
.wideheight
{
background-repeat
:
repeat-y
;
}
div
#fx-tests
div
.widewidth.wideheight
{
background-repeat
:
repeat
;
}
div
#fx-tests
div
.noback
{
background-image
:
none
;
}
div
.chain
,
div
.chain
div
{
width
:
100px
;
height
:
20px
;
position
:
relative
;
float
:
left
;
}
div
.chain
div
{
position
:
absolute
;
top
:
0px
;
left
:
0px
;
}
div
.chain.test
{
background
:
red
;
}
div
.chain.test
div
{
background
:
green
;
}
div
.chain.out
{
background
:
green
;
}
div
.chain.out
div
{
background
:
red
;
display
:
none
;
}
div
#show-tests
*
{
display
:
none
;
}
\ No newline at end of file
test/index.html
View file @
aec0dad9
...
...
@@ -3,10 +3,10 @@
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>
jQuery Test Suite
</title>
<link
rel=
"Stylesheet"
media=
"screen"
href=
"
../../qunit
/testsuite.css"
/>
<link
rel=
"Stylesheet"
media=
"screen"
href=
"
data
/testsuite.css"
/>
<script>
var
jQuery
=
"jQuery"
,
$
=
"$"
;
// For testing .noConflict()
</script>
<script
type=
"text/javascript"
src=
"../dist/jquery.js"
></script>
<script
type=
"text/javascript"
src=
"
../../qunit
/testrunner.js"
></script>
<script
type=
"text/javascript"
src=
"
data
/testrunner.js"
></script>
<script
type=
"text/javascript"
src=
"unit/core.js"
></script>
<script
type=
"text/javascript"
src=
"unit/dimensions.js"
></script>
<script
type=
"text/javascript"
src=
"unit/selector.js"
></script>
...
...
test/offset.html
View file @
aec0dad9
...
...
@@ -3,9 +3,9 @@
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<title>
jQuery Offset Test Suite
</title>
<link
rel=
"Stylesheet"
media=
"screen"
href=
"
../../qunit
/testsuite.css"
/>
<link
rel=
"Stylesheet"
media=
"screen"
href=
"
data
/testsuite.css"
/>
<script
type=
"text/javascript"
src=
"../dist/jquery.js"
></script>
<script
type=
"text/javascript"
src=
"
../../qunit
/testrunner.js"
></script>
<script
type=
"text/javascript"
src=
"
data
/testrunner.js"
></script>
<script
type=
"text/javascript"
src=
"unit/offset.js"
></script>
</head>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment