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 |