예제 #1
0
파일: test_buffer.cpp 프로젝트: Abioy/libmc
TEST(test_buffer, peek) {
  BufferReader reader;

  char str[] = "1024233";
  size_t len_str = strlen(str);
  DataBlock::setMinCapacity(len_str);
  reader.write(str, len_str);
  reader.write(CSTR(" "), 1);
  reader.write(str, len_str);
  EXPECT_EQ(reader.size(), len_str * 2 + 1);
  EXPECT_EQ(reader.capacity(), DataBlock::minCapacity() * 3);
  EXPECT_EQ(reader.readLeft(), len_str * 2 + 1);
  err_code_t err;
  ASSERT_EQ(reader.peek(err, 0), str[0]);
  ASSERT_EQ(err, RET_OK);
  for (size_t i = 0; i < len_str; i++) {
    ASSERT_EQ(reader.peek(err, i), str[i]);
    ASSERT_EQ(err, RET_OK);
  }
  ASSERT_EQ(reader.peek(err, len_str), ' ');
  ASSERT_EQ(err, RET_OK);

  for (size_t i = len_str + 1; i < 2 * len_str + 1; i++) {
    ASSERT_EQ(reader.peek(err, i), str[i - len_str - 1]);
    ASSERT_EQ(err, RET_OK);
  }
  reader.peek(err, 2 * len_str + 1);
  ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR);
  ASSERT_EQ(reader.nDataBlock(), 3);
  TEST_SKIP_BYTES_NO_THROW(2 * len_str + 1);
}
예제 #2
0
파일: test_buffer.cpp 프로젝트: Abioy/libmc
TEST(test_buffer, scalability) {
  err_code_t err;
  DataBlock::setMinCapacity(3);
  BufferReader reader;
  reader.write(CSTR("012"), 3);
  reader.write(CSTR("345"), 3);
  reader.write(CSTR("678"), 3);
  ASSERT_EQ(reader.peek(err, 0), '0');
  ASSERT_EQ(err, RET_OK);

  TEST_SKIP_BYTES_NO_THROW(3);
  ASSERT_EQ(reader.peek(err, 0), '3');
  ASSERT_EQ(err, RET_OK);

  reader.write(CSTR("BCD"), 3);
  ASSERT_EQ(reader.capacity(), 12);
  TEST_SKIP_BYTES_NO_THROW(9);
  reader.reset();
  ASSERT_EQ(reader.capacity(), 3);
}