/test/test.html
http://github.com/jashkenas/coffee-script · HTML · 120 lines · 105 code · 15 blank · 0 comment · 0 complexity · 1a7c8bf3f99260d6f5acbfacfd43e92d MD5 · raw file
- <!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) ->
- div = document.createElement 'div'
- div.appendChild document.createTextNode msg
- 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
- arrayEqual = (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
- @doesNotThrow = (fn) ->
- fn()
- ok true
- @arrayEq = (a, b, msg) -> ok arrayEqual(a,b), msg
- @throws = (fun, err, msg) ->
- try
- fun()
- catch e
- if err
- eq e, err
- else
- ok yes
- return
- ok no
- run = (name) ->
- CoffeeScript.load "#{name}.coffee", ->
- say '\u2714 ' + name
- 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 = [
- 'arrays'
- 'assignment'
- 'booleans'
- 'classes'
- 'cluster'
- 'comments'
- 'compilation'
- 'comprehensions'
- 'control_flow'
- 'exception_handling'
- 'formatting'
- 'function_invocation'
- 'functions'
- 'helpers'
- 'importing'
- 'interpolation'
- 'javascript_literals'
- 'numbers'
- 'objects'
- 'operators'
- 'option_parser'
- 'ranges'
- 'regexps'
- 'scope'
- 'slicing_and_splicing'
- 'soaks'
- 'strings'
- ]
- # allow utf-8 chars in comments
- # 智に働けば角が立つ、情に掉させば流される。
- </script>
- </body>
- </html>