예제 #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, peek_one) {
  err_code_t err = RET_OK;

  BufferReader reader;
  DataBlock::setMinCapacity(0x2B);

  reader.write(CSTR("\x2B"), 1);
  ASSERT_EQ(reader.size(), 1);
  ASSERT_EQ(reader.readLeft(), 1);
  ASSERT_EQ(reader.nDataBlock(), 1);

  ASSERT_EQ(reader.peek(err, 0), '\x2B');
  ASSERT_EQ(err, RET_OK);
  ASSERT_EQ(reader.peek(err, 0), '\x2B');
  ASSERT_EQ(err, RET_OK);

  reader.peek(err, 1);
  ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR);

  reader.peek(err, 2);
  ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR);

  reader.write(CSTR("-~"), 2);
  ASSERT_EQ(reader.peek(err, 1), '-');
  ASSERT_EQ(err, RET_OK);
  ASSERT_EQ(reader.peek(err, 2), '~');
  ASSERT_EQ(err, RET_OK);
  reader.peek(err, 3);
  ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR);
  TEST_SKIP_BYTES_NO_THROW(3);
}