Mercurial > code
annotate C++/Tests/Pack/main.cpp @ 268:b5d795389387
Pack:
* Remove read / write from path, it makes no sense because you need to read
all in one shot.
* Implement arrays via readArray / writeArray using iterators.
Task: #302
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 15 Oct 2014 21:29:20 +0200 |
parents | b686a09fb9c6 |
children | 7433ebe6a8b0 |
rev | line source |
---|---|
223 | 1 /* |
2 * TestPack.cpp -- test the pack serializer | |
3 * | |
4 * Copyright (c) 2013, 2014 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
268 | 19 #include <sstream> |
20 #include <vector> | |
21 | |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
22 #include <gtest/gtest.h> |
223 | 23 |
24 #include <Pack.h> | |
25 | |
268 | 26 TEST(File, simpleLittleEndian) |
27 { | |
28 uint8_t u8(1), r8; | |
29 uint16_t u16(2), r16; | |
30 uint32_t u32(3), r32; | |
31 uint64_t u64(4), r64; | |
32 | |
33 try { | |
34 std::ofstream out; | |
35 out.open("simple-little.bin", std::ostream::out); | |
36 Pack::write(out, Pack::Little, u8, u16, u32, u64); | |
37 out.close(); | |
38 | |
39 std::ifstream in; | |
40 in.open("simple-little.bin", std::ostream::in); | |
41 Pack::read(in, Pack::Little, r8, r16, r32, r64); | |
42 in.close(); | |
43 | |
44 ASSERT_EQ(u8, r8); | |
45 ASSERT_EQ(u16, r16); | |
46 ASSERT_EQ(u32, r32); | |
47 ASSERT_EQ(u64, r64); | |
48 } catch (const std::exception &error) { | |
49 FAIL() << error.what(); | |
50 } | |
51 } | |
52 | |
53 TEST(File, simpleBigEndian) | |
54 { | |
55 uint8_t u8(1), r8; | |
56 uint16_t u16(2), r16; | |
57 uint32_t u32(3), r32; | |
58 uint64_t u64(4), r64; | |
59 | |
60 try { | |
61 std::ofstream out; | |
62 out.open("simple-big.bin", std::ostream::out); | |
63 Pack::write(out, Pack::Big, u8, u16, u32, u64); | |
64 out.close(); | |
65 | |
66 std::ifstream in; | |
67 in.open("simple-big.bin", std::ostream::in); | |
68 Pack::read(in, Pack::Big, r8, r16, r32, r64); | |
69 in.close(); | |
70 | |
71 ASSERT_EQ(u8, r8); | |
72 ASSERT_EQ(u16, r16); | |
73 ASSERT_EQ(u32, r32); | |
74 ASSERT_EQ(u64, r64); | |
75 } catch (const std::exception &error) { | |
76 FAIL() << error.what(); | |
77 } | |
78 } | |
79 | |
80 TEST(String, simpleLittleEndian) | |
223 | 81 { |
82 uint8_t u8(1), r8; | |
83 uint16_t u16(2), r16; | |
84 uint32_t u32(3), r32; | |
85 uint64_t u64(4), r64; | |
86 | |
87 try { | |
268 | 88 std::ostringstream out; |
89 Pack::write(out, Pack::Little, u8, u16, u32, u64); | |
90 | |
91 std::istringstream in(out.str()); | |
92 Pack::read(in, Pack::Little, r8, r16, r32, r64); | |
223 | 93 |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
94 ASSERT_EQ(u8, r8); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
95 ASSERT_EQ(u16, r16); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
96 ASSERT_EQ(u32, r32); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
97 ASSERT_EQ(u64, r64); |
268 | 98 } catch (const std::exception &error) { |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
99 FAIL() << error.what(); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
100 } |
223 | 101 } |
102 | |
268 | 103 TEST(String, simpleBigEndian) |
223 | 104 { |
105 uint8_t u8(1), r8; | |
106 uint16_t u16(2), r16; | |
107 uint32_t u32(3), r32; | |
108 uint64_t u64(4), r64; | |
109 | |
110 try { | |
268 | 111 std::ostringstream out; |
112 Pack::write(out, Pack::Big, u8, u16, u32, u64); | |
113 | |
114 std::istringstream in(out.str()); | |
115 Pack::read(in, Pack::Big, r8, r16, r32, r64); | |
223 | 116 |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
117 ASSERT_EQ(u8, r8); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
118 ASSERT_EQ(u16, r16); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
119 ASSERT_EQ(u32, r32); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
120 ASSERT_EQ(u64, r64); |
268 | 121 } catch (const std::exception &error) { |
122 FAIL() << error.what(); | |
123 } | |
124 } | |
125 | |
126 TEST(Array, simpleLittleEndian) | |
127 { | |
128 std::vector<uint8_t> u8 { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
129 std::vector<uint16_t> u16 { 10, 20, 30, 40, 50, 60, 70, 80 }; | |
130 std::vector<uint32_t> u32 { 100, 200, 300, 400, 500, 600, 700, 800 }; | |
131 std::vector<uint64_t> u64 { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 }; | |
132 | |
133 std::vector<uint8_t> r8; | |
134 std::vector<uint16_t> r16; | |
135 std::vector<uint32_t> r32; | |
136 std::vector<uint64_t> r64; | |
137 | |
138 try { | |
139 std::ostringstream out; | |
140 Pack::writeArray(out, Pack::Little, u8.cbegin(), u8.size()); | |
141 Pack::writeArray(out, Pack::Little, u16.cbegin(), u16.size()); | |
142 Pack::writeArray(out, Pack::Little, u32.cbegin(), u32.size()); | |
143 Pack::writeArray(out, Pack::Little, u64.cbegin(), u64.size()); | |
144 | |
145 std::istringstream in(out.str()); | |
146 Pack::readArray(in, Pack::Little, std::back_inserter(r8), 8); | |
147 Pack::readArray(in, Pack::Little, std::back_inserter(r16), 8); | |
148 Pack::readArray(in, Pack::Little, std::back_inserter(r32), 8); | |
149 Pack::readArray(in, Pack::Little, std::back_inserter(r64), 8); | |
150 | |
151 | |
152 ASSERT_EQ(u8, r8); | |
153 ASSERT_EQ(u16, r16); | |
154 ASSERT_EQ(u32, r32); | |
155 ASSERT_EQ(u64, r64); | |
156 } catch (const std::exception &error) { | |
157 FAIL() << error.what(); | |
158 } | |
159 } | |
160 | |
161 TEST(Array, simpleBigEndian) | |
162 { | |
163 std::vector<uint8_t> u8 { 1, 2, 3, 4, 5, 6, 7, 8 }; | |
164 std::vector<uint16_t> u16 { 10, 20, 30, 40, 50, 60, 70, 80 }; | |
165 std::vector<uint32_t> u32 { 100, 200, 300, 400, 500, 600, 700, 800 }; | |
166 std::vector<uint64_t> u64 { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 }; | |
167 | |
168 std::vector<uint8_t> r8; | |
169 std::vector<uint16_t> r16; | |
170 std::vector<uint32_t> r32; | |
171 std::vector<uint64_t> r64; | |
172 | |
173 try { | |
174 std::ostringstream out; | |
175 Pack::writeArray(out, Pack::Big, u8.cbegin(), u8.size()); | |
176 Pack::writeArray(out, Pack::Big, u16.cbegin(), u16.size()); | |
177 Pack::writeArray(out, Pack::Big, u32.cbegin(), u32.size()); | |
178 Pack::writeArray(out, Pack::Big, u64.cbegin(), u64.size()); | |
179 | |
180 std::istringstream in(out.str()); | |
181 Pack::readArray(in, Pack::Big, std::back_inserter(r8), 8); | |
182 Pack::readArray(in, Pack::Big, std::back_inserter(r16), 8); | |
183 Pack::readArray(in, Pack::Big, std::back_inserter(r32), 8); | |
184 Pack::readArray(in, Pack::Big, std::back_inserter(r64), 8); | |
185 | |
186 | |
187 ASSERT_EQ(u8, r8); | |
188 ASSERT_EQ(u16, r16); | |
189 ASSERT_EQ(u32, r32); | |
190 ASSERT_EQ(u64, r64); | |
191 } catch (const std::exception &error) { | |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
192 FAIL() << error.what(); |
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
193 } |
223 | 194 } |
195 | |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
196 int main(int argc, char **argv) |
223 | 197 { |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
198 testing::InitGoogleTest(&argc, argv); |
223 | 199 |
249
3b4ae8feca1c
Switch to GoogleTest finished #285
David Demelier <markand@malikania.fr>
parents:
223
diff
changeset
|
200 return RUN_ALL_TESTS(); |
268 | 201 } |