mirror of
https://github.com/jashkenas/coffeescript.git
synced 2022-11-09 12:23:24 -05:00
115 lines
2.5 KiB
HTML
115 lines
2.5 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
|
<title>CoffeeScript Test Suite</title>
|
|
<script src="../extras/coffee-script.js"></script>
|
|
<style>
|
|
body {
|
|
margin: 30px;
|
|
font-family: Menlo, Monaco, monospace;
|
|
}
|
|
h1 {
|
|
font-size: 20px;
|
|
}
|
|
#stdout {
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<h1>CoffeeScript Test Suite</h1>
|
|
<pre id="stdout"></pre>
|
|
|
|
<script type="text/coffeescript">
|
|
|
|
stdout = document.getElementById 'stdout'
|
|
start = new Date
|
|
success = total = done = failed = 0
|
|
|
|
say = (msg, yay) ->
|
|
div = document.createElement 'div'
|
|
div.appendChild document.createTextNode msg
|
|
div.style.color = if yay then 'green' else 'red'
|
|
stdout.appendChild div
|
|
msg
|
|
|
|
@test = (desc, fn) ->
|
|
fn()
|
|
|
|
@ok = (good, msg) ->
|
|
++total
|
|
if good then ++success else throw Error say msg
|
|
|
|
@eq = (x, y, msg) -> ok x is y, msg ? x + ' !== ' + y
|
|
|
|
window.arrayEq = (a, b) ->
|
|
if a is b
|
|
# 0 isnt -0
|
|
a isnt 0 or 1/a is 1/b
|
|
else if a instanceof Array and b instanceof Array
|
|
return no unless a.length is b.length
|
|
return no for el, idx in a when not arrayEq el, b[idx]
|
|
yes
|
|
else
|
|
# NaN is NaN
|
|
a isnt a and b isnt b
|
|
|
|
window.doesNotThrow = (fn) ->
|
|
fn()
|
|
ok true
|
|
|
|
@arrayEqual = (a, b, msg) -> ok arrayEq(a,b), msg
|
|
|
|
@throws = (fun, err, msg) ->
|
|
try fun(); throw new String 'No Error'
|
|
catch e then eq e, err
|
|
|
|
CoffeeScript.run = (code, cb) ->
|
|
try Function(CoffeeScript.compile code, wrap: no)()
|
|
catch e then cb(); throw e
|
|
cb yes
|
|
|
|
run = (name) ->
|
|
CoffeeScript.load "#{name}.coffee", (yay) ->
|
|
say "#{ if yay then '\u2714' else '\u3000' } #{name}", yay
|
|
++failed unless yay
|
|
fin() if ++done is names.length
|
|
|
|
fin = ->
|
|
yay = success is total and not failed
|
|
sec = (new Date - start) / 1000
|
|
msg = "passed #{success} tests in #{ sec.toFixed 2 } seconds"
|
|
msg = "failed #{ total - success } tests and #{msg}" unless yay
|
|
say msg, yay
|
|
|
|
run name for name in names = [
|
|
'arguments'
|
|
'assignment'
|
|
'break'
|
|
'comments'
|
|
'exception_handling'
|
|
'helpers'
|
|
'operators'
|
|
'regular_expressions'
|
|
'test_chaining'
|
|
'test_classes'
|
|
'test_compilation'
|
|
'test_comprehensions'
|
|
'test_existence'
|
|
'test_functions'
|
|
'test_heredocs'
|
|
'conditionals'
|
|
'test_literals'
|
|
'test_pattern_matching'
|
|
'ranges_slices_and_splices'
|
|
'test_returns'
|
|
'test_splats'
|
|
'test_strings'
|
|
'test_switch'
|
|
'test_while'
|
|
]
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|