TEST_F(PluginCompatibilityTest, PreBorel) { serialization::Multivector message; Vector<Length, Barycentric> const v({ -1 * Metre, 2 * Metre, 3 * Metre }); v.WriteToMessage(&message); message.mutable_frame()->set_tag(serialization::Frame::PRE_BOREL_BARYCENTRIC); Vector<Length, Barycentric> const w = Vector<Length, Barycentric>::ReadFromMessage(message); Vector<Length, Barycentric> const expected_w( { -1 * Metre, 3 * Metre, 2 * Metre }); EXPECT_EQ(expected_w, w); Bivector<Length, Barycentric> const b({ 4 * Metre, 5 * Metre, -6 * Metre }); b.WriteToMessage(&message); message.mutable_frame()->set_tag(serialization::Frame::PRE_BOREL_BARYCENTRIC); Bivector<Length, Barycentric> const c = Bivector<Length, Barycentric>::ReadFromMessage(message); Bivector<Length, Barycentric> const expected_c( { -4 * Metre, 6 * Metre, -5 * Metre }); EXPECT_EQ(expected_c, c); Trivector<Length, Barycentric> const t(-7 * Metre); t.WriteToMessage(&message); message.mutable_frame()->set_tag(serialization::Frame::PRE_BOREL_BARYCENTRIC); Trivector<Length, Barycentric> const u = Trivector<Length, Barycentric>::ReadFromMessage(message); Trivector<Length, Barycentric> const expected_u(7 * Metre); EXPECT_EQ(expected_u, u); }
Trivector<Scalar, ToFrame> Identity<FromFrame, ToFrame>::operator()( Trivector<Scalar, FromFrame> const& trivector) const { return Trivector<Scalar, ToFrame>(trivector.coordinates()); }
Bivector<quantities::Product<LScalar, RScalar>, Frame> operator*( Trivector<LScalar, Frame> const& left, Vector<RScalar, Frame> const& right) { return Bivector<quantities::Product<LScalar, RScalar>, Frame>( left.coordinates() * right.coordinates()); }
quantities::Product<LScalar, RScalar> InnerProduct( Trivector<LScalar, Frame> const& left, Trivector<RScalar, Frame> const& right) { return left.coordinates() * right.coordinates(); }
Trivector<Scalar, ToFrame> Permutation<FromFrame, ToFrame>::operator()( Trivector<Scalar, FromFrame> const& trivector) const { return Trivector<Scalar, ToFrame>(Determinant() * trivector.coordinates()); }