aboutsummaryrefslogtreecommitdiff
path: root/src/amberscript/parser_test.cc
diff options
context:
space:
mode:
authordan sinclair <dj2@everburning.com>2018-12-11 10:38:45 -0500
committerGitHub <noreply@github.com>2018-12-11 10:38:45 -0500
commit2869d18ad34673b52cecc858a58a29f1ce07e6c1 (patch)
tree96d90c4c3447b9569b19996c7d40a302869950b8 /src/amberscript/parser_test.cc
parent09a1bc62851b29d516ea711b504e79e4028027f5 (diff)
downloadamber-2869d18ad34673b52cecc858a58a29f1ce07e6c1.tar.gz
Convert Vertex data into a buffer. (#164)
This CL allows for Buffers to be described by a DatumType (like the indices buffers) or by a Format type. The VertexNodes have been removed and converted to Format type buffers.
Diffstat (limited to 'src/amberscript/parser_test.cc')
-rw-r--r--src/amberscript/parser_test.cc155
1 files changed, 90 insertions, 65 deletions
diff --git a/src/amberscript/parser_test.cc b/src/amberscript/parser_test.cc
index 5d19139..fd57a5d 100644
--- a/src/amberscript/parser_test.cc
+++ b/src/amberscript/parser_test.cc
@@ -957,12 +957,15 @@ END)";
ASSERT_TRUE(buffers[0] != nullptr);
EXPECT_EQ("my_buffer", buffers[0]->GetName());
EXPECT_EQ(BufferType::kStorage, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint32());
- EXPECT_EQ(7U, buffers[0]->GetSize());
- EXPECT_EQ(7U * sizeof(uint32_t), buffers[0]->GetSizeInBytes());
+
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_TRUE(buffer->GetDatumType().IsUint32());
+ EXPECT_EQ(7U, buffer->GetSize());
+ EXPECT_EQ(7U * sizeof(uint32_t), buffer->GetSizeInBytes());
std::vector<uint32_t> results = {1, 2, 3, 4, 55, 99, 1234};
- const auto& data = buffers[0]->GetData();
+ const auto& data = buffer->GetData();
ASSERT_EQ(results.size(), data.size());
for (size_t i = 0; i < results.size(); ++i) {
ASSERT_TRUE(data[i].IsInteger());
@@ -983,14 +986,16 @@ TEST_F(AmberScriptParserTest, BufferFill) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kColor, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint8());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * sizeof(uint8_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kColor, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint8());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * sizeof(uint8_t), buffer->GetSizeInBytes());
std::vector<uint32_t> results = {5, 5, 5, 5, 5};
- const auto& data = buffers[0]->GetData();
+ const auto& data = buffer->GetData();
ASSERT_EQ(results.size(), data.size());
for (size_t i = 0; i < results.size(); ++i) {
ASSERT_TRUE(data[i].IsInteger());
@@ -1011,14 +1016,16 @@ TEST_F(AmberScriptParserTest, BufferFillFloat) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kColor, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsFloat());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * sizeof(float), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kColor, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsFloat());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * sizeof(float), buffer->GetSizeInBytes());
std::vector<float> results = {5.2f, 5.2f, 5.2f, 5.2f, 5.2f};
- const auto& data = buffers[0]->GetData();
+ const auto& data = buffer->GetData();
ASSERT_EQ(results.size(), data.size());
for (size_t i = 0; i < results.size(); ++i) {
ASSERT_TRUE(data[i].IsFloat());
@@ -1040,14 +1047,16 @@ TEST_F(AmberScriptParserTest, BufferSeries) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kColor, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint8());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * sizeof(uint8_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kColor, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint8());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * sizeof(uint8_t), buffer->GetSizeInBytes());
std::vector<uint8_t> results = {2, 3, 4, 5, 6};
- const auto& data = buffers[0]->GetData();
+ const auto& data = buffer->GetData();
ASSERT_EQ(results.size(), data.size());
for (size_t i = 0; i < results.size(); ++i) {
ASSERT_TRUE(data[i].IsInteger());
@@ -1070,14 +1079,16 @@ TEST_F(AmberScriptParserTest, BufferSeriesFloat) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kColor, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsFloat());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * sizeof(float), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kColor, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsFloat());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * sizeof(float), buffer->GetSizeInBytes());
std::vector<float> results = {2.2f, 3.3f, 4.4f, 5.5f, 6.6f};
- const auto& data = buffers[0]->GetData();
+ const auto& data = buffer->GetData();
ASSERT_EQ(results.size(), data.size());
for (size_t i = 0; i < results.size(); ++i) {
ASSERT_TRUE(data[i].IsFloat());
@@ -1098,12 +1109,14 @@ TEST_F(AmberScriptParserTest, BufferFramebuffer) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kFramebuffer, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint32());
- EXPECT_EQ(4U, buffers[0]->GetDatumType().ColumnCount());
- EXPECT_EQ(800U * 600U, buffers[0]->GetSize());
- EXPECT_EQ(800U * 600U * 4U * sizeof(uint32_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kFramebuffer, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint32());
+ EXPECT_EQ(4U, buffer->GetDatumType().ColumnCount());
+ EXPECT_EQ(800U * 600U, buffer->GetSize());
+ EXPECT_EQ(800U * 600U * 4U * sizeof(uint32_t), buffer->GetSizeInBytes());
}
TEST_F(AmberScriptParserTest, BufferMultipleBuffers) {
@@ -1124,14 +1137,16 @@ END)";
ASSERT_EQ(2U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("color_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kColor, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint8());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * sizeof(uint8_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("color_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kColor, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint8());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * sizeof(uint8_t), buffer->GetSizeInBytes());
std::vector<uint32_t> results0 = {5, 5, 5, 5, 5};
- const auto& data0 = buffers[0]->GetData();
+ const auto& data0 = buffer->GetData();
ASSERT_EQ(results0.size(), data0.size());
for (size_t i = 0; i < results0.size(); ++i) {
ASSERT_TRUE(data0[i].IsInteger());
@@ -1139,14 +1154,16 @@ END)";
}
ASSERT_TRUE(buffers[1] != nullptr);
- EXPECT_EQ("storage_buffer", buffers[1]->GetName());
- EXPECT_EQ(BufferType::kStorage, buffers[1]->GetBufferType());
- EXPECT_TRUE(buffers[1]->GetDatumType().IsUint32());
- EXPECT_EQ(7U, buffers[1]->GetSize());
- EXPECT_EQ(7U * sizeof(uint32_t), buffers[1]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[1]->IsDataBuffer());
+ buffer = buffers[1]->AsDataBuffer();
+ EXPECT_EQ("storage_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kStorage, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint32());
+ EXPECT_EQ(7U, buffer->GetSize());
+ EXPECT_EQ(7U * sizeof(uint32_t), buffer->GetSizeInBytes());
std::vector<uint32_t> results1 = {1, 2, 3, 4, 55, 99, 1234};
- const auto& data1 = buffers[1]->GetData();
+ const auto& data1 = buffer->GetData();
ASSERT_EQ(results1.size(), data1.size());
for (size_t i = 0; i < results1.size(); ++i) {
ASSERT_TRUE(data1[i].IsInteger());
@@ -1168,14 +1185,16 @@ BUFFER index my_index_buffer DATA_TYPE vec2<int32> SIZE 5 FILL 2)";
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_index_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kIndex, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsInt32());
- EXPECT_EQ(5U, buffers[0]->GetSize());
- EXPECT_EQ(5U * 2 * sizeof(int32_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_index_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kIndex, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsInt32());
+ EXPECT_EQ(5U, buffer->GetSize());
+ EXPECT_EQ(5U * 2 * sizeof(int32_t), buffer->GetSizeInBytes());
std::vector<int32_t> results0 = {2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
- const auto& data0 = buffers[0]->GetData();
+ const auto& data0 = buffer->GetData();
ASSERT_EQ(results0.size(), data0.size());
for (size_t i = 0; i < results0.size(); ++i) {
ASSERT_TRUE(data0[i].IsInteger());
@@ -1203,14 +1222,16 @@ END
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_index_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kIndex, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsInt32());
- EXPECT_EQ(4U, buffers[0]->GetSize());
- EXPECT_EQ(4U * 2 * sizeof(int32_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_index_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kIndex, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsInt32());
+ EXPECT_EQ(4U, buffer->GetSize());
+ EXPECT_EQ(4U * 2 * sizeof(int32_t), buffer->GetSizeInBytes());
std::vector<int32_t> results0 = {2, 3, 4, 5, 6, 7, 8, 9};
- const auto& data0 = buffers[0]->GetData();
+ const auto& data0 = buffer->GetData();
ASSERT_EQ(results0.size(), data0.size());
for (size_t i = 0; i < results0.size(); ++i) {
ASSERT_TRUE(data0[i].IsInteger());
@@ -1238,14 +1259,16 @@ END
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- EXPECT_EQ("my_index_buffer", buffers[0]->GetName());
- EXPECT_EQ(BufferType::kIndex, buffers[0]->GetBufferType());
- EXPECT_TRUE(buffers[0]->GetDatumType().IsUint32());
- EXPECT_EQ(4U, buffers[0]->GetSize());
- EXPECT_EQ(4U * sizeof(uint32_t), buffers[0]->GetSizeInBytes());
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ EXPECT_EQ("my_index_buffer", buffer->GetName());
+ EXPECT_EQ(BufferType::kIndex, buffer->GetBufferType());
+ EXPECT_TRUE(buffer->GetDatumType().IsUint32());
+ EXPECT_EQ(4U, buffer->GetSize());
+ EXPECT_EQ(4U * sizeof(uint32_t), buffer->GetSizeInBytes());
std::vector<uint32_t> results0 = {4278190080, 16711680, 65280, 255};
- const auto& data0 = buffers[0]->GetData();
+ const auto& data0 = buffer->GetData();
ASSERT_EQ(results0.size(), data0.size());
for (size_t i = 0; i < results0.size(); ++i) {
ASSERT_TRUE(data0[i].IsInteger());
@@ -1648,7 +1671,9 @@ TEST_P(AmberScriptParserBufferDataTypeTest, BufferTypes) {
ASSERT_EQ(1U, buffers.size());
ASSERT_TRUE(buffers[0] != nullptr);
- auto& datum = buffers[0]->GetDatumType();
+ ASSERT_TRUE(buffers[0]->IsDataBuffer());
+ auto* buffer = buffers[0]->AsDataBuffer();
+ auto& datum = buffer->GetDatumType();
EXPECT_EQ(test_data.type, datum.GetType());
EXPECT_EQ(test_data.row_count, datum.RowCount());
EXPECT_EQ(test_data.column_count, datum.ColumnCount());