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

Side by Side Diff: net/tools/transport_security_state_generator/bit_writer_unittest.cc

Issue 2775053002: Add unittests for different transport security state generator components. (Closed)
Patch Set: update tests. Created 3 years, 9 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
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "net/tools/transport_security_state_generator/bit_writer.h"
6 #include "testing/gmock/include/gmock/gmock.h"
7 #include "testing/gtest/include/gtest/gtest.h"
8
9 namespace net {
10
11 namespace transport_security_state {
12
Ryan Sleevi 2017/03/30 15:03:32 A common idiom is to put these tests in an extra (
martijnc 2017/03/30 19:02:22 I put them in an extra namespace, this still seems
13 // Test that single bits are written to the buffer correctly.
14 TEST(BitWriterTest, WriteBit) {
15 BitWriter writer;
16
17 EXPECT_EQ(0U, writer.position());
18 EXPECT_EQ(0U, writer.bytes().size());
19
20 writer.WriteBit(0);
21
22 EXPECT_EQ(1U, writer.position());
23
24 writer.WriteBit(1);
25 writer.WriteBit(0);
26 writer.WriteBit(1);
27 writer.WriteBit(0);
28 writer.WriteBit(1);
29 writer.WriteBit(0);
30 writer.WriteBit(1);
31
32 EXPECT_EQ(8U, writer.position());
33
34 writer.WriteBit(0);
35
36 EXPECT_EQ(9U, writer.position());
37
38 writer.WriteBit(1);
39 writer.WriteBit(0);
40
41 EXPECT_EQ(11U, writer.position());
42
43 // Flush should pad the current byte with zero's until it's full.
44 writer.Flush();
45
46 // The writer should have 2 bytes now even though we only wrote 11 bits.
47 EXPECT_EQ(16U, writer.position());
48
49 // 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 00000 (padding) = 0x5540.
50 EXPECT_THAT(writer.bytes(), testing::ElementsAre(0x55, 0x40));
51 }
52
53 // Test that when multiple bits are written to the buffer, they are appended
54 // correctly.
55 TEST(BitWriterTest, WriteBits) {
56 BitWriter writer;
57
58 writer.WriteBits(170, 1);
Ryan Sleevi 2017/03/30 15:03:32 It took a quick consult of the table to find out 1
martijnc 2017/03/30 19:02:22 Added a comment and replaced 170 with 0xAA.
59 EXPECT_EQ(1U, writer.position());
60 writer.WriteBits(170, 2);
61 EXPECT_EQ(3U, writer.position());
62 writer.WriteBits(170, 3);
63 EXPECT_EQ(6U, writer.position());
64 writer.WriteBits(170, 2);
65 EXPECT_EQ(8U, writer.position());
66 writer.WriteBits(170, 2);
67 EXPECT_EQ(10U, writer.position());
68
69 // Flush should pad the current byte with zero's until it's full.
70 writer.Flush();
71
72 // The writer should have 2 bytes now even though we only wrote 10 bits.
73 EXPECT_EQ(16U, writer.position());
74
75 // 0 + 10 + 010 + 10 + 10 + 000000 (padding) = 0x4A80
76 EXPECT_THAT(writer.bytes(), testing::ElementsAre(0x4A, 0x80));
77 }
78
79 // Test that buffering works correct when the methods are mixed.
80 TEST(BitWriterTest, WriteBoth) {
81 BitWriter writer;
82
83 writer.WriteBits(170, 1);
84 EXPECT_EQ(1U, writer.position());
85 writer.WriteBit(1);
86 writer.WriteBits(170, 2);
87 EXPECT_EQ(4U, writer.position());
88 writer.WriteBits(170, 3);
89 EXPECT_EQ(7U, writer.position());
90 writer.WriteBit(1);
91 EXPECT_EQ(8U, writer.position());
92
93 writer.WriteBits(170, 2);
94 writer.WriteBit(0);
95 EXPECT_EQ(11U, writer.position());
96
97 // Flush should pad the current byte with zero's until it's full.
98 writer.Flush();
99
100 // The writer should have 2 bytes now even though we only wrote 10 bits.
101 EXPECT_EQ(16U, writer.position());
102
103 // 0 + 1 + 10 + 010 + 1 + 10 + 0 + 00000 (padding) = 0x6580
104 EXPECT_THAT(writer.bytes(), testing::ElementsAre(0x65, 0x80));
105 }
106
107 } // transport_security_state
108
109 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698