| 30 | } // namespace |
| 31 | |
| 32 | UNIT_TEST(CacheReaderRandomTest) |
| 33 | { |
| 34 | vector<char> data(100000); |
| 35 | for (size_t i = 0; i < data.size(); ++i) |
| 36 | data[i] = static_cast<char>(i % 253); |
| 37 | MemReader memReader(&data[0], data.size()); |
| 38 | CacheReader<MemReader> cacheReader(MemReader(&data[0], data.size()), 10, 5); |
| 39 | mt19937 rng(0); |
| 40 | for (size_t i = 0; i < 100000; ++i) |
| 41 | { |
| 42 | size_t pos = rng() % data.size(); |
| 43 | size_t len = min(static_cast<size_t>(1 + (rng() % 127)), data.size() - pos); |
| 44 | string readMem(len, '0'), readCache(len, '0'); |
| 45 | memReader.Read(pos, &readMem[0], len); |
| 46 | cacheReader.Read(pos, &readCache[0], len); |
| 47 | TEST_EQUAL(readMem, readCache, (pos, len, i)); |
| 48 | } |
| 49 | } |