bool FCircularBufferTest::RunTest( const FString& Parameters ) { // buffer capacity TCircularBuffer<int32> b1_1(127); TCircularBuffer<int32> b1_2(128); TCircularBuffer<int32> b1_3(129); TestEqual(TEXT("Buffer capacity of 127 must be rounded up to 128"), b1_1.Capacity(), 128u); TestEqual(TEXT("Buffer capacity of 128 must not change"), b1_2.Capacity(), 128u); TestEqual(TEXT("Buffer capacity of 129 must be rounded up to 256"), b1_3.Capacity(), 256u); // initial values TCircularBuffer<int32> b2_1(64, 666); for (uint32 Index = 0; Index < b2_1.Capacity(); ++Index) { TestEqual(FString::Printf(TEXT("Initial value must be correct (%i)"), Index), b2_1[Index], 666); } // indexing TCircularBuffer<int32> b3_1(64, 0); TestEqual(TEXT("Next index from 0 must be 1"), b3_1.GetNextIndex(0), 1u); TestEqual(TEXT("Next index from 63 must be 0"), b3_1.GetNextIndex(63), 0u); TestEqual(TEXT("Next index from 64 must be 1"), b3_1.GetNextIndex(64), 1u); b3_1[0] = 42; b3_1[65] = 42; TestEqual(TEXT("Index 0 must be written and read correctly"), b3_1[0], 42); TestEqual(TEXT("Index 1 must be written and read correctly"), b3_1[1], 42); TestEqual(TEXT("Index 65 must be written and read correctly"), b3_1[65], 42); return true; }
int main(int argc, char** argv, char** envp) { Bar3 b3_1(1); Bar3 b3_2(2); Foo* f1 = dynamic_cast<Bar1*>(&b3_1); Foo* f2 = dynamic_cast<Bar2*>(&b3_2); Bar1* b1_1 = &b3_1; Bar1* b1_2 = &b3_2; Bar2* b2_1 = &b3_1; Bar2* b2_2 = &b3_2; std::cout << "b3_1 : " << b3_1 << std::endl; std::cout << "b3_2 : " << b3_2 << std::endl; std::cout << "f1 : " << *f1 << std::endl; std::cout << "f2 : " << *f2 << std::endl; std::cout << "b1_1 : " << *b1_1 << std::endl; std::cout << "b1_2 : " << *b1_2 << std::endl; std::cout << "b2_1 : " << *b2_1 << std::endl; std::cout << "b2_2 : " << *b2_2 << std::endl; return 0; }