| Index: remoting/protocol/message_decoder_unittest.cc
|
| diff --git a/remoting/protocol/messages_decoder_unittest.cc b/remoting/protocol/message_decoder_unittest.cc
|
| similarity index 76%
|
| rename from remoting/protocol/messages_decoder_unittest.cc
|
| rename to remoting/protocol/message_decoder_unittest.cc
|
| index 7c5616d6d779959b5859b00cd22659b87669122a..c2772c8d2a0042013fe5fcb7eb610b432b79bc11 100644
|
| --- a/remoting/protocol/messages_decoder_unittest.cc
|
| +++ b/remoting/protocol/message_decoder_unittest.cc
|
| @@ -7,7 +7,9 @@
|
| #include "base/scoped_ptr.h"
|
| #include "base/stl_util-inl.h"
|
| #include "net/base/io_buffer.h"
|
| -#include "remoting/protocol/messages_decoder.h"
|
| +#include "remoting/base/multiple_array_input_stream.h"
|
| +#include "remoting/proto/internal.pb.h"
|
| +#include "remoting/protocol/message_decoder.h"
|
| #include "remoting/protocol/util.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -60,44 +62,42 @@ static void PrepareData(uint8** buffer, int* size) {
|
| memcpy(*buffer, encoded_data.c_str(), *size);
|
| }
|
|
|
| -TEST(MessagesDecoderTest, BasicOperations) {
|
| +void SimulateReadSequence(const int read_sequence[], int sequence_size) {
|
| // Prepare encoded data for testing.
|
| int size;
|
| uint8* test_data;
|
| PrepareData(&test_data, &size);
|
| scoped_array<uint8> memory_deleter(test_data);
|
|
|
| - // Then simulate using MessagesDecoder to decode variable
|
| + // Then simulate using MessageDecoder to decode variable
|
| // size of encoded data.
|
| // The first thing to do is to generate a variable size of data. This is done
|
| // by iterating the following array for read sizes.
|
| - const int kReadSizes[] = {1, 2, 3, 1};
|
| -
|
| - MessagesDecoder decoder;
|
| + MessageDecoder decoder;
|
|
|
| // Then feed the protocol decoder using the above generated data and the
|
| // read pattern.
|
| - HostMessageList message_list;
|
| + std::list<ChromotingHostMessage*> message_list;
|
| for (int i = 0; i < size;) {
|
| // First generate the amount to feed the decoder.
|
| - int read = std::min(size - i, kReadSizes[i % arraysize(kReadSizes)]);
|
| + int read = std::min(size - i, read_sequence[i % sequence_size]);
|
|
|
| - // And then prepare a DataBuffer for feeding it.
|
| + // And then prepare an IOBuffer for feeding it.
|
| scoped_refptr<net::IOBuffer> buffer = new net::IOBuffer(read);
|
| memcpy(buffer->data(), test_data + i, read);
|
| - decoder.ParseHostMessages(buffer, read, &message_list);
|
| + decoder.ParseMessages(buffer, read, &message_list);
|
| i += read;
|
| }
|
|
|
| // Then verify the decoded messages.
|
| EXPECT_EQ(31u, message_list.size());
|
| - ASSERT_TRUE(message_list.size() > 0);
|
| EXPECT_TRUE(message_list.front()->has_init_client());
|
| delete message_list.front();
|
| message_list.pop_front();
|
|
|
| int index = 0;
|
| - for (HostMessageList::iterator it = message_list.begin();
|
| + for (std::list<ChromotingHostMessage*>::iterator it =
|
| + message_list.begin();
|
| it != message_list.end(); ++it) {
|
| ChromotingHostMessage* message = *it;
|
| int type = index % 3;
|
| @@ -118,4 +118,19 @@ TEST(MessagesDecoderTest, BasicOperations) {
|
| STLDeleteElements(&message_list);
|
| }
|
|
|
| +TEST(MessageDecoderTest, SmallReads) {
|
| + const int kReads[] = {1, 2, 3, 1};
|
| + SimulateReadSequence(kReads, arraysize(kReads));
|
| +}
|
| +
|
| +TEST(MessageDecoderTest, LargeReads) {
|
| + const int kReads[] = {50, 50, 5};
|
| + SimulateReadSequence(kReads, arraysize(kReads));
|
| +}
|
| +
|
| +TEST(MessageDecoderTest, EmptyReads) {
|
| + const int kReads[] = {4, 0, 50, 0};
|
| + SimulateReadSequence(kReads, arraysize(kReads));
|
| +}
|
| +
|
| } // namespace remoting
|
|
|