summaryrefslogtreecommitdiff
path: root/lib/core/tests/memory.cpp
blob: cdc6f8c6fbb00107ea50e1bdf2a4f92518595ae1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <forstio/test/suite.hpp>

#include "../c++/memory.hpp"

namespace {
namespace sch {
using namespace saw::schema;

using TStruct = Struct<
	Member<Float32,"a">,
	Member<Int8, "b">,
	Member<UInt64, "c">
>;

using TChunk = kel::lbm::sch::Chunk<Float32,1u,2u,3u,4u>;
using TBChunk = kel::lbm::sch::Chunk<UInt32,1u,2u,3u,4u>;

using TChunkStruct = Struct<
	Member<TChunk, "a">,
	Member<TBChunk, "b">
>;
}

SAW_TEST("Memory Estimate"){
	using namespace kel::lbm;

	SAW_EXPECT((memory_estimate<sch::Float32>().get() == 4u), "Float32 isn't 4 bytes" );
	SAW_EXPECT((memory_estimate<sch::FixedArray<sch::Float32,5u,3u>>().get() == 60u), "FixedArray<Float32,5u,3u> isn't 60 bytes");
	SAW_EXPECT((memory_estimate<sch::FixedArray<sch::Float32,5u,3u>, sch::UInt8>().get() == 61u), "FixedArray<Float32,5u,3u> + UInt8 isn't 61 bytes");
}

SAW_TEST("Memory Estimate Struct"){
	using namespace kel::lbm;
	
	SAW_EXPECT((memory_estimate<sch::TStruct>().get() == 13u), "TStruct isn't 13 bytes" );
	// SAW_EXPECT((memory_estimate<sch::TStruct>().get() == 13u), "TStruct isn't 13 bytes" );
}

SAW_TEST("Memory Estimate Scalar"){
	using namespace kel::lbm;
	
	SAW_EXPECT((memory_estimate<sch::Scalar<sch::UInt8>>().get() == 1u), "Scalar of UInt8 isn't 1 bytes" );
	// SAW_EXPECT((memory_estimate<sch::TStruct>().get() == 13u), "TStruct isn't 13 bytes" );
}

SAW_TEST("Memory Estimate Chunk"){
	using namespace kel::lbm;
	
	SAW_EXPECT((memory_estimate<sch::TChunk>().get() == 480u), std::string{"TChunk isn't 480 bytes "} + std::to_string(memory_estimate<sch::TChunk>().get()) );
}

SAW_TEST("Memory Estimate Struct of Chunk"){
	using namespace kel::lbm;
	
	SAW_EXPECT((memory_estimate<sch::TChunkStruct>().get() == 960u), std::string{"TChunk isn't 480 bytes "} + std::to_string(memory_estimate<sch::TChunk>().get()) );
}

}