diff --git a/include/ignition/gazebo/components/Actor.hh b/include/ignition/gazebo/components/Actor.hh index 44d8bbc19c..024aa64c42 100644 --- a/include/ignition/gazebo/components/Actor.hh +++ b/include/ignition/gazebo/components/Actor.hh @@ -20,6 +20,7 @@ #include #include +#include #include #include @@ -50,7 +51,7 @@ namespace serializers public: static std::ostream &Serialize(std::ostream &_out, const std::chrono::steady_clock::duration &_time) { - _out << std::chrono::duration_cast( + _out << std::chrono::duration_cast( _time).count(); return _out; } @@ -64,7 +65,7 @@ namespace serializers { int64_t time; _in >> time; - _time = std::chrono::duration(time); + _time = std::chrono::duration(time); return _in; } }; diff --git a/test/integration/components.cc b/test/integration/components.cc index 2b593e7c54..00649aa031 100644 --- a/test/integration/components.cc +++ b/test/integration/components.cc @@ -140,6 +140,33 @@ TEST_F(ComponentsTest, AnimationName) EXPECT_EQ("comp3", comp3.Data()); } +///////////////////////////////////////////////// +TEST_F(ComponentsTest, AnimationTime) +{ + auto start = std::chrono::steady_clock::now(); + auto end1 = start + std::chrono::seconds(5); + auto end2 = start + std::chrono::seconds(10); + + // Create components + auto comp1 = components::AnimationTime(end1 - start); + auto comp2 = components::AnimationTime(end2 - start); + + // Equality operators + EXPECT_NE(comp1, comp2); + EXPECT_FALSE(comp1 == comp2); + EXPECT_TRUE(comp1 != comp2); + + // Stream operators + std::ostringstream ostr; + comp1.Serialize(ostr); + EXPECT_EQ("5000000000", ostr.str()); + + std::istringstream istr(ostr.str()); + components::AnimationTime comp3; + comp3.Deserialize(istr); + EXPECT_EQ(comp1, comp3); +} + ///////////////////////////////////////////////// TEST_F(ComponentsTest, AirPressureSensor) {