| 20 | |
| 21 | template <typename Key, typename Value> |
| 22 | class FifoCacheTest |
| 23 | { |
| 24 | public: |
| 25 | FifoCacheTest(size_t capacity, typename FifoCache<Key, Value>::Loader const & loader) : m_cache(capacity, loader) {} |
| 26 | |
| 27 | Value const & GetValue(Key const & key) { return m_cache.GetValue(key); } |
| 28 | ankerl::unordered_dense::map<Key, Value> const & GetMap() const { return m_cache.m_map; } |
| 29 | boost::circular_buffer<Key> const & GetFifo() const { return m_cache.m_fifo; } |
| 30 | |
| 31 | bool IsValid() const |
| 32 | { |
| 33 | set<Key> listKeys(m_cache.m_fifo.begin(), m_cache.m_fifo.end()); |
| 34 | set<Key> mapKeys; |
| 35 | |
| 36 | for (auto const & kv : m_cache.m_map) |
| 37 | mapKeys.insert(kv.first); |
| 38 | |
| 39 | return listKeys == mapKeys; |
| 40 | } |
| 41 | |
| 42 | private: |
| 43 | FifoCache<Key, Value> m_cache; |
| 44 | }; |
| 45 | |
| 46 | UNIT_TEST(FifoCache_Smoke) |
| 47 | { |