TEST(test_buffer, read_unsigned) { err_code_t err; char str[] = "1024 768\r798"; size_t len_str = 12; DataBlock::setMinCapacity(MIN_DATABLOCK_CAPACITY); BufferReader reader; reader.write(str, len_str); uint64_t val; TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 1024ULL); EXPECT_EQ(reader.peek(err, 0), ' '); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 768ULL); EXPECT_EQ(reader.peek(err, 0), '\r'); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); reader.readUnsigned(err, val); ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR); TEST_SKIP_BYTES_NO_THROW(3); }
TEST(test_buffer, read_unsigned_empty) { err_code_t err; char str[] = "6"; size_t len_str = strlen(str); uint64_t val; DataBlock::setMinCapacity(MIN_DATABLOCK_CAPACITY); BufferReader reader; reader.readUnsigned(err, val); ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR); reader.write(str, len_str); reader.readUnsigned(err, val); ASSERT_EQ(err, RET_INCOMPLETE_BUFFER_ERR); TEST_SKIP_BYTES_NO_THROW(len_str); }
TEST(test_buffer, read_unsigned_across_block) { err_code_t err; DataBlock::setMinCapacity(5); BufferReader reader; reader.write(CSTR("12345"), 5); reader.write(CSTR("6 89 "), 5); reader.write(CSTR("423 0"), 5); reader.write(CSTR(" 10\r\n"), 5); uint64_t val; TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 123456ULL); EXPECT_EQ(reader.peek(err, 0), ' '); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 89ULL); EXPECT_EQ(reader.peek(err, 0), ' '); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 423ULL); EXPECT_EQ(reader.peek(err, 0), ' '); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 0ULL); EXPECT_EQ(reader.peek(err, 0), ' '); ASSERT_EQ(err, RET_OK);; TEST_SKIP_BYTES_NO_THROW(1); TEST_READ_UNSIGNED_NO_THROW(val); ASSERT_EQ(val, 10ULL); reader.readUnsigned(err, val); ASSERT_EQ(err, RET_PROGRAMMING_ERR); TEST_SKIP_BYTES_NO_THROW(2); }