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); }
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); }