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

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

Issue 2660793002: Add transport security state generator tests. (Closed)
Patch Set: export method for tests Created 3 years, 10 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/gtest/include/gtest/gtest.h"
7
8 namespace net {
9
10 namespace transport_security_state {
11
12 // Test that single bits are written to the buffer correctly.
13 TEST(BitWriterTest, WriteBit) {
14 BitWriter writer;
15
16 EXPECT_EQ(0U, writer.position());
17 EXPECT_EQ(0U, writer.bytes().size());
18
19 writer.WriteBit(0);
20
21 EXPECT_EQ(1U, writer.position());
22 EXPECT_EQ(0U, writer.bytes().size());
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 EXPECT_EQ(1U, writer.bytes().size());
34
35 // 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 = 0x55.
36 EXPECT_EQ(0x55, writer.bytes()[0]);
37
38 writer.WriteBit(0);
39
40 EXPECT_EQ(9U, writer.position());
41 EXPECT_EQ(1U, writer.bytes().size());
42
43 writer.WriteBit(1);
44 writer.WriteBit(0);
45
46 EXPECT_EQ(11U, writer.position());
47 EXPECT_EQ(1U, writer.bytes().size());
48
49 // Flush should pad the current byte with zero's until it's full.
50 writer.Flush();
51
52 // The writer should have 2 bytes now even though we only wrote 11 bits.
53 EXPECT_EQ(16U, writer.position());
54 EXPECT_EQ(2U, writer.bytes().size());
55
56 // 0 | 1 | 0 | 00000 (padding) = 0x40.
57 EXPECT_EQ(0x40, writer.bytes()[1]);
58 }
59
60 // Test that when multiple bits are written to the buffer, they are appended
61 // correctly.
62 TEST(BitWriterTest, WriteBits) {
63 BitWriter writer;
64
65 writer.WriteBits(170, 1);
66
67 EXPECT_EQ(1U, writer.position());
68 EXPECT_EQ(0U, writer.bytes().size());
69
70 writer.WriteBits(170, 2);
71
72 EXPECT_EQ(3U, writer.position());
73 EXPECT_EQ(0U, writer.bytes().size());
74
75 writer.WriteBits(170, 3);
76
77 EXPECT_EQ(6U, writer.position());
78 EXPECT_EQ(0U, writer.bytes().size());
79
80 writer.WriteBits(170, 2);
81
82 EXPECT_EQ(8U, writer.position());
83 EXPECT_EQ(1U, writer.bytes().size());
84
85 // 0 | 10 | 010 | 10 = 0x4A.
86 EXPECT_EQ(0x4A, writer.bytes()[0]);
87
88 writer.WriteBits(170, 2);
89
90 EXPECT_EQ(10U, writer.position());
91 EXPECT_EQ(1U, writer.bytes().size());
92
93 // Flush should pad the current byte with zero's until it's full.
94 writer.Flush();
95
96 // The writer should have 2 bytes now even though we only wrote 10 bits.
97 EXPECT_EQ(16U, writer.position());
98 EXPECT_EQ(2U, writer.bytes().size());
99
100 // 10 | 000000 (padding) = 0x80
101 EXPECT_EQ(0x80, writer.bytes()[1]);
102 }
103
104 // Test that buffering works correct when the methods are mixed.
105 TEST(BitWriterTest, WriteBoth) {
106 BitWriter writer;
107
108 writer.WriteBits(170, 1);
109
110 EXPECT_EQ(1U, writer.position());
111 EXPECT_EQ(0U, writer.bytes().size());
112
113 writer.WriteBit(1);
114 writer.WriteBits(170, 2);
115
116 EXPECT_EQ(4U, writer.position());
117 EXPECT_EQ(0U, writer.bytes().size());
118
119 writer.WriteBits(170, 3);
120
121 EXPECT_EQ(7U, writer.position());
122 EXPECT_EQ(0U, writer.bytes().size());
123
124 writer.WriteBit(1);
125
126 EXPECT_EQ(8U, writer.position());
127 EXPECT_EQ(1U, writer.bytes().size());
128
129 // 0 | 1 | 10 | 010 | 1 = 0x65
130 EXPECT_EQ(0x65, writer.bytes()[0]);
131
132 writer.WriteBits(170, 2);
133 writer.WriteBit(0);
134
135 EXPECT_EQ(11U, writer.position());
136 EXPECT_EQ(1U, writer.bytes().size());
137
138 // Flush should pad the current byte with zero's until it's full.
139 writer.Flush();
140
141 // The writer should have 2 bytes now even though we only wrote 10 bits.
142 EXPECT_EQ(16U, writer.position());
143 EXPECT_EQ(2U, writer.bytes().size());
144
145 // 10 | 0 | 00000 (padding) = 0x80
146 EXPECT_EQ(0x80, writer.bytes()[1]);
147 }
148
149 } // transport_security_state
150
151 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698