TEST_F(PartTest, Serialization) { serialization::Part message; part_.WriteToMessage(&message); EXPECT_TRUE(message.has_degrees_of_freedom()); EXPECT_TRUE(message.degrees_of_freedom().t1().has_point()); EXPECT_TRUE(message.degrees_of_freedom().t1().point().has_multivector()); EXPECT_TRUE(message.degrees_of_freedom().t1(). point().multivector().has_vector()); EXPECT_EQ(1, message.degrees_of_freedom().t1(). point().multivector().vector().x().quantity().magnitude()); EXPECT_EQ(2, message.degrees_of_freedom().t1(). point().multivector().vector().y().quantity().magnitude()); EXPECT_EQ(3, message.degrees_of_freedom().t1(). point().multivector().vector().z().quantity().magnitude()); EXPECT_TRUE(message.degrees_of_freedom().t2().has_multivector()); EXPECT_TRUE(message.degrees_of_freedom().t2().multivector().has_vector()); EXPECT_EQ(4, message.degrees_of_freedom().t2(). multivector().vector().x().quantity().magnitude()); EXPECT_EQ(5, message.degrees_of_freedom().t2(). multivector().vector().y().quantity().magnitude()); EXPECT_EQ(6, message.degrees_of_freedom().t2(). multivector().vector().z().quantity().magnitude()); EXPECT_TRUE(message.has_mass()); EXPECT_EQ(7, message.mass().magnitude()); EXPECT_TRUE(message.has_gravitational_acceleration_to_be_applied_by_ksp()); EXPECT_TRUE(message.gravitational_acceleration_to_be_applied_by_ksp(). has_vector()); EXPECT_EQ(8, message.gravitational_acceleration_to_be_applied_by_ksp(). vector().x().quantity().magnitude()); EXPECT_EQ(9, message.gravitational_acceleration_to_be_applied_by_ksp(). vector().y().quantity().magnitude()); EXPECT_EQ(10, message.gravitational_acceleration_to_be_applied_by_ksp(). vector().z().quantity().magnitude()); Part<Barycentric> p = Part<Barycentric>::ReadFromMessage(message); EXPECT_EQ(part_.degrees_of_freedom(), p.degrees_of_freedom()); EXPECT_EQ(part_.mass(), p.mass()); EXPECT_EQ(part_.gravitational_acceleration_to_be_applied_by_ksp(), p.gravitational_acceleration_to_be_applied_by_ksp()); }