annotate unittests/Support/LEB128Test.cpp @ 147:c2174574ed3a

LLVM 10
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 14 Aug 2019 16:55:33 +0900
parents 803732b1fca8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 //===- llvm/unittest/Support/LEB128Test.cpp - LEB128 function tests -------===//
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 //
147
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
4 // See https://llvm.org/LICENSE.txt for license information.
c2174574ed3a LLVM 10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 121
diff changeset
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 //
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 //===----------------------------------------------------------------------===//
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
9 #include "llvm/Support/LEB128.h"
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 #include "llvm/Support/DataTypes.h"
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 #include "llvm/Support/raw_ostream.h"
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
12 #include "gtest/gtest.h"
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 #include <string>
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 using namespace llvm;
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 namespace {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 TEST(LEB128Test, EncodeSLEB128) {
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
19 #define EXPECT_SLEB128_EQ(EXPECTED, VALUE, PAD) \
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 do { \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 std::string Expected(EXPECTED, sizeof(EXPECTED) - 1); \
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
22 \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
23 /* encodeSLEB128(uint64_t, raw_ostream &, unsigned) */ \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
24 std::string Actual1; \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
25 raw_string_ostream Stream(Actual1); \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
26 encodeSLEB128(VALUE, Stream, PAD); \
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 Stream.flush(); \
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
28 EXPECT_EQ(Expected, Actual1); \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
29 \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
30 /* encodeSLEB128(uint64_t, uint8_t *, unsigned) */ \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
31 uint8_t Buffer[32]; \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
32 unsigned Size = encodeSLEB128(VALUE, Buffer, PAD); \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
33 std::string Actual2(reinterpret_cast<const char *>(Buffer), Size); \
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
34 EXPECT_EQ(Expected, Actual2); \
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 } while (0)
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 // Encode SLEB128
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
38 EXPECT_SLEB128_EQ("\x00", 0, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
39 EXPECT_SLEB128_EQ("\x01", 1, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
40 EXPECT_SLEB128_EQ("\x7f", -1, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
41 EXPECT_SLEB128_EQ("\x3f", 63, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
42 EXPECT_SLEB128_EQ("\x41", -63, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
43 EXPECT_SLEB128_EQ("\x40", -64, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
44 EXPECT_SLEB128_EQ("\xbf\x7f", -65, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
45 EXPECT_SLEB128_EQ("\xc0\x00", 64, 0);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
46
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
47 // Encode SLEB128 with some extra padding bytes
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
48 EXPECT_SLEB128_EQ("\x80\x00", 0, 2);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
49 EXPECT_SLEB128_EQ("\x80\x80\x00", 0, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
50 EXPECT_SLEB128_EQ("\xff\x80\x00", 0x7f, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
51 EXPECT_SLEB128_EQ("\xff\x80\x80\x00", 0x7f, 4);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
52 EXPECT_SLEB128_EQ("\x80\x81\x00", 0x80, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
53 EXPECT_SLEB128_EQ("\x80\x81\x80\x00", 0x80, 4);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
54 EXPECT_SLEB128_EQ("\xc0\x7f", -0x40, 2);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
55
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
56 EXPECT_SLEB128_EQ("\xc0\xff\x7f", -0x40, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
57 EXPECT_SLEB128_EQ("\x80\xff\x7f", -0x80, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
58 EXPECT_SLEB128_EQ("\x80\xff\xff\x7f", -0x80, 4);
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 #undef EXPECT_SLEB128_EQ
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 }
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 TEST(LEB128Test, EncodeULEB128) {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 #define EXPECT_ULEB128_EQ(EXPECTED, VALUE, PAD) \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 do { \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 std::string Expected(EXPECTED, sizeof(EXPECTED) - 1); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 /* encodeULEB128(uint64_t, raw_ostream &, unsigned) */ \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 std::string Actual1; \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 raw_string_ostream Stream(Actual1); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 encodeULEB128(VALUE, Stream, PAD); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 Stream.flush(); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 EXPECT_EQ(Expected, Actual1); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 /* encodeULEB128(uint64_t, uint8_t *, unsigned) */ \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 uint8_t Buffer[32]; \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 unsigned Size = encodeULEB128(VALUE, Buffer, PAD); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 std::string Actual2(reinterpret_cast<const char *>(Buffer), Size); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 EXPECT_EQ(Expected, Actual2); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 } while (0)
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 // Encode ULEB128
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 EXPECT_ULEB128_EQ("\x00", 0, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 EXPECT_ULEB128_EQ("\x01", 1, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 EXPECT_ULEB128_EQ("\x3f", 63, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 EXPECT_ULEB128_EQ("\x40", 64, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 EXPECT_ULEB128_EQ("\x7f", 0x7f, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 EXPECT_ULEB128_EQ("\x80\x01", 0x80, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 EXPECT_ULEB128_EQ("\x81\x01", 0x81, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 EXPECT_ULEB128_EQ("\x90\x01", 0x90, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 EXPECT_ULEB128_EQ("\xff\x01", 0xff, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 EXPECT_ULEB128_EQ("\x80\x02", 0x100, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 EXPECT_ULEB128_EQ("\x81\x02", 0x101, 0);
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 // Encode ULEB128 with some extra padding bytes
121
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
96 EXPECT_ULEB128_EQ("\x80\x00", 0, 2);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
97 EXPECT_ULEB128_EQ("\x80\x80\x00", 0, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
98 EXPECT_ULEB128_EQ("\xff\x00", 0x7f, 2);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
99 EXPECT_ULEB128_EQ("\xff\x80\x00", 0x7f, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
100 EXPECT_ULEB128_EQ("\x80\x81\x00", 0x80, 3);
803732b1fca8 LLVM 5.0
kono
parents: 83
diff changeset
101 EXPECT_ULEB128_EQ("\x80\x81\x80\x00", 0x80, 4);
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 #undef EXPECT_ULEB128_EQ
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 }
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
105
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 TEST(LEB128Test, DecodeULEB128) {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 #define EXPECT_DECODE_ULEB128_EQ(EXPECTED, VALUE) \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 do { \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 unsigned ActualSize = 0; \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 uint64_t Actual = decodeULEB128(reinterpret_cast<const uint8_t *>(VALUE), \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 &ActualSize); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 EXPECT_EQ(sizeof(VALUE) - 1, ActualSize); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 EXPECT_EQ(EXPECTED, Actual); \
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 } while (0)
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
115
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 // Decode ULEB128
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 EXPECT_DECODE_ULEB128_EQ(0u, "\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 EXPECT_DECODE_ULEB128_EQ(1u, "\x01");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
119 EXPECT_DECODE_ULEB128_EQ(63u, "\x3f");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 EXPECT_DECODE_ULEB128_EQ(64u, "\x40");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 EXPECT_DECODE_ULEB128_EQ(0x7fu, "\x7f");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 EXPECT_DECODE_ULEB128_EQ(0x80u, "\x80\x01");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 EXPECT_DECODE_ULEB128_EQ(0x81u, "\x81\x01");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 EXPECT_DECODE_ULEB128_EQ(0x90u, "\x90\x01");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 EXPECT_DECODE_ULEB128_EQ(0xffu, "\xff\x01");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 EXPECT_DECODE_ULEB128_EQ(0x100u, "\x80\x02");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 EXPECT_DECODE_ULEB128_EQ(0x101u, "\x81\x02");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 EXPECT_DECODE_ULEB128_EQ(4294975616ULL, "\x80\xc1\x80\x80\x10");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
129
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 // Decode ULEB128 with extra padding bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 EXPECT_DECODE_ULEB128_EQ(0u, "\x80\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 EXPECT_DECODE_ULEB128_EQ(0u, "\x80\x80\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 EXPECT_DECODE_ULEB128_EQ(0x7fu, "\xff\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 EXPECT_DECODE_ULEB128_EQ(0x7fu, "\xff\x80\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 EXPECT_DECODE_ULEB128_EQ(0x80u, "\x80\x81\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 EXPECT_DECODE_ULEB128_EQ(0x80u, "\x80\x81\x80\x00");
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 #undef EXPECT_DECODE_ULEB128_EQ
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
139 }
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
140
83
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
141 TEST(LEB128Test, DecodeSLEB128) {
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
142 #define EXPECT_DECODE_SLEB128_EQ(EXPECTED, VALUE) \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
143 do { \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
144 unsigned ActualSize = 0; \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
145 int64_t Actual = decodeSLEB128(reinterpret_cast<const uint8_t *>(VALUE), \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
146 &ActualSize); \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
147 EXPECT_EQ(sizeof(VALUE) - 1, ActualSize); \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
148 EXPECT_EQ(EXPECTED, Actual); \
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
149 } while (0)
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
150
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
151 // Decode SLEB128
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
152 EXPECT_DECODE_SLEB128_EQ(0L, "\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
153 EXPECT_DECODE_SLEB128_EQ(1L, "\x01");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
154 EXPECT_DECODE_SLEB128_EQ(63L, "\x3f");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
155 EXPECT_DECODE_SLEB128_EQ(-64L, "\x40");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
156 EXPECT_DECODE_SLEB128_EQ(-63L, "\x41");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
157 EXPECT_DECODE_SLEB128_EQ(-1L, "\x7f");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
158 EXPECT_DECODE_SLEB128_EQ(128L, "\x80\x01");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
159 EXPECT_DECODE_SLEB128_EQ(129L, "\x81\x01");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
160 EXPECT_DECODE_SLEB128_EQ(-129L, "\xff\x7e");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
161 EXPECT_DECODE_SLEB128_EQ(-128L, "\x80\x7f");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
162 EXPECT_DECODE_SLEB128_EQ(-127L, "\x81\x7f");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
163 EXPECT_DECODE_SLEB128_EQ(64L, "\xc0\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
164 EXPECT_DECODE_SLEB128_EQ(-12345L, "\xc7\x9f\x7f");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
165
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
166 // Decode unnormalized SLEB128 with extra padding bytes.
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
167 EXPECT_DECODE_SLEB128_EQ(0L, "\x80\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
168 EXPECT_DECODE_SLEB128_EQ(0L, "\x80\x80\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
169 EXPECT_DECODE_SLEB128_EQ(0x7fL, "\xff\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
170 EXPECT_DECODE_SLEB128_EQ(0x7fL, "\xff\x80\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
171 EXPECT_DECODE_SLEB128_EQ(0x80L, "\x80\x81\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
172 EXPECT_DECODE_SLEB128_EQ(0x80L, "\x80\x81\x80\x00");
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
173
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
174 #undef EXPECT_DECODE_SLEB128_EQ
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
175 }
60c9769439b8 LLVM 3.7
Tatsuki IHA <e125716@ie.u-ryukyu.ac.jp>
parents: 77
diff changeset
176
77
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 TEST(LEB128Test, SLEB128Size) {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 // Positive Value Testing Plan:
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 // (1) 128 ^ n - 1 ........ need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 // (2) 128 ^ n ............ need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 // (3) 128 ^ n * 63 ....... need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 // (4) 128 ^ n * 64 - 1 ... need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 // (5) 128 ^ n * 64 ....... need (n+2) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
184
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 EXPECT_EQ(1u, getSLEB128Size(0x0LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 EXPECT_EQ(1u, getSLEB128Size(0x1LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 EXPECT_EQ(1u, getSLEB128Size(0x3fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 EXPECT_EQ(1u, getSLEB128Size(0x3fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 EXPECT_EQ(2u, getSLEB128Size(0x40LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
190
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 EXPECT_EQ(2u, getSLEB128Size(0x7fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 EXPECT_EQ(2u, getSLEB128Size(0x80LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 EXPECT_EQ(2u, getSLEB128Size(0x1f80LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
194 EXPECT_EQ(2u, getSLEB128Size(0x1fffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 EXPECT_EQ(3u, getSLEB128Size(0x2000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
196
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
197 EXPECT_EQ(3u, getSLEB128Size(0x3fffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 EXPECT_EQ(3u, getSLEB128Size(0x4000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 EXPECT_EQ(3u, getSLEB128Size(0xfc000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 EXPECT_EQ(3u, getSLEB128Size(0xfffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 EXPECT_EQ(4u, getSLEB128Size(0x100000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 EXPECT_EQ(4u, getSLEB128Size(0x1fffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 EXPECT_EQ(4u, getSLEB128Size(0x200000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
205 EXPECT_EQ(4u, getSLEB128Size(0x7e00000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 EXPECT_EQ(4u, getSLEB128Size(0x7ffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 EXPECT_EQ(5u, getSLEB128Size(0x8000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
208
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
209 EXPECT_EQ(5u, getSLEB128Size(0xfffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 EXPECT_EQ(5u, getSLEB128Size(0x10000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 EXPECT_EQ(5u, getSLEB128Size(0x3f0000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
212 EXPECT_EQ(5u, getSLEB128Size(0x3ffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 EXPECT_EQ(6u, getSLEB128Size(0x400000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
214
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
215 EXPECT_EQ(6u, getSLEB128Size(0x7ffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 EXPECT_EQ(6u, getSLEB128Size(0x800000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 EXPECT_EQ(6u, getSLEB128Size(0x1f800000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 EXPECT_EQ(6u, getSLEB128Size(0x1ffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
219 EXPECT_EQ(7u, getSLEB128Size(0x20000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
220
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
221 EXPECT_EQ(7u, getSLEB128Size(0x3ffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 EXPECT_EQ(7u, getSLEB128Size(0x40000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 EXPECT_EQ(7u, getSLEB128Size(0xfc0000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 EXPECT_EQ(7u, getSLEB128Size(0xffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
225 EXPECT_EQ(8u, getSLEB128Size(0x1000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
226
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 EXPECT_EQ(8u, getSLEB128Size(0x1ffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
228 EXPECT_EQ(8u, getSLEB128Size(0x2000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 EXPECT_EQ(8u, getSLEB128Size(0x7e000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 EXPECT_EQ(8u, getSLEB128Size(0x7fffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 EXPECT_EQ(9u, getSLEB128Size(0x80000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
232
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 EXPECT_EQ(9u, getSLEB128Size(0xffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 EXPECT_EQ(9u, getSLEB128Size(0x100000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 EXPECT_EQ(9u, getSLEB128Size(0x3f00000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
236 EXPECT_EQ(9u, getSLEB128Size(0x3fffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 EXPECT_EQ(10u, getSLEB128Size(0x4000000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
238
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 EXPECT_EQ(10u, getSLEB128Size(0x7fffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 EXPECT_EQ(10u, getSLEB128Size(INT64_MAX));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
241
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 // Negative Value Testing Plan:
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 // (1) - 128 ^ n - 1 ........ need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
244 // (2) - 128 ^ n ............ need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 // (3) - 128 ^ n * 63 ....... need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 // (4) - 128 ^ n * 64 ....... need (n+1) bytes (different from positive one)
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 // (5) - 128 ^ n * 65 - 1 ... need (n+2) bytes (if n > 0)
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
248 // (6) - 128 ^ n * 65 ....... need (n+2) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
249
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
250 EXPECT_EQ(1u, getSLEB128Size(0x0LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 EXPECT_EQ(1u, getSLEB128Size(-0x1LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 EXPECT_EQ(1u, getSLEB128Size(-0x3fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 EXPECT_EQ(1u, getSLEB128Size(-0x40LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 EXPECT_EQ(1u, getSLEB128Size(-0x40LL)); // special case
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 EXPECT_EQ(2u, getSLEB128Size(-0x41LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
256
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 EXPECT_EQ(2u, getSLEB128Size(-0x7fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 EXPECT_EQ(2u, getSLEB128Size(-0x80LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 EXPECT_EQ(2u, getSLEB128Size(-0x1f80LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 EXPECT_EQ(2u, getSLEB128Size(-0x2000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
261 EXPECT_EQ(3u, getSLEB128Size(-0x207fLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 EXPECT_EQ(3u, getSLEB128Size(-0x2080LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
263
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 EXPECT_EQ(3u, getSLEB128Size(-0x3fffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
265 EXPECT_EQ(3u, getSLEB128Size(-0x4000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 EXPECT_EQ(3u, getSLEB128Size(-0xfc000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 EXPECT_EQ(3u, getSLEB128Size(-0x100000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
268 EXPECT_EQ(4u, getSLEB128Size(-0x103fffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 EXPECT_EQ(4u, getSLEB128Size(-0x104000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
270
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 EXPECT_EQ(4u, getSLEB128Size(-0x1fffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 EXPECT_EQ(4u, getSLEB128Size(-0x200000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 EXPECT_EQ(4u, getSLEB128Size(-0x7e00000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
274 EXPECT_EQ(4u, getSLEB128Size(-0x8000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 EXPECT_EQ(5u, getSLEB128Size(-0x81fffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
276 EXPECT_EQ(5u, getSLEB128Size(-0x8200000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
277
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 EXPECT_EQ(5u, getSLEB128Size(-0xfffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
279 EXPECT_EQ(5u, getSLEB128Size(-0x10000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 EXPECT_EQ(5u, getSLEB128Size(-0x3f0000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 EXPECT_EQ(5u, getSLEB128Size(-0x400000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 EXPECT_EQ(6u, getSLEB128Size(-0x40fffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
283 EXPECT_EQ(6u, getSLEB128Size(-0x410000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
284
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 EXPECT_EQ(6u, getSLEB128Size(-0x7ffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
286 EXPECT_EQ(6u, getSLEB128Size(-0x800000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 EXPECT_EQ(6u, getSLEB128Size(-0x1f800000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
288 EXPECT_EQ(6u, getSLEB128Size(-0x20000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 EXPECT_EQ(7u, getSLEB128Size(-0x207ffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 EXPECT_EQ(7u, getSLEB128Size(-0x20800000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
291
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
292 EXPECT_EQ(7u, getSLEB128Size(-0x3ffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
293 EXPECT_EQ(7u, getSLEB128Size(-0x40000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
294 EXPECT_EQ(7u, getSLEB128Size(-0xfc0000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 EXPECT_EQ(7u, getSLEB128Size(-0x1000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
296 EXPECT_EQ(8u, getSLEB128Size(-0x103ffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
297 EXPECT_EQ(8u, getSLEB128Size(-0x1040000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
298
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 EXPECT_EQ(8u, getSLEB128Size(-0x1ffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 EXPECT_EQ(8u, getSLEB128Size(-0x2000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
301 EXPECT_EQ(8u, getSLEB128Size(-0x7e000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 EXPECT_EQ(8u, getSLEB128Size(-0x80000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 EXPECT_EQ(9u, getSLEB128Size(-0x81ffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
304 EXPECT_EQ(9u, getSLEB128Size(-0x82000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
305
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
306 EXPECT_EQ(9u, getSLEB128Size(-0xffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
307 EXPECT_EQ(9u, getSLEB128Size(-0x100000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 EXPECT_EQ(9u, getSLEB128Size(-0x3f00000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 EXPECT_EQ(9u, getSLEB128Size(-0x4000000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
310 EXPECT_EQ(10u, getSLEB128Size(-0x40ffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 EXPECT_EQ(10u, getSLEB128Size(-0x4100000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
312
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
313 EXPECT_EQ(10u, getSLEB128Size(-0x7fffffffffffffffLL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
314 EXPECT_EQ(10u, getSLEB128Size(-0x8000000000000000LL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
315 EXPECT_EQ(10u, getSLEB128Size(INT64_MIN));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 }
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
317
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
318 TEST(LEB128Test, ULEB128Size) {
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
319 // Testing Plan:
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
320 // (1) 128 ^ n ............ need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 // (2) 128 ^ n * 64 ....... need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
322 // (3) 128 ^ (n+1) - 1 .... need (n+1) bytes
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
323
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 EXPECT_EQ(1u, getULEB128Size(0)); // special case
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 EXPECT_EQ(1u, getULEB128Size(0x1ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 EXPECT_EQ(1u, getULEB128Size(0x40ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 EXPECT_EQ(1u, getULEB128Size(0x7fULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
329
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330 EXPECT_EQ(2u, getULEB128Size(0x80ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 EXPECT_EQ(2u, getULEB128Size(0x2000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 EXPECT_EQ(2u, getULEB128Size(0x3fffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 EXPECT_EQ(3u, getULEB128Size(0x4000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 EXPECT_EQ(3u, getULEB128Size(0x100000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 EXPECT_EQ(3u, getULEB128Size(0x1fffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
337
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 EXPECT_EQ(4u, getULEB128Size(0x200000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
339 EXPECT_EQ(4u, getULEB128Size(0x8000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 EXPECT_EQ(4u, getULEB128Size(0xfffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
341
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 EXPECT_EQ(5u, getULEB128Size(0x10000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 EXPECT_EQ(5u, getULEB128Size(0x400000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 EXPECT_EQ(5u, getULEB128Size(0x7ffffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
345
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 EXPECT_EQ(6u, getULEB128Size(0x800000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 EXPECT_EQ(6u, getULEB128Size(0x20000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
348 EXPECT_EQ(6u, getULEB128Size(0x3ffffffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
349
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
350 EXPECT_EQ(7u, getULEB128Size(0x40000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 EXPECT_EQ(7u, getULEB128Size(0x1000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
352 EXPECT_EQ(7u, getULEB128Size(0x1ffffffffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
353
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 EXPECT_EQ(8u, getULEB128Size(0x2000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 EXPECT_EQ(8u, getULEB128Size(0x80000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
356 EXPECT_EQ(8u, getULEB128Size(0xffffffffffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
357
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 EXPECT_EQ(9u, getULEB128Size(0x100000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 EXPECT_EQ(9u, getULEB128Size(0x4000000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
360 EXPECT_EQ(9u, getULEB128Size(0x7fffffffffffffffULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
361
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 EXPECT_EQ(10u, getULEB128Size(0x8000000000000000ULL));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
363
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 EXPECT_EQ(10u, getULEB128Size(UINT64_MAX));
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 }
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
366
54457678186b LLVM 3.6
Kaito Tokumori <e105711@ie.u-ryukyu.ac.jp>
parents:
diff changeset
367 } // anonymous namespace