| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- * Copyright (c) Contributors to the Open 3D Engine Project.
- * For complete copyright and license terms please see the LICENSE at the root of this distribution.
- *
- * SPDX-License-Identifier: Apache-2.0 OR MIT
- *
- */
- #include <AzCore/IO/Streamer/RecentlyUsedIndex.h>
- #include <AzCore/UnitTest/TestTypes.h>
- namespace AZ::IO
- {
- class Streamer_RecentlyUsedIndexTest
- : public UnitTest::LeakDetectionFixture
- {
- public:
- using RUI = RecentlyUsedIndex<u8>;
- template<size_t Size>
- static void Validate(const RUI& rui, const u8 (&expectedValues)[Size])
- {
- u8 counter = 0;
- auto callback = [&counter, &expectedValues](u8 value)
- {
- EXPECT_EQ(expectedValues[counter], value);
- counter++;
- };
- rui.GetIndicesInOrder(callback);
- }
- };
- TEST_F(Streamer_RecentlyUsedIndexTest, Constructor)
- {
- RUI rui{ 4 };
- Validate(rui, { 0, 1, 2, 3 });
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, GetLeastRecentlyUsed)
- {
- RUI rui{ 4 };
- EXPECT_EQ(0, rui.GetLeastRecentlyUsed());
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, GetMostRecentlyUsed)
- {
- RUI rui{ 4 };
- EXPECT_EQ(3, rui.GetMostRecentlyUsed());
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Touch_Middle)
- {
- RUI rui{ 4 };
- rui.Touch(2);
- Validate(rui, { 0, 1, 3, 2 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 0);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 2);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Touch_Front)
- {
- RUI rui{ 4 };
- rui.Touch(0);
- Validate(rui, { 1, 2, 3, 0 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 1);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 0);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Touch_Back)
- {
- RUI rui{ 4 };
- rui.Touch(3);
- Validate(rui, { 0, 1, 2, 3 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 0);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 3);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Flush_Middle)
- {
- RUI rui{ 4 };
- rui.Flush(2);
- Validate(rui, { 2, 0, 1, 3 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 2);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 3);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Flush_Front)
- {
- RUI rui{ 4 };
- rui.Flush(0);
- Validate(rui, { 0, 1, 2, 3 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 0);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 3);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, Flush_Back)
- {
- RUI rui{ 4 };
- rui.Flush(3);
- Validate(rui, { 3, 0, 1, 2 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 3);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 2);
- }
- TEST_F(Streamer_RecentlyUsedIndexTest, TouchLeastRecentlyUsed)
- {
- RUI rui{ 4 };
- rui.TouchLeastRecentlyUsed();
- Validate(rui, { 1, 2, 3, 0 });
- EXPECT_EQ(rui.GetLeastRecentlyUsed(), 1);
- EXPECT_EQ(rui.GetMostRecentlyUsed(), 0);
- }
- } // namespace AZ::IO
|