30 static const uint8_t kData[] = {0x00, 0x11, 0x22, 0x33,
31 0x44, 0x55, 0x66, 0x77};
36 EXPECT_EQ(0U, bitstream.GetPos());
37 EXPECT_EQ(64U, bitstream.BitsRemaining());
41 EXPECT_EQ(8U, bitstream.GetPos());
42 EXPECT_EQ(56U, bitstream.BitsRemaining());
45 EXPECT_EQ(9U, bitstream.GetPos());
46 EXPECT_EQ(55U, bitstream.BitsRemaining());
49 EXPECT_EQ(11U, bitstream.GetPos());
50 EXPECT_EQ(53U, bitstream.BitsRemaining());
53 EXPECT_EQ(14U, bitstream.GetPos());
54 EXPECT_EQ(50U, bitstream.BitsRemaining());
57 EXPECT_EQ(18U, bitstream.GetPos());
58 EXPECT_EQ(46U, bitstream.BitsRemaining());
61 EXPECT_EQ(25U, bitstream.GetPos());
62 EXPECT_EQ(39U, bitstream.BitsRemaining());
65 EXPECT_EQ(34U, bitstream.GetPos());
66 EXPECT_EQ(30U, bitstream.BitsRemaining());
69 EXPECT_EQ(49U, bitstream.GetPos());
70 EXPECT_EQ(15U, bitstream.BitsRemaining());
74 EXPECT_EQ(49U, bitstream.GetPos());
75 EXPECT_EQ(15U, bitstream.BitsRemaining());
78 bitstream.SkipBits(14);
79 EXPECT_EQ(63U, bitstream.GetPos());
80 EXPECT_EQ(1U, bitstream.BitsRemaining());
81 bitstream.SkipBits(2);
82 EXPECT_EQ(65U, bitstream.GetPos());
83 EXPECT_EQ(0U, bitstream.BitsRemaining());
89 EXPECT_EQ(0U, bitstream.GetPos());
90 EXPECT_EQ(64U, bitstream.BitsRemaining());
93 bitstream.SkipBits(5);
94 EXPECT_EQ(5U, bitstream.GetPos());
95 EXPECT_EQ(59U, bitstream.BitsRemaining());
98 EXPECT_EQ(22U, bitstream.GetPos());
99 EXPECT_EQ(42U, bitstream.BitsRemaining());
103 EXPECT_EQ(24U, bitstream.GetPos());
104 EXPECT_EQ(40U, bitstream.BitsRemaining());
106 EXPECT_EQ(0x19A22AB3U, bitstream
.GetBits(31
));
107 EXPECT_EQ(55U, bitstream.GetPos());
108 EXPECT_EQ(9U, bitstream.BitsRemaining());
113 EXPECT_EQ(32U, bitstream.GetPos());
114 EXPECT_EQ(32U, bitstream.BitsRemaining());
117 bitstream.SkipBits(31);
118 EXPECT_EQ(0xA22AB33BU, bitstream
.GetBits(32
));
119 EXPECT_EQ(63U, bitstream.GetPos());
120 EXPECT_EQ(1U, bitstream.BitsRemaining());
123 bitstream.SkipBits(1000);
125 EXPECT_EQ(1063U, bitstream.GetPos());
126 EXPECT_EQ(0U, bitstream.BitsRemaining());
132 EXPECT_EQ(1064U, bitstream.GetPos());
133 EXPECT_EQ(0U, bitstream.BitsRemaining());
166 const uint8_t kNotReallyBigEnough[32] = {};
167 constexpr size_t kAllocationBytes = std::numeric_limits<size_t>::max() / 8;
168 constexpr size_t kAllocationBits = kAllocationBytes * 8;
174 EXPECT_EQ(0U, bitstream.GetPos());
175 EXPECT_EQ(kAllocationBits, bitstream.BitsRemaining());
178 bitstream.SkipBits(kAllocationBits - 1023);
180 EXPECT_EQ(kAllocationBits - 1023, bitstream.GetPos());
181 EXPECT_EQ(1023u, bitstream.BitsRemaining());
186 EXPECT_EQ(kAllocationBits - 1016, bitstream.GetPos());
187 EXPECT_EQ(1016u, bitstream.BitsRemaining());