// BlockyFroggy
// Copyright © 2017 John Ryland.
// All rights reserved.
#include "SoA_AoS.h"
#include "Utilities.h"
#include <vector>
#include <ctime>
#include <cstdlib>
#include <chrono>
#include <sstream>
#include <new>
#include <dlfcn.h>
#if ENABLE_UNIT_TESTS
DECLARE_STRUCT_BEGIN(S)
DECLARE_MEMBER2(int, a)
DECLARE_MEMBER2(int, b)
DECLARE_MEMBER2(int, c)
struct vecBlah {
int x, y, z;
} v[SIZE];
DECLARE_STRUCT_END(S)
MAKE_AOS(array1, S, 100)
MAKE_SOA(array3, S, 100)
SOA<S,1000> array4;
AOS<S,1000> array5;
DECLARE_UNIT_TEST(AOS_SOA_Tests)
{
MAKE_AOS(array2, S, 100)
for (int i = 0; i < 100; i++)
{
GET(array1, a, i) = i;
GET(array2, a, i) = i;
GET(array3, a, i) = i;
//GET(array3, v.x, i) = i;
MEMBER(array4[i],a) = i;
MEMBER(array5[i],a) = i;
//MEMBER(array5[i],v[0].x) = i; // nested doesn't work !!!!!!!!!!!!!!!!!!!!!!
}
for (int i = 0; i < 100; i++)
{
CHECK(i == GET(array1, a, i));
CHECK(i == GET(array2, a, i));
CHECK(i == GET(array3, a, i));
CHECK(i == MEMBER(array4[i],a));
CHECK(i == MEMBER(array5[i],a));
// CHECK(i == MEMBER(array5[i],v[0].x));
}
}
#endif