diff options
Diffstat (limited to 'o3d/serializer/cross/serializer_test.cc')
-rw-r--r-- | o3d/serializer/cross/serializer_test.cc | 87 |
1 files changed, 85 insertions, 2 deletions
diff --git a/o3d/serializer/cross/serializer_test.cc b/o3d/serializer/cross/serializer_test.cc index 3bd6893..3d21e41 100644 --- a/o3d/serializer/cross/serializer_test.cc +++ b/o3d/serializer/cross/serializer_test.cc @@ -105,7 +105,9 @@ class SerializerTest : public testing::Test { : object_manager_(g_service_locator), output_(StringWriter::CR_LF), json_writer_(&output_, 2), - serializer_(g_service_locator, &json_writer_, &archive_generator_) { + serializer_( + g_service_locator, &json_writer_, &archive_generator_, + Serializer::Options(Serializer::Options::kBinaryOutputOn)) { json_writer_.BeginCompacting(); } @@ -318,6 +320,37 @@ TEST_F(SerializerTest, ShouldSerializeCurveCustomSection) { EXPECT_EQ(expected.ToString(), output_.ToString()); } +TEST_F(SerializerTest, ShouldSerializeCurveCustomSectionNotBinary) { + Serializer serializer( + g_service_locator, &json_writer_, &archive_generator_, + Serializer::Options(Serializer::Options::kBinaryOutputOff)); + Curve* curve = pack_->Create<Curve>(); + + StepCurveKey* step_key = curve->Create<StepCurveKey>(); + step_key->SetInput(1); + step_key->SetOutput(2); + + LinearCurveKey* linear_key = curve->Create<LinearCurveKey>(); + linear_key->SetInput(3); + linear_key->SetOutput(4); + + BezierCurveKey* bezier_key = curve->Create<BezierCurveKey>(); + bezier_key->SetInput(5); + bezier_key->SetInTangent(Float2(6, 7)); + bezier_key->SetOutput(8); + bezier_key->SetOutTangent(Float2(9, 10)); + + serializer.SerializePackBinary(pack_); + serializer.SerializeSection(curve, Serializer::CUSTOM_SECTION); + + StringWriter expected(StringWriter::CR_LF); + expected.WriteFormatted( + "\"keys\":[[1,1,2],[2,3,4],[3,5,8,6,7,9,10]]"); + + EXPECT_EQ(expected.ToString(), output_.ToString()); + EXPECT_TRUE(archive_generator_.add_file_records_.empty()); +} + TEST_F(SerializerTest, ShouldSerializeCurveKeysToSingleBinaryFile) { // The purpose of this buffer is just to offset the following one in the // binary file. @@ -711,6 +744,26 @@ TEST_F(SerializerTest, ShouldSerializeSkinProperties) { output_.ToString()); } +TEST_F(SerializerTest, ShouldSerializeSkinPropertiesNotBinary) { + Serializer serializer( + g_service_locator, &json_writer_, &archive_generator_, + Serializer::Options(Serializer::Options::kBinaryOutputOff)); + Skin* skin = pack_->Create<Skin>(); + skin->SetInverseBindPoseMatrix(0, Matrix4::identity()); + Skin::Influences influences(1); + influences[0] = Skin::Influence(1, 2); + skin->SetVertexInfluences(0, influences); + + serializer.SerializeSection(skin, Serializer::PROPERTIES_SECTION); + + EXPECT_EQ( + "\"influences\":[[1,2]]," + "\"inverseBindPoseMatrices\":" + "[[[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]]]", + output_.ToString()); + EXPECT_TRUE(archive_generator_.add_file_records_.empty()); +} + TEST_F(SerializerTest, ShouldSerializeSkinCustomSection) { Skin* skin1 = pack_->Create<Skin>(); Skin::Influences influences(1); @@ -1037,7 +1090,37 @@ TEST_F(SerializerTest, SerializesVertexBuffer) { EXPECT_EQ(expected.ToString(), output_.ToString()); } -TEST_F(SerializerTest, SerializesAllVertexBufferBinaryToSingleFileInArchive) { +TEST_F(SerializerTest, SerializesVertexBufferNotBinary) { + Serializer serializer( + g_service_locator, &json_writer_, &archive_generator_, + Serializer::Options(Serializer::Options::kBinaryOutputOff)); + Buffer* buffer = pack_->Create<VertexBuffer>(); + Field* field = buffer->CreateField(FloatField::GetApparentClass(), 1); + buffer->AllocateElements(2); + { + BufferLockHelper locker(buffer); + float* data = locker.GetDataAs<float>(Buffer::WRITE_ONLY); + data[0] = 1.25f; + data[1] = -3.0f; + } + + serializer.SerializePackBinary(pack_); + serializer.SerializeSection(buffer, Serializer::CUSTOM_SECTION); + + StringWriter expected(StringWriter::CR_LF); + expected.WriteFormatted( + "\"fieldData\":[{" + "\"id\":%d," + "\"type\":\"o3d.FloatField\"," + "\"numComponents\":1,\"data\":[1.25,-3]}]", + field->id(), field->id()); + + EXPECT_EQ(expected.ToString(), output_.ToString()); + EXPECT_TRUE(archive_generator_.add_file_records_.empty()); +} + +TEST_F(SerializerTest, + SerializesAllVertexBufferBinaryToSingleFileInArchive) { Buffer* buffer1 = pack_->Create<VertexBuffer>(); buffer1->CreateField(FloatField::GetApparentClass(), 1); buffer1->AllocateElements(2); |