diff options
author | 2017-03-21 11:25:01 -0700 | |
---|---|---|
committer | 2017-03-21 11:25:01 -0700 | |
commit | b30685481679ca8a98328bbb98d872b577c7c39b (patch) | |
tree | e241d4389be20f34a2b0e2683f7b9d70269c5980 /src/node/test/common_test.js | |
parent | c8e6ac4bf32bee5b22c04541a03ab11517a51651 (diff) |
Improve ProtoBuf.js version heuristic, add tests for oneof decoding
Diffstat (limited to 'src/node/test/common_test.js')
-rw-r--r-- | src/node/test/common_test.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/node/test/common_test.js b/src/node/test/common_test.js index f9efd8231d..4b7a8c2253 100644 --- a/src/node/test/common_test.js +++ b/src/node/test/common_test.js @@ -155,3 +155,27 @@ describe('Proto message bytes serialize and deserialize', function() { assert.deepEqual(unpackedDeserialized, expectedDeserialize); }); }); +describe('Proto message oneof serialize and deserialize', function() { + var oneofSerialize = serializeCls(messages_proto.OneOfValues); + var oneofDeserialize = deserializeCls( + messages_proto.OneOfValues, default_options); + it('Should have idempotent round trips', function() { + var test_message = {oneof_choice: 'int_choice', int_choice: 5}; + var serialized1 = oneofSerialize(test_message); + var deserialized1 = oneofDeserialize(serialized1); + assert.equal(deserialized1.int_choice, 5); + var serialized2 = oneofSerialize(deserialized1); + var deserialized2 = oneofDeserialize(serialized2); + assert.deepEqual(deserialized1, deserialized2); + }); + it('Should emit a property indicating which field was chosen', function() { + var test_message1 = {oneof_choice: 'int_choice', int_choice: 5}; + var serialized1 = oneofSerialize(test_message1); + var deserialized1 = oneofDeserialize(serialized1); + assert.equal(deserialized1.oneof_choice, 'int_choice'); + var test_message2 = {oneof_choice: 'string_choice', string_choice: 'abc'}; + var serialized2 = oneofSerialize(test_message2); + var deserialized2 = oneofDeserialize(serialized2); + assert.equal(deserialized2.oneof_choice, 'int_choice'); + }); +}); |