Skip to content

Commit

Permalink
Add ToElement errors test
Browse files Browse the repository at this point in the history
Signed-off-by: Marco A. Gutierrez <marco@openrobotics.org>
  • Loading branch information
Marco A. Gutierrez committed Mar 28, 2023
1 parent fbc7911 commit d07a101
Showing 1 changed file with 70 additions and 0 deletions.
70 changes: 70 additions & 0 deletions src/ParticleEmitter_TEST.cc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

#include <gtest/gtest.h>
#include "sdf/ParticleEmitter.hh"
#include "test_utils.hh"

/////////////////////////////////////////////////
TEST(DOMParticleEmitter, Construction)
Expand Down Expand Up @@ -167,3 +168,72 @@ TEST(DOMParticleEmitter, ToElement)
EXPECT_EQ(emitter.RawPose(), emitter2.RawPose());
EXPECT_NE(nullptr, emitter2.Material());
}

/////////////////////////////////////////////////
TEST(DOMParticleEmitter, ToElementErrorOutput)
{
std::stringstream buffer;
sdf::testing::RedirectConsoleStream redir(
sdf::Console::Instance()->GetMsgStream(), &buffer);

#ifdef _WIN32
sdf::Console::Instance()->SetQuiet(false);
sdf::testing::ScopeExit revertSetQuiet(
[]
{
sdf::Console::Instance()->SetQuiet(true);
});
#endif
sdf::ParticleEmitter emitter;
sdf::Errors errors;

emitter.SetName("my-emitter");
emitter.SetType(sdf::ParticleEmitterType::BOX);
emitter.SetEmitting(true);
emitter.SetDuration(1.2);
emitter.SetLifetime(3.4);
emitter.SetRate(12.5);
emitter.SetScaleRate(0.2);
emitter.SetMinVelocity(32.4);
emitter.SetMaxVelocity(50.1);
emitter.SetSize(gz::math::Vector3d(1, 2, 3));
emitter.SetParticleSize(gz::math::Vector3d(4, 5, 6));
emitter.SetColorStart(gz::math::Color(0.1f, 0.2f, 0.3f, 1.0f));
emitter.SetColorEnd(gz::math::Color(0.4f, 0.5f, 0.6f, 1.0f));
emitter.SetColorRangeImage("my-image");
emitter.SetTopic("my-topic");
emitter.SetScatterRatio(0.3f);
emitter.SetRawPose(gz::math::Pose3d(1, 2, 3, 0.1, 0.2, 0.3));
sdf::Material material;
emitter.SetMaterial(material);

sdf::ElementPtr elem = emitter.ToElement(errors);
EXPECT_TRUE(errors.empty());
ASSERT_NE(nullptr, elem);

sdf::ParticleEmitter emitter2;
errors = emitter2.Load(elem);
EXPECT_TRUE(errors.empty());

EXPECT_EQ(emitter.Name(), emitter2.Name());
EXPECT_EQ(emitter.Type(), emitter2.Type());
EXPECT_EQ(emitter.Emitting(), emitter2.Emitting());
EXPECT_DOUBLE_EQ(emitter.Duration(), emitter2.Duration());
EXPECT_DOUBLE_EQ(emitter.Lifetime(), emitter2.Lifetime());
EXPECT_DOUBLE_EQ(emitter.Rate(), emitter2.Rate());
EXPECT_DOUBLE_EQ(emitter.ScaleRate(), emitter2.ScaleRate());
EXPECT_DOUBLE_EQ(emitter.MinVelocity(), emitter2.MinVelocity());
EXPECT_DOUBLE_EQ(emitter.MaxVelocity(), emitter2.MaxVelocity());
EXPECT_EQ(emitter.Size(), emitter2.Size());
EXPECT_EQ(emitter.ParticleSize(), emitter2.ParticleSize());
EXPECT_EQ(emitter.ColorStart(), emitter2.ColorStart());
EXPECT_EQ(emitter.ColorEnd(), emitter2.ColorEnd());
EXPECT_EQ(emitter.ColorRangeImage(), emitter2.ColorRangeImage());
EXPECT_EQ(emitter.Topic(), emitter2.Topic());
EXPECT_FLOAT_EQ(emitter.ScatterRatio(), emitter2.ScatterRatio());
EXPECT_EQ(emitter.RawPose(), emitter2.RawPose());
EXPECT_NE(nullptr, emitter2.Material());

// Check nothing has been printed
EXPECT_TRUE(buffer.str().empty()) << buffer.str();
}

0 comments on commit d07a101

Please sign in to comment.