diff options
author | dan sinclair <dj2@everburning.com> | 2018-12-11 10:38:45 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-12-11 10:38:45 -0500 |
commit | 2869d18ad34673b52cecc858a58a29f1ce07e6c1 (patch) | |
tree | 96d90c4c3447b9569b19996c7d40a302869950b8 /src/amberscript/parser_test.cc | |
parent | 09a1bc62851b29d516ea711b504e79e4028027f5 (diff) | |
download | amber-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.cc | 155 |
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()); |