Index: mojo/bindings/js/codec_unittests.js |
diff --git a/mojo/bindings/js/codec_unittests.js b/mojo/bindings/js/codec_unittests.js |
index b20dbcb47a37032fb974812065017d448eb260ce..09e5351a7af1fbf2dc376e0fdcc270a9a6f1e6df 100644 |
--- a/mojo/bindings/js/codec_unittests.js |
+++ b/mojo/bindings/js/codec_unittests.js |
@@ -9,6 +9,7 @@ define([ |
], function(expect, codec, sample) { |
testBar(); |
testFoo(); |
+ testTypes(); |
testAlign(); |
testUtf8(); |
this.result = "PASS"; |
@@ -133,6 +134,34 @@ define([ |
expect(foo2.source).toEqual(foo.source); |
} |
+ function testTypes() { |
+ function encodeDecode(cls, input, expectedResult, encodedSize) { |
+ var messageName = 42; |
+ var payloadSize = encodedSize || cls.encodedSize; |
+ |
+ var builder = new codec.MessageBuilder(messageName, payloadSize); |
+ builder.encodeStruct(cls, input) |
+ var message = builder.finish(); |
+ |
+ var reader = new codec.MessageReader(message); |
+ expect(reader.payloadSize).toBe(payloadSize); |
+ expect(reader.messageName).toBe(messageName); |
+ var result = reader.decodeStruct(cls); |
+ expect(result).toEqual(expectedResult); |
+ } |
+ encodeDecode(codec.String, "banana", "banana", 24); |
+ encodeDecode(codec.Int8, -1, -1); |
+ encodeDecode(codec.Int8, 0xff, -1); |
+ encodeDecode(codec.Int16, -1, -1); |
+ encodeDecode(codec.Int16, 0xff, 0xff); |
+ encodeDecode(codec.Int16, 0xffff, -1); |
+ encodeDecode(codec.Int32, -1, -1); |
+ encodeDecode(codec.Int32, 0xffff, 0xffff); |
+ encodeDecode(codec.Int32, 0xffffffff, -1); |
+ encodeDecode(codec.Float, 1.0, 1.0); |
+ encodeDecode(codec.Double, 1.0, 1.0); |
+ } |
+ |
function testAlign() { |
var aligned = [ |
0, // 0 |