| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ | 3 // https://developers.google.com/protocol-buffers/ |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 140 } | 140 } |
| 141 | 141 |
| 142 // Encoding values outside the valid range should assert. | 142 // Encoding values outside the valid range should assert. |
| 143 assertThrows(function() {writeValue.call(encoder, lowerLimit * 1.1);}); | 143 assertThrows(function() {writeValue.call(encoder, lowerLimit * 1.1);}); |
| 144 assertThrows(function() {writeValue.call(encoder, upperLimit * 1.1);}); | 144 assertThrows(function() {writeValue.call(encoder, upperLimit * 1.1);}); |
| 145 } | 145 } |
| 146 | 146 |
| 147 describe('binaryDecoderTest', function() { | 147 describe('binaryDecoderTest', function() { |
| 148 /** | 148 /** |
| 149 * Tests the decoder instance cache. | 149 * Tests the decoder instance cache. |
| 150 * @suppress {visibility} |
| 150 */ | 151 */ |
| 151 it('testInstanceCache', /** @suppress {visibility} */ function() { | 152 it('testInstanceCache', function() { |
| 152 // Empty the instance caches. | 153 // Empty the instance caches. |
| 153 jspb.BinaryDecoder.instanceCache_ = []; | 154 jspb.BinaryDecoder.instanceCache_ = []; |
| 154 | 155 |
| 155 // Allocating and then freeing a decoder should put it in the instance | 156 // Allocating and then freeing a decoder should put it in the instance |
| 156 // cache. | 157 // cache. |
| 157 jspb.BinaryDecoder.alloc().free(); | 158 jspb.BinaryDecoder.alloc().free(); |
| 158 | 159 |
| 159 assertEquals(1, jspb.BinaryDecoder.instanceCache_.length); | 160 assertEquals(1, jspb.BinaryDecoder.instanceCache_.length); |
| 160 | 161 |
| 161 // Allocating and then freeing three decoders should leave us with three in | 162 // Allocating and then freeing three decoders should leave us with three in |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 assertEquals(hashA, decoder.readVarintHash64()); | 203 assertEquals(hashA, decoder.readVarintHash64()); |
| 203 assertEquals(hashB, decoder.readVarintHash64()); | 204 assertEquals(hashB, decoder.readVarintHash64()); |
| 204 assertEquals(hashC, decoder.readVarintHash64()); | 205 assertEquals(hashC, decoder.readVarintHash64()); |
| 205 assertEquals(hashD, decoder.readVarintHash64()); | 206 assertEquals(hashD, decoder.readVarintHash64()); |
| 206 | 207 |
| 207 assertEquals(hashA, decoder.readFixedHash64()); | 208 assertEquals(hashA, decoder.readFixedHash64()); |
| 208 assertEquals(hashB, decoder.readFixedHash64()); | 209 assertEquals(hashB, decoder.readFixedHash64()); |
| 209 assertEquals(hashC, decoder.readFixedHash64()); | 210 assertEquals(hashC, decoder.readFixedHash64()); |
| 210 assertEquals(hashD, decoder.readFixedHash64()); | 211 assertEquals(hashD, decoder.readFixedHash64()); |
| 211 }); | 212 }); |
| 212 | |
| 213 /** | |
| 214 * Test encoding and decoding utf-8. | |
| 215 */ | |
| 216 it('testUtf8', function() { | |
| 217 var encoder = new jspb.BinaryEncoder(); | |
| 218 | 213 |
| 219 var ascii = "ASCII should work in 3, 2, 1..." | |
| 220 var utf8_two_bytes = "©"; | |
| 221 var utf8_three_bytes = "❄"; | |
| 222 var utf8_four_bytes = "😁"; | |
| 223 | |
| 224 encoder.writeString(ascii); | |
| 225 encoder.writeString(utf8_two_bytes); | |
| 226 encoder.writeString(utf8_three_bytes); | |
| 227 encoder.writeString(utf8_four_bytes); | |
| 228 | |
| 229 var decoder = jspb.BinaryDecoder.alloc(encoder.end()); | |
| 230 | |
| 231 assertEquals(ascii, decoder.readString(ascii.length)); | |
| 232 assertEquals(utf8_two_bytes, decoder.readString(utf8_two_bytes.length)); | |
| 233 assertEquals(utf8_three_bytes, decoder.readString(utf8_three_bytes.length)); | |
| 234 assertEquals(utf8_four_bytes, decoder.readString(utf8_four_bytes.length)); | |
| 235 }); | |
| 236 | 214 |
| 237 /** | 215 /** |
| 238 * Verifies that misuse of the decoder class triggers assertions. | 216 * Verifies that misuse of the decoder class triggers assertions. |
| 239 * @suppress {checkTypes|visibility} | 217 * @suppress {checkTypes|visibility} |
| 240 */ | 218 */ |
| 241 it('testDecodeErrors', function() { | 219 it('testDecodeErrors', function() { |
| 242 // Reading a value past the end of the stream should trigger an assertion. | 220 // Reading a value past the end of the stream should trigger an assertion. |
| 243 var decoder = jspb.BinaryDecoder.alloc([0, 1, 2]); | 221 var decoder = jspb.BinaryDecoder.alloc([0, 1, 2]); |
| 244 assertThrows(function() {decoder.readUint64()}); | 222 assertThrows(function() {decoder.readUint64()}); |
| 245 | 223 |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 348 | 326 |
| 349 doTestSignedValue( | 327 doTestSignedValue( |
| 350 jspb.BinaryDecoder.prototype.readDouble, | 328 jspb.BinaryDecoder.prototype.readDouble, |
| 351 jspb.BinaryEncoder.prototype.writeDouble, | 329 jspb.BinaryEncoder.prototype.writeDouble, |
| 352 jspb.BinaryConstants.FLOAT64_EPS * 10, | 330 jspb.BinaryConstants.FLOAT64_EPS * 10, |
| 353 -jspb.BinaryConstants.FLOAT64_MAX, | 331 -jspb.BinaryConstants.FLOAT64_MAX, |
| 354 jspb.BinaryConstants.FLOAT64_MAX, | 332 jspb.BinaryConstants.FLOAT64_MAX, |
| 355 function(x) { return x; }); | 333 function(x) { return x; }); |
| 356 }); | 334 }); |
| 357 }); | 335 }); |
| OLD | NEW |