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

Side by Side Diff: net/spdy/hpack_huffman_table_test.cc

Issue 247793002: HPACK: Refactor and simplify HpackOutputStream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « net/spdy/hpack_encoder_test.cc ('k') | net/spdy/hpack_output_stream.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/spdy/hpack_huffman_table.h" 5 #include "net/spdy/hpack_huffman_table.h"
6 6
7 #include <bitset> 7 #include <bitset>
8 #include <string> 8 #include <string>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 char input_storage[] = {2, 3, 2, 7, 4}; 253 char input_storage[] = {2, 3, 2, 7, 4};
254 StringPiece input(input_storage, arraysize(input_storage)); 254 StringPiece input(input_storage, arraysize(input_storage));
255 // By symbol: (2) 00 (3) 010 (2) 00 (7) 10010 (4) 10000 (6 as pad) 1001100. 255 // By symbol: (2) 00 (3) 010 (2) 00 (7) 10010 (4) 10000 (6 as pad) 1001100.
256 char expect_storage[] = { 256 char expect_storage[] = {
257 bits8("00010001"), 257 bits8("00010001"),
258 bits8("00101000"), 258 bits8("00101000"),
259 bits8("01001100")}; 259 bits8("01001100")};
260 StringPiece expect(expect_storage, arraysize(expect_storage)); 260 StringPiece expect(expect_storage, arraysize(expect_storage));
261 261
262 string buffer_in, buffer_out; 262 string buffer_in, buffer_out;
263 HpackOutputStream output_stream(kuint32max); 263 HpackOutputStream output_stream;
264 table.EncodeString(input, &output_stream); 264 table.EncodeString(input, &output_stream);
265 output_stream.TakeString(&buffer_in); 265 output_stream.TakeString(&buffer_in);
266 EXPECT_EQ(buffer_in, expect); 266 EXPECT_EQ(buffer_in, expect);
267 267
268 HpackInputStream input_stream(kuint32max, buffer_in); 268 HpackInputStream input_stream(kuint32max, buffer_in);
269 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out)); 269 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out));
270 EXPECT_EQ(buffer_out, input); 270 EXPECT_EQ(buffer_out, input);
271 } 271 }
272 272
273 TEST(HpackHuffmanTableTest, ValidateMultiLevelDecodeTables) { 273 TEST(HpackHuffmanTableTest, ValidateMultiLevelDecodeTables) {
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 "\x4e\xb0\x8b\x74\x97\x90\xfa\x7f", 383 "\x4e\xb0\x8b\x74\x97\x90\xfa\x7f",
384 "custom-key", 384 "custom-key",
385 "\x4e\xb0\x8b\x74\x97\x9a\x17\xa8\xff", 385 "\x4e\xb0\x8b\x74\x97\x9a\x17\xa8\xff",
386 "custom-value", 386 "custom-value",
387 }; 387 };
388 // Round-trip each test example. 388 // Round-trip each test example.
389 for (size_t i = 0; i != arraysize(test_table); i += 2) { 389 for (size_t i = 0; i != arraysize(test_table); i += 2) {
390 const string& encoded(test_table[i]); 390 const string& encoded(test_table[i]);
391 const string& decoded(test_table[i+1]); 391 const string& decoded(test_table[i+1]);
392 HpackInputStream input_stream(kuint32max, encoded); 392 HpackInputStream input_stream(kuint32max, encoded);
393 HpackOutputStream output_stream(kuint32max); 393 HpackOutputStream output_stream;
394 394
395 buffer.reserve(decoded.size()); 395 buffer.reserve(decoded.size());
396 EXPECT_TRUE(table.DecodeString(&input_stream, decoded.size(), &buffer)); 396 EXPECT_TRUE(table.DecodeString(&input_stream, decoded.size(), &buffer));
397 EXPECT_EQ(decoded, buffer); 397 EXPECT_EQ(decoded, buffer);
398 table.EncodeString(decoded, &output_stream); 398 table.EncodeString(decoded, &output_stream);
399 output_stream.TakeString(&buffer); 399 output_stream.TakeString(&buffer);
400 EXPECT_EQ(encoded, buffer); 400 EXPECT_EQ(encoded, buffer);
401 } 401 }
402 } 402 }
403 403
(...skipping 15 matching lines...) Expand all
419 "\xfb\x7e\xbb\xbe\x9f\x5f\x87\xe3\x7f\xef\xed\xfa\xee\xfa\x7c\x3f" 419 "\xfb\x7e\xbb\xbe\x9f\x5f\x87\xe3\x7f\xef\xed\xfa\xee\xfa\x7c\x3f"
420 "\x1d\x5d\x1a\x23\xce\x54\x64\x36\xcd\x49\x4b\xd5\xd1\xcc\x5f\x05" 420 "\x1d\x5d\x1a\x23\xce\x54\x64\x36\xcd\x49\x4b\xd5\xd1\xcc\x5f\x05"
421 "\x35\x96\x9b", 421 "\x35\x96\x9b",
422 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1", 422 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1",
423 }; 423 };
424 // Round-trip each test example. 424 // Round-trip each test example.
425 for (size_t i = 0; i != arraysize(test_table); i += 2) { 425 for (size_t i = 0; i != arraysize(test_table); i += 2) {
426 const string& encoded(test_table[i]); 426 const string& encoded(test_table[i]);
427 const string& decoded(test_table[i+1]); 427 const string& decoded(test_table[i+1]);
428 HpackInputStream input_stream(kuint32max, encoded); 428 HpackInputStream input_stream(kuint32max, encoded);
429 HpackOutputStream output_stream(kuint32max); 429 HpackOutputStream output_stream;
430 430
431 buffer.reserve(decoded.size()); 431 buffer.reserve(decoded.size());
432 EXPECT_TRUE(table.DecodeString(&input_stream, decoded.size(), &buffer)); 432 EXPECT_TRUE(table.DecodeString(&input_stream, decoded.size(), &buffer));
433 EXPECT_EQ(decoded, buffer); 433 EXPECT_EQ(decoded, buffer);
434 table.EncodeString(decoded, &output_stream); 434 table.EncodeString(decoded, &output_stream);
435 output_stream.TakeString(&buffer); 435 output_stream.TakeString(&buffer);
436 EXPECT_EQ(encoded, buffer); 436 EXPECT_EQ(encoded, buffer);
437 } 437 }
438 } 438 }
439 439
440 TEST(HpackHuffmanTableTest, RoundTripIndvidualSymbols) { 440 TEST(HpackHuffmanTableTest, RoundTripIndvidualSymbols) {
441 const HpackHuffmanTable& table(ObtainHpackHuffmanTable()); 441 const HpackHuffmanTable& table(ObtainHpackHuffmanTable());
442 442
443 for (size_t i = 0; i != 256; i++) { 443 for (size_t i = 0; i != 256; i++) {
444 char c = static_cast<char>(i); 444 char c = static_cast<char>(i);
445 char storage[3] = {c, c, c}; 445 char storage[3] = {c, c, c};
446 StringPiece input(storage, arraysize(storage)); 446 StringPiece input(storage, arraysize(storage));
447 447
448 string buffer_in, buffer_out(input.size(), '\0'); 448 string buffer_in, buffer_out(input.size(), '\0');
449 HpackOutputStream output_stream(kuint32max); 449 HpackOutputStream output_stream;
450 table.EncodeString(input, &output_stream); 450 table.EncodeString(input, &output_stream);
451 output_stream.TakeString(&buffer_in); 451 output_stream.TakeString(&buffer_in);
452 452
453 HpackInputStream input_stream(kuint32max, buffer_in); 453 HpackInputStream input_stream(kuint32max, buffer_in);
454 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out)); 454 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out));
455 EXPECT_EQ(input, buffer_out); 455 EXPECT_EQ(input, buffer_out);
456 } 456 }
457 } 457 }
458 458
459 TEST(HpackHuffmanTableTest, RoundTripSymbolSequence) { 459 TEST(HpackHuffmanTableTest, RoundTripSymbolSequence) {
460 const HpackHuffmanTable& table(ObtainHpackHuffmanTable()); 460 const HpackHuffmanTable& table(ObtainHpackHuffmanTable());
461 461
462 char storage[512]; 462 char storage[512];
463 for (size_t i = 0; i != 256; i++) { 463 for (size_t i = 0; i != 256; i++) {
464 storage[i] = static_cast<char>(i); 464 storage[i] = static_cast<char>(i);
465 storage[511 - i] = static_cast<char>(i); 465 storage[511 - i] = static_cast<char>(i);
466 } 466 }
467 StringPiece input(storage, arraysize(storage)); 467 StringPiece input(storage, arraysize(storage));
468 468
469 string buffer_in, buffer_out(input.size(), '\0'); 469 string buffer_in, buffer_out(input.size(), '\0');
470 HpackOutputStream output_stream(kuint32max); 470 HpackOutputStream output_stream;
471 table.EncodeString(input, &output_stream); 471 table.EncodeString(input, &output_stream);
472 output_stream.TakeString(&buffer_in); 472 output_stream.TakeString(&buffer_in);
473 473
474 HpackInputStream input_stream(kuint32max, buffer_in); 474 HpackInputStream input_stream(kuint32max, buffer_in);
475 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out)); 475 EXPECT_TRUE(table.DecodeString(&input_stream, input.size(), &buffer_out));
476 EXPECT_EQ(input, buffer_out); 476 EXPECT_EQ(input, buffer_out);
477 } 477 }
478 478
479 } // namespace 479 } // namespace
480 480
481 } // namespace test 481 } // namespace test
482 482
483 } // namespace net 483 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/hpack_encoder_test.cc ('k') | net/spdy/hpack_output_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698