TEST_F(NetworkTest, RecvMessageTwoParts) { EXPECT_CALL(*system, Recv(13, _, 1, 0)) .WillOnce(Invoke([](int, void *buffer, size_t, int) { char *buf = (char*) buffer; buf[0] = 5; return 1; })); EXPECT_CALL(*system, Recv(13, _, 5, 0)) .WillOnce(Invoke([](int, void *buffer, size_t, int) { char *buf = (char*) buffer; strncpy(buf, "te", 2); return 2; })); EXPECT_CALL(*system, Recv(13, _, 3, 0)) .WillOnce(Invoke([](int, void *buffer, size_t, int) { char *buf = (char*) buffer; strncpy(buf, "st", 3); return 3; })); EXPECT_CALL(*system, Poll(_, 1, detail::TimeoutSeconds * 1000)) .WillOnce(Return(1)) .WillOnce(Return(1)) .WillOnce(Return(1)); NetworkPtr network = Network::Create(system); NetworkMessage nm = network->RecvMessage(13); ASSERT_EQ(5, nm.size()); EXPECT_STREQ(nm.data(), "test"); }
TEST_F(NetworkTest, RecvMessageOneLongMessage) { EXPECT_CALL(*system, Recv(13, _, 1, 0)).WillOnce(Invoke([](int, void *buffer, size_t, int) { unsigned char *buf = (unsigned char*) buffer; buf[0] = (unsigned char) (255); // copy buffer content return 256; })); EXPECT_CALL(*system, Poll(_, 1, detail::TimeoutSeconds * 1000)).WillOnce(Return(1)); NetworkPtr network = Network::Create(system); NetworkMessage nm = network->RecvMessage(13); ASSERT_EQ(255, nm.size()); }