Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(298)

Side by Side Diff: net/websockets/websocket_frame_test.cc

Issue 662553002: Convert ARRAYSIZE_UNSAFE -> arraysize in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/websockets/websocket_frame_parser_test.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium 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 "net/websockets/websocket_frame.h" 5 #include "net/websockets/websocket_frame.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 13 matching lines...) Expand all
24 }; 24 };
25 static const TestCase kTests[] = { 25 static const TestCase kTests[] = {
26 { "\x81\x00", 2, GG_UINT64_C(0) }, 26 { "\x81\x00", 2, GG_UINT64_C(0) },
27 { "\x81\x7D", 2, GG_UINT64_C(125) }, 27 { "\x81\x7D", 2, GG_UINT64_C(125) },
28 { "\x81\x7E\x00\x7E", 4, GG_UINT64_C(126) }, 28 { "\x81\x7E\x00\x7E", 4, GG_UINT64_C(126) },
29 { "\x81\x7E\xFF\xFF", 4, GG_UINT64_C(0xFFFF) }, 29 { "\x81\x7E\xFF\xFF", 4, GG_UINT64_C(0xFFFF) },
30 { "\x81\x7F\x00\x00\x00\x00\x00\x01\x00\x00", 10, GG_UINT64_C(0x10000) }, 30 { "\x81\x7F\x00\x00\x00\x00\x00\x01\x00\x00", 10, GG_UINT64_C(0x10000) },
31 { "\x81\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 10, 31 { "\x81\x7F\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 10,
32 GG_UINT64_C(0x7FFFFFFFFFFFFFFF) } 32 GG_UINT64_C(0x7FFFFFFFFFFFFFFF) }
33 }; 33 };
34 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 34 static const int kNumTests = arraysize(kTests);
35 35
36 for (int i = 0; i < kNumTests; ++i) { 36 for (int i = 0; i < kNumTests; ++i) {
37 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText); 37 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText);
38 header.final = true; 38 header.final = true;
39 header.payload_length = kTests[i].frame_length; 39 header.payload_length = kTests[i].frame_length;
40 40
41 std::vector<char> expected_output( 41 std::vector<char> expected_output(
42 kTests[i].frame_header, 42 kTests[i].frame_header,
43 kTests[i].frame_header + kTests[i].frame_header_length); 43 kTests[i].frame_header + kTests[i].frame_header_length);
44 std::vector<char> output(expected_output.size()); 44 std::vector<char> output(expected_output.size());
45 EXPECT_EQ(static_cast<int>(expected_output.size()), 45 EXPECT_EQ(static_cast<int>(expected_output.size()),
46 WriteWebSocketFrameHeader( 46 WriteWebSocketFrameHeader(
47 header, NULL, &output.front(), output.size())); 47 header, NULL, &output.front(), output.size()));
48 EXPECT_EQ(expected_output, output); 48 EXPECT_EQ(expected_output, output);
49 } 49 }
50 } 50 }
51 51
52 TEST(WebSocketFrameHeaderTest, FrameLengthsWithMasking) { 52 TEST(WebSocketFrameHeaderTest, FrameLengthsWithMasking) {
53 static const char kMaskingKey[] = "\xDE\xAD\xBE\xEF"; 53 static const char kMaskingKey[] = "\xDE\xAD\xBE\xEF";
54 COMPILE_ASSERT(ARRAYSIZE_UNSAFE(kMaskingKey) - 1 == 54 COMPILE_ASSERT(arraysize(kMaskingKey) - 1 ==
55 WebSocketFrameHeader::kMaskingKeyLength, 55 WebSocketFrameHeader::kMaskingKeyLength,
56 incorrect_masking_key_size); 56 incorrect_masking_key_size);
57 57
58 struct TestCase { 58 struct TestCase {
59 const char* frame_header; 59 const char* frame_header;
60 size_t frame_header_length; 60 size_t frame_header_length;
61 uint64 frame_length; 61 uint64 frame_length;
62 }; 62 };
63 static const TestCase kTests[] = { 63 static const TestCase kTests[] = {
64 { "\x81\x80\xDE\xAD\xBE\xEF", 6, GG_UINT64_C(0) }, 64 { "\x81\x80\xDE\xAD\xBE\xEF", 6, GG_UINT64_C(0) },
65 { "\x81\xFD\xDE\xAD\xBE\xEF", 6, GG_UINT64_C(125) }, 65 { "\x81\xFD\xDE\xAD\xBE\xEF", 6, GG_UINT64_C(125) },
66 { "\x81\xFE\x00\x7E\xDE\xAD\xBE\xEF", 8, GG_UINT64_C(126) }, 66 { "\x81\xFE\x00\x7E\xDE\xAD\xBE\xEF", 8, GG_UINT64_C(126) },
67 { "\x81\xFE\xFF\xFF\xDE\xAD\xBE\xEF", 8, GG_UINT64_C(0xFFFF) }, 67 { "\x81\xFE\xFF\xFF\xDE\xAD\xBE\xEF", 8, GG_UINT64_C(0xFFFF) },
68 { "\x81\xFF\x00\x00\x00\x00\x00\x01\x00\x00\xDE\xAD\xBE\xEF", 14, 68 { "\x81\xFF\x00\x00\x00\x00\x00\x01\x00\x00\xDE\xAD\xBE\xEF", 14,
69 GG_UINT64_C(0x10000) }, 69 GG_UINT64_C(0x10000) },
70 { "\x81\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDE\xAD\xBE\xEF", 14, 70 { "\x81\xFF\x7F\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xDE\xAD\xBE\xEF", 14,
71 GG_UINT64_C(0x7FFFFFFFFFFFFFFF) } 71 GG_UINT64_C(0x7FFFFFFFFFFFFFFF) }
72 }; 72 };
73 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 73 static const int kNumTests = arraysize(kTests);
74 74
75 WebSocketMaskingKey masking_key; 75 WebSocketMaskingKey masking_key;
76 std::copy(kMaskingKey, 76 std::copy(kMaskingKey,
77 kMaskingKey + WebSocketFrameHeader::kMaskingKeyLength, 77 kMaskingKey + WebSocketFrameHeader::kMaskingKeyLength,
78 masking_key.key); 78 masking_key.key);
79 79
80 for (int i = 0; i < kNumTests; ++i) { 80 for (int i = 0; i < kNumTests; ++i) {
81 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText); 81 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText);
82 header.final = true; 82 header.final = true;
83 header.masked = true; 83 header.masked = true;
(...skipping 28 matching lines...) Expand all
112 { "\x84\x00", 2, 0x4 }, 112 { "\x84\x00", 2, 0x4 },
113 { "\x85\x00", 2, 0x5 }, 113 { "\x85\x00", 2, 0x5 },
114 { "\x86\x00", 2, 0x6 }, 114 { "\x86\x00", 2, 0x6 },
115 { "\x87\x00", 2, 0x7 }, 115 { "\x87\x00", 2, 0x7 },
116 { "\x8B\x00", 2, 0xB }, 116 { "\x8B\x00", 2, 0xB },
117 { "\x8C\x00", 2, 0xC }, 117 { "\x8C\x00", 2, 0xC },
118 { "\x8D\x00", 2, 0xD }, 118 { "\x8D\x00", 2, 0xD },
119 { "\x8E\x00", 2, 0xE }, 119 { "\x8E\x00", 2, 0xE },
120 { "\x8F\x00", 2, 0xF } 120 { "\x8F\x00", 2, 0xF }
121 }; 121 };
122 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 122 static const int kNumTests = arraysize(kTests);
123 123
124 for (int i = 0; i < kNumTests; ++i) { 124 for (int i = 0; i < kNumTests; ++i) {
125 WebSocketFrameHeader header(kTests[i].opcode); 125 WebSocketFrameHeader header(kTests[i].opcode);
126 header.final = true; 126 header.final = true;
127 header.payload_length = 0; 127 header.payload_length = 0;
128 128
129 std::vector<char> expected_output( 129 std::vector<char> expected_output(
130 kTests[i].frame_header, 130 kTests[i].frame_header,
131 kTests[i].frame_header + kTests[i].frame_header_length); 131 kTests[i].frame_header + kTests[i].frame_header_length);
132 std::vector<char> output(expected_output.size()); 132 std::vector<char> output(expected_output.size());
(...skipping 15 matching lines...) Expand all
148 }; 148 };
149 static const TestCase kTests[] = { 149 static const TestCase kTests[] = {
150 { "\x81\x00", 2, true, false, false, false }, 150 { "\x81\x00", 2, true, false, false, false },
151 { "\x01\x00", 2, false, false, false, false }, 151 { "\x01\x00", 2, false, false, false, false },
152 { "\xC1\x00", 2, true, true, false, false }, 152 { "\xC1\x00", 2, true, true, false, false },
153 { "\xA1\x00", 2, true, false, true, false }, 153 { "\xA1\x00", 2, true, false, true, false },
154 { "\x91\x00", 2, true, false, false, true }, 154 { "\x91\x00", 2, true, false, false, true },
155 { "\x71\x00", 2, false, true, true, true }, 155 { "\x71\x00", 2, false, true, true, true },
156 { "\xF1\x00", 2, true, true, true, true } 156 { "\xF1\x00", 2, true, true, true, true }
157 }; 157 };
158 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 158 static const int kNumTests = arraysize(kTests);
159 159
160 for (int i = 0; i < kNumTests; ++i) { 160 for (int i = 0; i < kNumTests; ++i) {
161 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText); 161 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText);
162 header.final = kTests[i].final; 162 header.final = kTests[i].final;
163 header.reserved1 = kTests[i].reserved1; 163 header.reserved1 = kTests[i].reserved1;
164 header.reserved2 = kTests[i].reserved2; 164 header.reserved2 = kTests[i].reserved2;
165 header.reserved3 = kTests[i].reserved3; 165 header.reserved3 = kTests[i].reserved3;
166 header.payload_length = 0; 166 header.payload_length = 0;
167 167
168 std::vector<char> expected_output( 168 std::vector<char> expected_output(
(...skipping 20 matching lines...) Expand all
189 { GG_UINT64_C(0xFFFF), false, 4u }, 189 { GG_UINT64_C(0xFFFF), false, 4u },
190 { GG_UINT64_C(0x10000), false, 10u }, 190 { GG_UINT64_C(0x10000), false, 10u },
191 { GG_UINT64_C(0x7FFFFFFFFFFFFFFF), false, 10u }, 191 { GG_UINT64_C(0x7FFFFFFFFFFFFFFF), false, 10u },
192 { GG_UINT64_C(0), true, 6u }, 192 { GG_UINT64_C(0), true, 6u },
193 { GG_UINT64_C(125), true, 6u }, 193 { GG_UINT64_C(125), true, 6u },
194 { GG_UINT64_C(126), true, 8u }, 194 { GG_UINT64_C(126), true, 8u },
195 { GG_UINT64_C(0xFFFF), true, 8u }, 195 { GG_UINT64_C(0xFFFF), true, 8u },
196 { GG_UINT64_C(0x10000), true, 14u }, 196 { GG_UINT64_C(0x10000), true, 14u },
197 { GG_UINT64_C(0x7FFFFFFFFFFFFFFF), true, 14u } 197 { GG_UINT64_C(0x7FFFFFFFFFFFFFFF), true, 14u }
198 }; 198 };
199 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 199 static const int kNumTests = arraysize(kTests);
200 200
201 for (int i = 0; i < kNumTests; ++i) { 201 for (int i = 0; i < kNumTests; ++i) {
202 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText); 202 WebSocketFrameHeader header(WebSocketFrameHeader::kOpCodeText);
203 header.final = true; 203 header.final = true;
204 header.opcode = WebSocketFrameHeader::kOpCodeText; 204 header.opcode = WebSocketFrameHeader::kOpCodeText;
205 header.masked = kTests[i].masked; 205 header.masked = kTests[i].masked;
206 header.payload_length = kTests[i].payload_length; 206 header.payload_length = kTests[i].payload_length;
207 207
208 char dummy_buffer[14]; 208 char dummy_buffer[14];
209 // Set an insufficient size to |buffer_size|. 209 // Set an insufficient size to |buffer_size|.
(...skipping 18 matching lines...) Expand all
228 { "\xDE\xAD\xBE\xEF", 2, "FooBar", "\xF8\x80\xB1\xEF\xDF\x9D", 6 }, 228 { "\xDE\xAD\xBE\xEF", 2, "FooBar", "\xF8\x80\xB1\xEF\xDF\x9D", 6 },
229 { "\xDE\xAD\xBE\xEF", 3, "FooBar", "\xA9\xB1\xC2\xFC\x8E\xAC", 6 }, 229 { "\xDE\xAD\xBE\xEF", 3, "FooBar", "\xA9\xB1\xC2\xFC\x8E\xAC", 6 },
230 { "\xDE\xAD\xBE\xEF", 4, "FooBar", "\x98\xC2\xD1\xAD\xBF\xDF", 6 }, 230 { "\xDE\xAD\xBE\xEF", 4, "FooBar", "\x98\xC2\xD1\xAD\xBF\xDF", 6 },
231 { "\xDE\xAD\xBE\xEF", 42, "FooBar", "\xF8\x80\xB1\xEF\xDF\x9D", 6 }, 231 { "\xDE\xAD\xBE\xEF", 42, "FooBar", "\xF8\x80\xB1\xEF\xDF\x9D", 6 },
232 { "\xDE\xAD\xBE\xEF", 0, "", "", 0 }, 232 { "\xDE\xAD\xBE\xEF", 0, "", "", 0 },
233 { "\xDE\xAD\xBE\xEF", 0, "\xDE\xAD\xBE\xEF", "\x00\x00\x00\x00", 4 }, 233 { "\xDE\xAD\xBE\xEF", 0, "\xDE\xAD\xBE\xEF", "\x00\x00\x00\x00", 4 },
234 { "\xDE\xAD\xBE\xEF", 0, "\x00\x00\x00\x00", "\xDE\xAD\xBE\xEF", 4 }, 234 { "\xDE\xAD\xBE\xEF", 0, "\x00\x00\x00\x00", "\xDE\xAD\xBE\xEF", 4 },
235 { "\x00\x00\x00\x00", 0, "FooBar", "FooBar", 6 }, 235 { "\x00\x00\x00\x00", 0, "FooBar", "FooBar", 6 },
236 { "\xFF\xFF\xFF\xFF", 0, "FooBar", "\xB9\x90\x90\xBD\x9E\x8D", 6 }, 236 { "\xFF\xFF\xFF\xFF", 0, "FooBar", "\xB9\x90\x90\xBD\x9E\x8D", 6 },
237 }; 237 };
238 static const int kNumTests = ARRAYSIZE_UNSAFE(kTests); 238 static const int kNumTests = arraysize(kTests);
239 239
240 for (int i = 0; i < kNumTests; ++i) { 240 for (int i = 0; i < kNumTests; ++i) {
241 WebSocketMaskingKey masking_key; 241 WebSocketMaskingKey masking_key;
242 std::copy(kTests[i].masking_key, 242 std::copy(kTests[i].masking_key,
243 kTests[i].masking_key + WebSocketFrameHeader::kMaskingKeyLength, 243 kTests[i].masking_key + WebSocketFrameHeader::kMaskingKeyLength,
244 masking_key.key); 244 masking_key.key);
245 std::vector<char> frame_data(kTests[i].input, 245 std::vector<char> frame_data(kTests[i].input,
246 kTests[i].input + kTests[i].data_length); 246 kTests[i].input + kTests[i].data_length);
247 std::vector<char> expected_output(kTests[i].output, 247 std::vector<char> expected_output(kTests[i].output,
248 kTests[i].output + kTests[i].data_length); 248 kTests[i].output + kTests[i].data_length);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 EXPECT_FALSE(Frame::IsKnownControlOpCode(0xF)); 385 EXPECT_FALSE(Frame::IsKnownControlOpCode(0xF));
386 386
387 // Check that out-of-range opcodes return false 387 // Check that out-of-range opcodes return false
388 EXPECT_FALSE(Frame::IsKnownControlOpCode(-1)); 388 EXPECT_FALSE(Frame::IsKnownControlOpCode(-1));
389 EXPECT_FALSE(Frame::IsKnownControlOpCode(0xFF)); 389 EXPECT_FALSE(Frame::IsKnownControlOpCode(0xFF));
390 } 390 }
391 391
392 } // namespace 392 } // namespace
393 393
394 } // namespace net 394 } // namespace net
OLDNEW
« no previous file with comments | « net/websockets/websocket_frame_parser_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698