| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- #include "gtest/gtest.h"
- #include <WireFormatter.h>
- #include <ReadBufferMock.h>
- #include <WriteBufferMock.h>
- #include <cstdint>
- #include <limits>
- // EAMS message definitions
- #include <oneof_fields.h>
- using ::testing::_;
- using ::testing::InSequence;
- using ::testing::Return;
- using ::testing::SetArgReferee;
- TEST(OneofField, construction)
- {
- message_oneof msg;
- }
- TEST(OneofField, serialize_zero)
- {
- message_oneof msg;
- Mocks::WriteBufferMock buffer;
-
- EXPECT_CALL(buffer, push(_)).Times(0);
- EXPECT_CALL(buffer, push(_,_)).Times(0);
- EXPECT_CALL(buffer, get_available_size()).Times(0);
- EXPECT_TRUE(msg.serialize(buffer));
- }
- TEST(OneofField, set_get_clear)
- {
- message_oneof msg;
- EXPECT_EQ(message_oneof::id::NOT_SET, msg.get_which_xyz());
- msg.set_x(1);
- EXPECT_EQ(1, msg.get_x());
- EXPECT_EQ(message_oneof::id::X, msg.get_which_xyz());
- msg.clear_x();
- EXPECT_EQ(message_oneof::id::NOT_SET, msg.get_which_xyz());
- msg.set_y(1);
- EXPECT_EQ(1, msg.get_y());
- EXPECT_EQ(message_oneof::id::Y, msg.get_which_xyz());
- msg.clear_y();
- EXPECT_EQ(message_oneof::id::NOT_SET, msg.get_which_xyz());
- msg.set_z(1);
- EXPECT_EQ(1, msg.get_z());
- EXPECT_EQ(message_oneof::id::Z, msg.get_which_xyz());
- msg.clear_z();
- }
- TEST(OneofField, serialize_ones)
- {
- InSequence s;
- message_oneof msg;
- Mocks::WriteBufferMock buffer;
- // X
- msg.set_a(1);
- msg.set_b(1);
- msg.set_x(1);
-
- uint8_t expected_x[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x28, 0x01}; // x
- for(auto e : expected_x) {
- EXPECT_CALL(buffer, push(e)).Times(1).WillOnce(Return(true));
- }
- EXPECT_TRUE(msg.serialize(buffer));
- // Y
- msg.set_y(1);
- uint8_t expected_y[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x30, 0x01}; // y
- for(auto e : expected_y) {
- EXPECT_CALL(buffer, push(e)).Times(1).WillOnce(Return(true));
- }
- EXPECT_TRUE(msg.serialize(buffer));
- // z
- msg.set_z(1);
- uint8_t expected_z[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x38, 0x01}; // z
- for(auto e : expected_z) {
- EXPECT_CALL(buffer, push(e)).Times(1).WillOnce(Return(true));
- }
- EXPECT_TRUE(msg.serialize(buffer));
- }
- TEST(OneofField, serialize_second_oneof)
- {
- InSequence s;
- message_oneof msg;
- Mocks::WriteBufferMock buffer;
- // X and V
- msg.set_a(1);
- msg.set_b(1);
- msg.set_x(1);
- msg.set_v(1);
- uint8_t expected_z[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x28, 0x01, // x
- 0x85, 0x01, 0x00, 0x00, 0x80, 0x3f}; // v
- for(auto e : expected_z) {
- EXPECT_CALL(buffer, push(e)).Times(1).WillOnce(Return(true));
- }
- EXPECT_TRUE(msg.serialize(buffer));
- }
- TEST(OneofField, deserialize)
- {
- InSequence s;
- message_oneof msg;
- Mocks::ReadBufferMock buffer;
- uint8_t referee[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x30, 0x01}; // y
- for(auto r: referee) {
- EXPECT_CALL(buffer, pop(_)).Times(1).WillOnce(DoAll(SetArgReferee<0>(r), Return(true)));
- }
- EXPECT_CALL(buffer, pop(_)).Times(1).WillOnce(Return(false));
- EXPECT_TRUE(msg.deserialize(buffer));
- EXPECT_EQ(1, msg.get_a());
- EXPECT_EQ(1, msg.get_b());
- EXPECT_EQ(message_oneof::id::Y, msg.get_which_xyz());
- EXPECT_EQ(1, msg.get_y());
- }
- TEST(OneofField, deserialize_second_oneof)
- {
- InSequence s;
- message_oneof msg;
- Mocks::ReadBufferMock buffer;
- uint8_t referee[] = {0x08, 0x01, // a
- 0x50, 0x01, // b
- 0x28, 0x01, // x
- 0x85, 0x01, 0x00, 0x00, 0x80, 0x3f}; // v
- for(auto r: referee) {
- EXPECT_CALL(buffer, pop(_)).Times(1).WillOnce(DoAll(SetArgReferee<0>(r), Return(true)));
- }
- EXPECT_CALL(buffer, pop(_)).Times(1).WillOnce(Return(false));
- EXPECT_TRUE(msg.deserialize(buffer));
- EXPECT_EQ(1, msg.get_a());
- EXPECT_EQ(1, msg.get_b());
- EXPECT_EQ(message_oneof::id::X, msg.get_which_xyz());
- EXPECT_EQ(1, msg.get_x());
- EXPECT_EQ(message_oneof::id::V, msg.get_which_uvw());
- EXPECT_EQ(1.0, msg.get_y());
- }
|