| 18 | namespace |
| 19 | { |
| 20 | UNIT_TEST(BitStreams_Smoke) |
| 21 | { |
| 22 | uniform_int_distribution<uint32_t> randomBytesDistribution(0, 255); |
| 23 | mt19937 rng(0); |
| 24 | vector<pair<uint8_t, uint32_t>> nums; |
| 25 | for (size_t i = 0; i < 100; ++i) |
| 26 | { |
| 27 | uint32_t numBits = randomBytesDistribution(rng) % 8; |
| 28 | uint8_t num = static_cast<uint8_t>(randomBytesDistribution(rng) >> (CHAR_BIT - numBits)); |
| 29 | nums.push_back(make_pair(num, numBits)); |
| 30 | } |
| 31 | for (size_t i = 0; i < 100; ++i) |
| 32 | { |
| 33 | uint32_t numBits = 8; |
| 34 | uint8_t num = static_cast<uint8_t>(randomBytesDistribution(rng)); |
| 35 | nums.push_back(make_pair(num, numBits)); |
| 36 | } |
| 37 | |
| 38 | vector<uint8_t> encodedBits; |
| 39 | { |
| 40 | MemWriter<vector<uint8_t>> encodedBitsWriter(encodedBits); |
| 41 | BitWriter<MemWriter<vector<uint8_t>>> bitSink(encodedBitsWriter); |
| 42 | for (size_t i = 0; i < nums.size(); ++i) |
| 43 | bitSink.Write(nums[i].first, nums[i].second); |
| 44 | } |
| 45 | |
| 46 | MemReader encodedBitsReader(encodedBits.data(), encodedBits.size()); |
| 47 | ReaderSource<MemReader> src(encodedBitsReader); |
| 48 | BitReader<ReaderSource<MemReader>> bitsSource(src); |
| 49 | for (size_t i = 0; i < nums.size(); ++i) |
| 50 | { |
| 51 | uint8_t num = bitsSource.Read(nums[i].second); |
| 52 | TEST_EQUAL(num, nums[i].first, (i)); |
| 53 | } |
| 54 | } |
| 55 | |
| 56 | UNIT_TEST(BitStreams_T1) |
| 57 | { |
nothing calls this directly
no test coverage detected