// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved. #include "Engine/Core/RandomStream.h" #include "Engine/Core/Collections/Array.h" #include "Engine/Core/Collections/BitArray.h" #include TEST_CASE("Array") { SECTION("Test Allocators") { Array a1; Array> a2; Array> a3; for (int32 i = 0; i < 7; i++) { a1.Add(i); a2.Add(i); a3.Add(i); } CHECK(a1.Count() == 7); CHECK(a2.Count() == 7); CHECK(a3.Count() == 7); for (int32 i = 0; i < 7; i++) { CHECK(a1[i] == i); CHECK(a2[i] == i); CHECK(a3[i] == i); } } // Generate some random data for testing Array testData; testData.Resize(32); RandomStream rand(101); for (int32 i = 0; i < testData.Count(); i++) testData[i] = rand.GetUnsignedInt(); SECTION("Test Copy Constructor") { const Array a1(testData); const Array> a2(testData); const Array> a3(testData); const Array> a4(testData); CHECK(a1 == testData); CHECK(a2 == testData); CHECK(a3 == testData); CHECK(a4 == testData); } SECTION("Test Copy Operator") { Array a1; a1 = testData; CHECK(a1 == testData); } } TEST_CASE("BitArray") { SECTION("Test Allocators") { BitArray<> a1; BitArray> a2; BitArray> a3; for (int32 i = 0; i < 7; i++) { const bool v = i & 2; a1.Add(v); a2.Add(v); a3.Add(v); } CHECK(a1.Count() == 7); CHECK(a2.Count() == 7); CHECK(a3.Count() == 7); for (int32 i = 0; i < 7; i++) { const bool v = i & 2; CHECK(a1.Get(i) == v); CHECK(a2.Get(i) == v); CHECK(a3.Get(i) == v); } } // Generate some random data for testing BitArray<> testData; testData.Resize(32); RandomStream rand(101); for (int32 i = 0; i < testData.Count(); i++) testData.Set(i, rand.GetBool()); SECTION("Test Copy Constructor") { const BitArray<> a1(testData); const BitArray> a2(testData); const BitArray> a3(testData); const BitArray> a4(testData); CHECK(a1 == testData); CHECK(a2 == testData); CHECK(a3 == testData); CHECK(a4 == testData); } SECTION("Test Copy Operator") { BitArray<> a1; a1 = testData; CHECK(a1 == testData); } }