| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "test/unittests/test-utils.h" | 5 #include "test/unittests/test-utils.h" |
| 6 | 6 |
| 7 #include "src/objects-inl.h" | 7 #include "src/objects-inl.h" |
| 8 #include "src/wasm/decoder.h" | 8 #include "src/wasm/decoder.h" |
| 9 #include "src/wasm/wasm-macro-gen.h" | 9 #include "src/wasm/wasm-macro-gen.h" |
| 10 | 10 |
| 11 namespace v8 { | 11 namespace v8 { |
| 12 namespace internal { | 12 namespace internal { |
| 13 namespace wasm { | 13 namespace wasm { |
| 14 | 14 |
| 15 class DecoderTest : public TestWithZone { | 15 class DecoderTest : public TestWithZone { |
| 16 public: | 16 public: |
| 17 DecoderTest() : decoder(nullptr, nullptr) {} | 17 DecoderTest() : decoder(nullptr, nullptr) {} |
| 18 | 18 |
| 19 Decoder decoder; | 19 Decoder decoder; |
| 20 }; | 20 }; |
| 21 | 21 |
| 22 #define CHECK_UINT32V_INLINE(expected, expected_length, ...) \ | 22 #define CHECK_UINT32V_INLINE(expected, expected_length, ...) \ |
| 23 do { \ | 23 do { \ |
| 24 const byte data[] = {__VA_ARGS__}; \ | 24 const byte data[] = {__VA_ARGS__}; \ |
| 25 decoder.Reset(data, data + sizeof(data)); \ | 25 decoder.Reset(data, data + sizeof(data)); \ |
| 26 unsigned length; \ | 26 unsigned length; \ |
| 27 EXPECT_EQ(expected, \ | 27 EXPECT_EQ(expected, \ |
| 28 decoder.checked_read_u32v(decoder.start(), 0, &length)); \ | 28 decoder.checked_read_u32v(decoder.start(), 0, &length)); \ |
| 29 EXPECT_EQ(expected_length, length); \ | 29 EXPECT_EQ(expected_length, length); \ |
| 30 EXPECT_EQ(data, decoder.pc()); \ |
| 31 EXPECT_TRUE(decoder.ok()); \ |
| 32 EXPECT_EQ(expected, decoder.consume_u32v()); \ |
| 33 EXPECT_EQ(data + expected_length, decoder.pc()); \ |
| 30 } while (false) | 34 } while (false) |
| 31 | 35 |
| 32 #define CHECK_INT32V_INLINE(expected, expected_length, ...) \ | 36 #define CHECK_INT32V_INLINE(expected, expected_length, ...) \ |
| 33 do { \ | 37 do { \ |
| 34 const byte data[] = {__VA_ARGS__}; \ | 38 const byte data[] = {__VA_ARGS__}; \ |
| 35 decoder.Reset(data, data + sizeof(data)); \ | 39 decoder.Reset(data, data + sizeof(data)); \ |
| 36 unsigned length; \ | 40 unsigned length; \ |
| 37 EXPECT_EQ(expected, \ | 41 EXPECT_EQ(expected, \ |
| 38 decoder.checked_read_i32v(decoder.start(), 0, &length)); \ | 42 decoder.checked_read_i32v(decoder.start(), 0, &length)); \ |
| 39 EXPECT_EQ(expected_length, length); \ | 43 EXPECT_EQ(expected_length, length); \ |
| 44 EXPECT_EQ(data, decoder.pc()); \ |
| 45 EXPECT_TRUE(decoder.ok()); \ |
| 46 EXPECT_EQ(expected, decoder.consume_i32v()); \ |
| 47 EXPECT_EQ(data + expected_length, decoder.pc()); \ |
| 40 } while (false) | 48 } while (false) |
| 41 | 49 |
| 42 #define CHECK_UINT64V_INLINE(expected, expected_length, ...) \ | 50 #define CHECK_UINT64V_INLINE(expected, expected_length, ...) \ |
| 43 do { \ | 51 do { \ |
| 44 const byte data[] = {__VA_ARGS__}; \ | 52 const byte data[] = {__VA_ARGS__}; \ |
| 45 decoder.Reset(data, data + sizeof(data)); \ | 53 decoder.Reset(data, data + sizeof(data)); \ |
| 46 unsigned length; \ | 54 unsigned length; \ |
| 47 EXPECT_EQ(expected, \ | 55 EXPECT_EQ(expected, \ |
| 48 decoder.checked_read_u64v(decoder.start(), 0, &length)); \ | 56 decoder.checked_read_u64v(decoder.start(), 0, &length)); \ |
| 49 EXPECT_EQ(expected_length, length); \ | 57 EXPECT_EQ(expected_length, length); \ |
| (...skipping 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 659 byte data[] = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x77}; | 667 byte data[] = {0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x77}; |
| 660 decoder.Reset(data, data + sizeof(data)); | 668 decoder.Reset(data, data + sizeof(data)); |
| 661 decoder.checked_read_i64v(decoder.start(), 0, &length); | 669 decoder.checked_read_i64v(decoder.start(), 0, &length); |
| 662 EXPECT_EQ(10, length); | 670 EXPECT_EQ(10, length); |
| 663 EXPECT_FALSE(decoder.ok()); | 671 EXPECT_FALSE(decoder.ok()); |
| 664 } | 672 } |
| 665 | 673 |
| 666 } // namespace wasm | 674 } // namespace wasm |
| 667 } // namespace internal | 675 } // namespace internal |
| 668 } // namespace v8 | 676 } // namespace v8 |
| OLD | NEW |