diff options
Diffstat (limited to 'js/binary/reader_test.js')
-rw-r--r-- | js/binary/reader_test.js | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/js/binary/reader_test.js b/js/binary/reader_test.js index 95711385..eb2af0a9 100644 --- a/js/binary/reader_test.js +++ b/js/binary/reader_test.js @@ -679,9 +679,24 @@ describe('binaryReaderTest', function() { writer.writeInt32(5, sentinel); var dummyMessage = /** @type {!jspb.BinaryMessage} */({}); writer.writeGroup(5, dummyMessage, function() { + // Previously the skipGroup implementation was wrong, which only consume + // the decoder by nextField. This case is for making the previous + // implementation failed in skipGroup by an early end group tag. + // The reason is 44 = 5 * 8 + 4, this will be translated in to a field + // with number 5 and with type 4 (end group) + writer.writeInt64(44, 44); + // This will make previous implementation failed by invalid tag (7). + writer.writeInt64(42, 47); writer.writeInt64(42, 42); + // This is for making the previous implementation failed by an invalid + // varint. The bytes have at least 9 consecutive minus byte, which will + // fail in this.nextField for previous implementation. + writer.writeBytes(43, [255, 255, 255, 255, 255, 255, 255, 255, 255, 255]); writer.writeGroup(6, dummyMessage, function() { writer.writeInt64(84, 42); + writer.writeInt64(84, 44); + writer.writeBytes( + 43, [255, 255, 255, 255, 255, 255, 255, 255, 255, 255]); }); }); |