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

Side by Side Diff: net/spdy/hpack/hpack_input_stream_test.cc

Issue 1535363003: Switch to standard integer types in net/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: stddef Created 5 years 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/spdy/hpack/hpack_input_stream.cc ('k') | net/spdy/hpack/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/hpack_input_stream.h" 5 #include "net/spdy/hpack/hpack_input_stream.h"
6 6
7 #include <bitset> 7 #include <bitset>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 27 matching lines...) Expand all
38 // Hex representation of encoded length and Huffman string. 38 // Hex representation of encoded length and Huffman string.
39 const char kEncodedHuffmanFixture[] = 39 const char kEncodedHuffmanFixture[] =
40 "2d" // Length prefix. 40 "2d" // Length prefix.
41 "94e7821dd7f2e6c7b335dfdfcd5b3960" 41 "94e7821dd7f2e6c7b335dfdfcd5b3960"
42 "d5af27087f3672c1ab270fb5291f9587" 42 "d5af27087f3672c1ab270fb5291f9587"
43 "316065c003ed4ee5b1063d5007"; 43 "316065c003ed4ee5b1063d5007";
44 44
45 const char kDecodedHuffmanFixture[] = 45 const char kDecodedHuffmanFixture[] =
46 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1"; 46 "foo=ASDJKHQKBZXOQWEOPIUAXQWEOIU; max-age=3600; version=1";
47 47
48 // Utility function to decode an assumed-valid uint32 with an N-bit 48 // Utility function to decode an assumed-valid uint32_t with an N-bit
49 // prefix. 49 // prefix.
50 uint32 DecodeValidUint32(uint8 N, StringPiece str) { 50 uint32_t DecodeValidUint32(uint8_t N, StringPiece str) {
51 EXPECT_GT(N, 0); 51 EXPECT_GT(N, 0);
52 EXPECT_LE(N, 8); 52 EXPECT_LE(N, 8);
53 HpackInputStream input_stream(kLiteralBound, str); 53 HpackInputStream input_stream(kLiteralBound, str);
54 input_stream.SetBitOffsetForTest(8 - N); 54 input_stream.SetBitOffsetForTest(8 - N);
55 uint32 I; 55 uint32_t I;
56 EXPECT_TRUE(input_stream.DecodeNextUint32(&I)); 56 EXPECT_TRUE(input_stream.DecodeNextUint32(&I));
57 return I; 57 return I;
58 } 58 }
59 59
60 // Utility function to decode an assumed-invalid uint32 with an N-bit 60 // Utility function to decode an assumed-invalid uint32_t with an N-bit
61 // prefix. 61 // prefix.
62 void ExpectDecodeUint32Invalid(uint8 N, StringPiece str) { 62 void ExpectDecodeUint32Invalid(uint8_t N, StringPiece str) {
63 EXPECT_GT(N, 0); 63 EXPECT_GT(N, 0);
64 EXPECT_LE(N, 8); 64 EXPECT_LE(N, 8);
65 HpackInputStream input_stream(kLiteralBound, str); 65 HpackInputStream input_stream(kLiteralBound, str);
66 input_stream.SetBitOffsetForTest(8 - N); 66 input_stream.SetBitOffsetForTest(8 - N);
67 uint32 I; 67 uint32_t I;
68 EXPECT_FALSE(input_stream.DecodeNextUint32(&I)); 68 EXPECT_FALSE(input_stream.DecodeNextUint32(&I));
69 } 69 }
70 70
71 uint32 bits32(const string& bitstring) { 71 uint32_t bits32(const string& bitstring) {
72 return std::bitset<32>(bitstring).to_ulong(); 72 return std::bitset<32>(bitstring).to_ulong();
73 } 73 }
74 74
75 // The {Number}ByteIntegersEightBitPrefix tests below test that 75 // The {Number}ByteIntegersEightBitPrefix tests below test that
76 // certain integers are decoded correctly with an 8-bit prefix in 76 // certain integers are decoded correctly with an 8-bit prefix in
77 // exactly {Number} bytes. 77 // exactly {Number} bytes.
78 78
79 TEST_F(HpackInputStreamTest, OneByteIntegersEightBitPrefix) { 79 TEST_F(HpackInputStreamTest, OneByteIntegersEightBitPrefix) {
80 // Minimum. 80 // Minimum.
81 EXPECT_EQ(0x00u, DecodeValidUint32(8, string("\x00", 1))); 81 EXPECT_EQ(0x00u, DecodeValidUint32(8, string("\x00", 1)));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 // Minimum. 140 // Minimum.
141 EXPECT_EQ(0x100000ffu, DecodeValidUint32(8, "\xff\x80\x80\x80\x80\x01")); 141 EXPECT_EQ(0x100000ffu, DecodeValidUint32(8, "\xff\x80\x80\x80\x80\x01"));
142 // Maximum. 142 // Maximum.
143 EXPECT_EQ(0xffffffffu, DecodeValidUint32(8, "\xff\x80\xfe\xff\xff\x0f")); 143 EXPECT_EQ(0xffffffffu, DecodeValidUint32(8, "\xff\x80\xfe\xff\xff\x0f"));
144 // Invalid. 144 // Invalid.
145 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x00"); 145 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x00");
146 ExpectDecodeUint32Invalid(8, "\xff\x80\xfe\xff\xff\x10"); 146 ExpectDecodeUint32Invalid(8, "\xff\x80\xfe\xff\xff\x10");
147 ExpectDecodeUint32Invalid(8, "\xff\xff\xff\xff\xff\xff"); 147 ExpectDecodeUint32Invalid(8, "\xff\xff\xff\xff\xff\xff");
148 } 148 }
149 149
150 // There are no valid uint32 encodings that are greater than six 150 // There are no valid uint32_t encodings that are greater than six
151 // bytes. 151 // bytes.
152 TEST_F(HpackInputStreamTest, SevenByteIntegersEightBitPrefix) { 152 TEST_F(HpackInputStreamTest, SevenByteIntegersEightBitPrefix) {
153 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x80\x00"); 153 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x80\x00");
154 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x80\x01"); 154 ExpectDecodeUint32Invalid(8, "\xff\x80\x80\x80\x80\x80\x01");
155 ExpectDecodeUint32Invalid(8, "\xff\xff\xff\xff\xff\xff\xff"); 155 ExpectDecodeUint32Invalid(8, "\xff\xff\xff\xff\xff\xff\xff");
156 } 156 }
157 157
158 // The {Number}ByteIntegersOneToSevenBitPrefix tests below test that 158 // The {Number}ByteIntegersOneToSevenBitPrefix tests below test that
159 // certain integers are encoded correctly with an N-bit prefix in 159 // certain integers are encoded correctly with an N-bit prefix in
160 // exactly {Number} bytes for N in {1, 2, ..., 7}. 160 // exactly {Number} bytes for N in {1, 2, ..., 7}.
(...skipping 291 matching lines...) Expand 10 before | Expand all | Expand 10 after
452 ExpectDecodeUint32Invalid(4, "\x0f\xf0\xff\xff\xff\x10"); 452 ExpectDecodeUint32Invalid(4, "\x0f\xf0\xff\xff\xff\x10");
453 ExpectDecodeUint32Invalid(4, "\xff\xf0\xff\xff\xff\xff"); 453 ExpectDecodeUint32Invalid(4, "\xff\xf0\xff\xff\xff\xff");
454 ExpectDecodeUint32Invalid(3, "\x07\xf8\xff\xff\xff\x10"); 454 ExpectDecodeUint32Invalid(3, "\x07\xf8\xff\xff\xff\x10");
455 ExpectDecodeUint32Invalid(3, "\xff\xf8\xff\xff\xff\xff"); 455 ExpectDecodeUint32Invalid(3, "\xff\xf8\xff\xff\xff\xff");
456 ExpectDecodeUint32Invalid(2, "\x03\xfc\xff\xff\xff\x10"); 456 ExpectDecodeUint32Invalid(2, "\x03\xfc\xff\xff\xff\x10");
457 ExpectDecodeUint32Invalid(2, "\xff\xfc\xff\xff\xff\xff"); 457 ExpectDecodeUint32Invalid(2, "\xff\xfc\xff\xff\xff\xff");
458 ExpectDecodeUint32Invalid(1, "\x01\xfe\xff\xff\xff\x10"); 458 ExpectDecodeUint32Invalid(1, "\x01\xfe\xff\xff\xff\x10");
459 ExpectDecodeUint32Invalid(1, "\xff\xfe\xff\xff\xff\xff"); 459 ExpectDecodeUint32Invalid(1, "\xff\xfe\xff\xff\xff\xff");
460 } 460 }
461 461
462 // There are no valid uint32 encodings that are greater than six 462 // There are no valid uint32_t encodings that are greater than six
463 // bytes. 463 // bytes.
464 TEST_F(HpackInputStreamTest, SevenByteIntegersOneToSevenBitPrefixes) { 464 TEST_F(HpackInputStreamTest, SevenByteIntegersOneToSevenBitPrefixes) {
465 ExpectDecodeUint32Invalid(7, "\x7f\x80\x80\x80\x80\x80\x00"); 465 ExpectDecodeUint32Invalid(7, "\x7f\x80\x80\x80\x80\x80\x00");
466 ExpectDecodeUint32Invalid(7, "\x7f\x80\x80\x80\x80\x80\x01"); 466 ExpectDecodeUint32Invalid(7, "\x7f\x80\x80\x80\x80\x80\x01");
467 ExpectDecodeUint32Invalid(7, "\xff\xff\xff\xff\xff\xff\xff"); 467 ExpectDecodeUint32Invalid(7, "\xff\xff\xff\xff\xff\xff\xff");
468 ExpectDecodeUint32Invalid(6, "\x3f\x80\x80\x80\x80\x80\x00"); 468 ExpectDecodeUint32Invalid(6, "\x3f\x80\x80\x80\x80\x80\x00");
469 ExpectDecodeUint32Invalid(6, "\x3f\x80\x80\x80\x80\x80\x01"); 469 ExpectDecodeUint32Invalid(6, "\x3f\x80\x80\x80\x80\x80\x01");
470 ExpectDecodeUint32Invalid(6, "\xff\xff\xff\xff\xff\xff\xff"); 470 ExpectDecodeUint32Invalid(6, "\xff\xff\xff\xff\xff\xff\xff");
471 ExpectDecodeUint32Invalid(5, "\x1f\x80\x80\x80\x80\x80\x00"); 471 ExpectDecodeUint32Invalid(5, "\x1f\x80\x80\x80\x80\x80\x00");
472 ExpectDecodeUint32Invalid(5, "\x1f\x80\x80\x80\x80\x80\x01"); 472 ExpectDecodeUint32Invalid(5, "\x1f\x80\x80\x80\x80\x80\x01");
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 HpackInputStream input_stream(arraysize(kDecodedHuffmanFixture) - 1, input); 543 HpackInputStream input_stream(arraysize(kDecodedHuffmanFixture) - 1, input);
544 544
545 // Not enough buffer for declared encoded length. 545 // Not enough buffer for declared encoded length.
546 EXPECT_TRUE(input_stream.HasMoreData()); 546 EXPECT_TRUE(input_stream.HasMoreData());
547 EXPECT_FALSE(input_stream.DecodeNextHuffmanString(huffman_table_, &output)); 547 EXPECT_FALSE(input_stream.DecodeNextHuffmanString(huffman_table_, &output));
548 } 548 }
549 549
550 TEST_F(HpackInputStreamTest, PeekBitsAndConsume) { 550 TEST_F(HpackInputStreamTest, PeekBitsAndConsume) {
551 HpackInputStream input_stream(kLiteralBound, "\xad\xab\xad\xab\xad"); 551 HpackInputStream input_stream(kLiteralBound, "\xad\xab\xad\xab\xad");
552 552
553 uint32 bits = 0; 553 uint32_t bits = 0;
554 size_t peeked_count = 0; 554 size_t peeked_count = 0;
555 555
556 // Read 0xad. 556 // Read 0xad.
557 EXPECT_TRUE(input_stream.PeekBits(&peeked_count, &bits)); 557 EXPECT_TRUE(input_stream.PeekBits(&peeked_count, &bits));
558 EXPECT_EQ(bits32("10101101000000000000000000000000"), bits); 558 EXPECT_EQ(bits32("10101101000000000000000000000000"), bits);
559 EXPECT_EQ(8u, peeked_count); 559 EXPECT_EQ(8u, peeked_count);
560 560
561 // Read 0xab. 561 // Read 0xab.
562 EXPECT_TRUE(input_stream.PeekBits(&peeked_count, &bits)); 562 EXPECT_TRUE(input_stream.PeekBits(&peeked_count, &bits));
563 EXPECT_EQ(bits32("10101101101010110000000000000000"), bits); 563 EXPECT_EQ(bits32("10101101101010110000000000000000"), bits);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 621
622 input_stream.ConsumeBits(6); 622 input_stream.ConsumeBits(6);
623 EXPECT_TRUE(input_stream.HasMoreData()); 623 EXPECT_TRUE(input_stream.HasMoreData());
624 input_stream.ConsumeByteRemainder(); 624 input_stream.ConsumeByteRemainder();
625 EXPECT_FALSE(input_stream.HasMoreData()); 625 EXPECT_FALSE(input_stream.HasMoreData());
626 } 626 }
627 627
628 } // namespace 628 } // namespace
629 629
630 } // namespace net 630 } // namespace net
OLDNEW
« no previous file with comments | « net/spdy/hpack/hpack_input_stream.cc ('k') | net/spdy/hpack/hpack_output_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698