Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Namespaces | Macros | Functions | Variables
datastream_test.cc File Reference
#include "vm/datastream.h"
#include "platform/assert.h"
#include "vm/unit_test.h"

Go to the source code of this file.

Namespaces

namespace  dart
 

Macros

#define DEFINE_LARGE_CONSTANTS(T)
 

Functions

 dart::TEST_CASE (BaseWriteStream_Write)
 
 dart::TEST_CASE (BaseWriteStream_WriteUnsigned)
 
template<typename T >
void dart::TestRaw ()
 
 dart::TEST_CASE (ReadStream_Read16)
 
 dart::TEST_CASE (ReadStream_Read32)
 
 dart::TEST_CASE (ReadStream_Read64)
 
 dart::TEST_CASE (BaseWriteStream_WriteLEB128)
 
 dart::TEST_CASE (BaseWriteStream_WriteSLEB128)
 

Variables

static constexpr intptr_t dart::kUnsignedEnd = kMaxUint16
 
static constexpr intptr_t dart::kSignedStart = kMinInt16
 
static constexpr intptr_t dart::kSignedEnd = kMaxInt16
 

Macro Definition Documentation

◆ DEFINE_LARGE_CONSTANTS

#define DEFINE_LARGE_CONSTANTS (   T)
Value:
using Unsigned = typename std::make_unsigned<T>::type; \
constexpr T all_ones = static_cast<T>(-1); /* 111... */ \
constexpr T min = \
static_cast<T>(static_cast<Unsigned>(1) \
<< (kBitsPerByte * sizeof(T) - 1)); /* 100... */ \
constexpr T max = \
static_cast<T>(static_cast<Unsigned>(min) - 1); /* 011... */ \
constexpr T half_min = min / 2; /* 110... */ \
constexpr T half_max = max / 2; /* 001... */
static float max(float r, float g, float b)
Definition hsl.cpp:49
static float min(float r, float g, float b)
Definition hsl.cpp:48
#define T

Definition at line 20 of file datastream_test.cc.

30 {
31 MallocWriteStream writer(1 * KB);
32 for (intptr_t i = kSignedStart; i < kSignedEnd; i++) {
33 writer.Write(i);
34 }
35 DEFINE_LARGE_CONSTANTS(intptr_t);
36 writer.Write(all_ones);
37 writer.Write(min);
38 writer.Write(max);
39 writer.Write(half_min);
40 writer.Write(half_max);
41 ReadStream reader(writer.buffer(), writer.bytes_written());
42 for (intptr_t i = kSignedStart; i < kSignedEnd; i++) {
43 const intptr_t r = reader.Read<intptr_t>();
44 EXPECT_EQ(i, r);
45 }
46 const intptr_t read_all_ones = reader.Read<intptr_t>();
47 EXPECT_EQ(all_ones, read_all_ones);
48 const intptr_t read_min = reader.Read<intptr_t>();
49 EXPECT_EQ(min, read_min);
50 const intptr_t read_max = reader.Read<intptr_t>();
51 EXPECT_EQ(max, read_max);
52 const intptr_t read_half_min = reader.Read<intptr_t>();
53 EXPECT_EQ(half_min, read_half_min);
54 const intptr_t read_half_max = reader.Read<intptr_t>();
55 EXPECT_EQ(half_max, read_half_max);
56}
57
58TEST_CASE(BaseWriteStream_WriteUnsigned) {
59 MallocWriteStream writer(1 * KB);
60 for (uintptr_t i = 0; i < kUnsignedEnd; i++) {
61 writer.WriteUnsigned(i);
62 }
63 DEFINE_LARGE_CONSTANTS(uintptr_t);
64 writer.WriteUnsigned(all_ones);
65 writer.WriteUnsigned(min);
66 writer.WriteUnsigned(max);
67 writer.WriteUnsigned(half_min);
68 writer.WriteUnsigned(half_max);
69 ReadStream reader(writer.buffer(), writer.bytes_written());
70 for (uintptr_t i = 0; i < kUnsignedEnd; i++) {
71 const uintptr_t r = reader.ReadUnsigned<uintptr_t>();
72 EXPECT_EQ(i, r);
73 }
74 const uintptr_t read_all_ones = reader.ReadUnsigned<uintptr_t>();
75 EXPECT_EQ(all_ones, read_all_ones);
76 const uintptr_t read_min = reader.ReadUnsigned<uintptr_t>();
77 EXPECT_EQ(min, read_min);
78 const uintptr_t read_max = reader.ReadUnsigned<uintptr_t>();
79 EXPECT_EQ(max, read_max);
80 const uintptr_t read_half_min = reader.ReadUnsigned<uintptr_t>();
81 EXPECT_EQ(half_min, read_half_min);
82 const uintptr_t read_half_max = reader.ReadUnsigned<uintptr_t>();
83 EXPECT_EQ(half_max, read_half_max);
84}
85
86template <typename T>
87void TestRaw() {
88 MallocWriteStream writer(1 * KB);
89 for (T i = kSignedStart; i < kSignedEnd; i++) {
90 writer.Write(i);
91 }
93 writer.Write(all_ones);
94 writer.Write(min);
95 writer.Write(max);
96 writer.Write(half_min);
97 writer.Write(half_max);
98 ReadStream reader(writer.buffer(), writer.bytes_written());
99 using Raw = ReadStream::Raw<sizeof(T), T>;
100 for (T i = kSignedStart; i < kSignedEnd; i++) {
101 const T r = Raw::Read(&reader);
102 EXPECT_EQ(i, r);
103 }
104 const T read_all_ones = Raw::Read(&reader);
105 EXPECT_EQ(all_ones, read_all_ones);
106 const T read_min = Raw::Read(&reader);
107 EXPECT_EQ(min, read_min);
108 const T read_max = Raw::Read(&reader);
109 EXPECT_EQ(max, read_max);
110 const T read_half_min = Raw::Read(&reader);
111 EXPECT_EQ(half_min, read_half_min);
112 const T read_half_max = Raw::Read(&reader);
113 EXPECT_EQ(half_max, read_half_max);
114}
115
116TEST_CASE(ReadStream_Read16) {
117 TestRaw<int16_t>();
118}
119
120TEST_CASE(ReadStream_Read32) {
121 TestRaw<int32_t>();
122}
123
124TEST_CASE(ReadStream_Read64) {
125 TestRaw<int64_t>();
126}
127
128TEST_CASE(BaseWriteStream_WriteLEB128) {
129 MallocWriteStream writer(1 * KB);
130 for (uintptr_t i = 0; i < kUnsignedEnd; i++) {
131 writer.WriteLEB128(i);
132 }
133 DEFINE_LARGE_CONSTANTS(uintptr_t);
134 writer.WriteLEB128(all_ones);
135 writer.WriteLEB128(min);
136 writer.WriteLEB128(max);
137 writer.WriteLEB128(half_min);
138 writer.WriteLEB128(half_max);
139 ReadStream reader(writer.buffer(), writer.bytes_written());
140 for (uintptr_t i = 0; i < kUnsignedEnd; i++) {
141 const uintptr_t r = reader.ReadLEB128();
142 EXPECT_EQ(i, r);
143 }
144 const uintptr_t read_all_ones = reader.ReadLEB128();
145 EXPECT_EQ(all_ones, read_all_ones);
146 const uintptr_t read_min = reader.ReadLEB128();
147 EXPECT_EQ(min, read_min);
148 const uintptr_t read_max = reader.ReadLEB128();
149 EXPECT_EQ(max, read_max);
150 const uintptr_t read_half_min = reader.ReadLEB128();
151 EXPECT_EQ(half_min, read_half_min);
152 const uintptr_t read_half_max = reader.ReadLEB128();
153 EXPECT_EQ(half_max, read_half_max);
154}
155
156TEST_CASE(BaseWriteStream_WriteSLEB128) {
157 MallocWriteStream writer(1 * KB);
158 for (intptr_t i = kSignedStart; i < kSignedEnd; i++) {
159 writer.WriteSLEB128(i);
160 }
161 DEFINE_LARGE_CONSTANTS(intptr_t);
162 writer.WriteSLEB128(all_ones);
163 writer.WriteSLEB128(min);
164 writer.WriteSLEB128(max);
165 writer.WriteSLEB128(half_min);
166 writer.WriteSLEB128(half_max);
167 ReadStream reader(writer.buffer(), writer.bytes_written());
168 for (intptr_t i = kSignedStart; i < kSignedEnd; i++) {
169 const intptr_t r = reader.ReadSLEB128();
170 EXPECT_EQ(i, r);
171 }
172 const intptr_t read_all_ones = reader.ReadSLEB128();
173 EXPECT_EQ(all_ones, read_all_ones);
174 const intptr_t read_min = reader.ReadSLEB128();
175 EXPECT_EQ(min, read_min);
176 const intptr_t read_max = reader.ReadSLEB128();
177 EXPECT_EQ(max, read_max);
178 const intptr_t read_half_min = reader.ReadSLEB128();
179 EXPECT_EQ(half_min, read_half_min);
180 const intptr_t read_half_max = reader.ReadSLEB128();
181 EXPECT_EQ(half_max, read_half_max);
182}
183
184} // namespace dart
#define DEFINE_LARGE_CONSTANTS(T)
static constexpr intptr_t kSignedEnd
void TestRaw()
static constexpr intptr_t kUnsignedEnd
#define TEST_CASE(name)
Definition unit_test.h:85