25 static const uint8_t kData[] = {0x00, 0x11, 0x22, 0x33,
26 0x44, 0x55, 0x66, 0x77};
31 EXPECT_EQ(0U, bitstream.GetPos());
32 EXPECT_EQ(64U, bitstream.BitsRemaining());
36 EXPECT_EQ(8U, bitstream.GetPos());
37 EXPECT_EQ(56U, bitstream.BitsRemaining());
40 EXPECT_EQ(9U, bitstream.GetPos());
41 EXPECT_EQ(55U, bitstream.BitsRemaining());
44 EXPECT_EQ(11U, bitstream.GetPos());
45 EXPECT_EQ(53U, bitstream.BitsRemaining());
48 EXPECT_EQ(14U, bitstream.GetPos());
49 EXPECT_EQ(50U, bitstream.BitsRemaining());
52 EXPECT_EQ(18U, bitstream.GetPos());
53 EXPECT_EQ(46U, bitstream.BitsRemaining());
56 EXPECT_EQ(25U, bitstream.GetPos());
57 EXPECT_EQ(39U, bitstream.BitsRemaining());
60 EXPECT_EQ(34U, bitstream.GetPos());
61 EXPECT_EQ(30U, bitstream.BitsRemaining());
64 EXPECT_EQ(49U, bitstream.GetPos());
65 EXPECT_EQ(15U, bitstream.BitsRemaining());
69 EXPECT_EQ(49U, bitstream.GetPos());
70 EXPECT_EQ(15U, bitstream.BitsRemaining());
73 bitstream.SkipBits(14);
74 EXPECT_EQ(63U, bitstream.GetPos());
75 EXPECT_EQ(1U, bitstream.BitsRemaining());
76 bitstream.SkipBits(2);
77 EXPECT_EQ(65U, bitstream.GetPos());
78 EXPECT_EQ(0U, bitstream.BitsRemaining());
84 EXPECT_EQ(0U, bitstream.GetPos());
85 EXPECT_EQ(64U, bitstream.BitsRemaining());
88 bitstream.SkipBits(5);
89 EXPECT_EQ(5U, bitstream.GetPos());
90 EXPECT_EQ(59U, bitstream.BitsRemaining());
93 EXPECT_EQ(22U, bitstream.GetPos());
94 EXPECT_EQ(42U, bitstream.BitsRemaining());
98 EXPECT_EQ(24U, bitstream.GetPos());
99 EXPECT_EQ(40U, bitstream.BitsRemaining());
101 EXPECT_EQ(0x19A22AB3U, bitstream
.GetBits(31
));
102 EXPECT_EQ(55U, bitstream.GetPos());
103 EXPECT_EQ(9U, bitstream.BitsRemaining());
108 EXPECT_EQ(32U, bitstream.GetPos());
109 EXPECT_EQ(32U, bitstream.BitsRemaining());
112 bitstream.SkipBits(31);
113 EXPECT_EQ(0xA22AB33BU, bitstream
.GetBits(32
));
114 EXPECT_EQ(63U, bitstream.GetPos());
115 EXPECT_EQ(1U, bitstream.BitsRemaining());
118 bitstream.SkipBits(1000);
120 EXPECT_EQ(1063U, bitstream.GetPos());
121 EXPECT_EQ(0U, bitstream.BitsRemaining());
127 EXPECT_EQ(1064U, bitstream.GetPos());
128 EXPECT_EQ(0U, bitstream.BitsRemaining());
161 const uint8_t kNotReallyBigEnough[32] = {};
162 constexpr size_t kAllocationBytes = std::numeric_limits<size_t>::max() / 8;
163 constexpr size_t kAllocationBits = kAllocationBytes * 8;
164 CFX_BitStream bitstream({kNotReallyBigEnough, kAllocationBytes});
166 EXPECT_EQ(0U, bitstream.GetPos());
167 EXPECT_EQ(kAllocationBits, bitstream.BitsRemaining());
170 bitstream.SkipBits(kAllocationBits - 1023);
172 EXPECT_EQ(kAllocationBits - 1023, bitstream.GetPos());
173 EXPECT_EQ(1023u, bitstream.BitsRemaining());
178 EXPECT_EQ(kAllocationBits - 1016, bitstream.GetPos());
179 EXPECT_EQ(1016u, bitstream.BitsRemaining());