diff resources/osc/node_modules/binpack/tests/test-binpack.coffee @ 271:fb9c28a4676b prerelease

Added osc example project and node script for testing
author Liam Donovan <l.b.donovan@qmul.ac.uk>
date Tue, 17 May 2016 16:01:06 +0100
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/resources/osc/node_modules/binpack/tests/test-binpack.coffee	Tue May 17 16:01:06 2016 +0100
@@ -0,0 +1,64 @@
+vows = require "vows"
+assert = require "assert"
+binpack = require "../index"
+
+# do a round trip
+okayForOptions = (num, options) ->
+    return false if options.size? and Math.abs(num) > options.size?
+    return false if num < 0 and options.unsigned
+    true
+
+roundTrip = (type, options) ->
+    works : (num) ->
+        return null if not okayForOptions(num, options)
+        assert.strictEqual (binpack["unpack" + type] binpack["pack" + type] num), num
+
+    "fails plus 1.1" : (num) ->
+        return null if not okayForOptions(num, options)
+        assert.notStrictEqual (binpack["unpack" + type] binpack["pack" + type] num + 1.1), num
+
+    "works little endian" : (num) ->
+        return null if options.onebyte
+        return null if not okayForOptions(num, options)
+        assert.strictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "little"), "little"), num
+
+    "works big endian" : (num) ->
+        return null if options.onebyte
+        return null if not okayForOptions(num, options)
+        assert.strictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "big"), "big"), num
+
+    "fails mismatched" : (num) ->
+        return null if not okayForOptions(num, options)
+        return null if num is 0
+        return null if options.onebyte
+        assert.notStrictEqual (binpack["unpack" + type] (binpack["pack" + type] num, "little"), "big"), num
+
+types =
+    "Float32" : {}
+    "Float64" : {}
+    "Int8" : {onebyte : true, size : 128}
+    "Int16" : {size : 32768}
+    "Int32" : {}
+    "Int64" : {}
+    "UInt8" : {unsigned : true, onebyte : true, size:255}
+    "UInt16" : {unsigned : true, size : 65535}
+    "UInt32" : {unsigned : true}
+    "UInt64" : {unsigned : true}
+
+# round trip testing makes up the core of the test.
+roundTripTests = (num) ->
+    tests = {topic : num}
+    for type, options of types
+        tests[type + "round trip test"] = roundTrip type, options
+    tests
+
+vows.describe("binpack").addBatch(
+    # choose a bunch of random numbers
+    'roundTrips for 0' : roundTripTests 0
+    'roundTrips for 12' : roundTripTests 12
+    'roundTrips for -18' : roundTripTests -18
+    'roundTrips for 129' : roundTripTests 129
+    'roundTrips for -400' : roundTripTests -400
+    'roundTrips for 60000' : roundTripTests 60000
+    'roundTrips for 1234567' : roundTripTests 1234567
+).export module