Mon, 16 May 2022 19:15:44 +0200
#170 test buffer seek
test/test_buffer.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/test/test_buffer.cpp Sun May 01 16:48:26 2022 +0200 1.2 +++ b/test/test_buffer.cpp Mon May 16 19:15:44 2022 +0200 1.3 @@ -145,6 +145,16 @@ 1.4 EXPECT_TRUE(memcmp(buf.space, "test________", 8) == 0); 1.5 } 1.6 1.7 +TEST_F(BufferShiftLeft, ZeroOffsetInterface) { 1.8 + ASSERT_EQ(buf.pos, 4); 1.9 + ASSERT_EQ(buf.size, 4); 1.10 + int ret = cxBufferShift(&buf, -0); 1.11 + EXPECT_EQ(ret, 0); 1.12 + EXPECT_EQ(buf.pos, 4); 1.13 + EXPECT_EQ(buf.size, 4); 1.14 + EXPECT_TRUE(memcmp(buf.space, "test________", 8) == 0); 1.15 +} 1.16 + 1.17 TEST_F(BufferShiftLeft, Standard) { 1.18 ASSERT_EQ(buf.pos, 4); 1.19 ASSERT_EQ(buf.size, 4); 1.20 @@ -198,6 +208,16 @@ 1.21 EXPECT_TRUE(memcmp(buf.space, "test________", 8) == 0); 1.22 } 1.23 1.24 +TEST_F(BufferShiftRight, ZeroOffsetInterface) { 1.25 + ASSERT_EQ(buf.pos, 4); 1.26 + ASSERT_EQ(buf.size, 4); 1.27 + int ret = cxBufferShift(&buf, +0); 1.28 + EXPECT_EQ(ret, 0); 1.29 + EXPECT_EQ(buf.pos, 4); 1.30 + EXPECT_EQ(buf.size, 4); 1.31 + EXPECT_TRUE(memcmp(buf.space, "test________", 8) == 0); 1.32 +} 1.33 + 1.34 TEST_F(BufferShiftRight, Standard) { 1.35 ASSERT_EQ(buf.pos, 4); 1.36 ASSERT_EQ(buf.size, 4); 1.37 @@ -559,3 +579,103 @@ 1.38 ASSERT_EQ(target.size, 15); 1.39 EXPECT_EQ(memcmp(target.space, "prepfoobarhello", 15), 0); 1.40 } 1.41 + 1.42 +class BufferSeek : public ::testing::Test { 1.43 +protected: 1.44 + void SetUp() override { 1.45 + cxBufferInit(&buf, nullptr, 16, cxDefaultAllocator, CX_BUFFER_DEFAULT); 1.46 + buf.size = 6; 1.47 + buf.pos = 3; 1.48 + } 1.49 + 1.50 + void TearDown() override { 1.51 + cxBufferDestroy(&buf); 1.52 + } 1.53 + 1.54 + CxBuffer buf{}; 1.55 +}; 1.56 + 1.57 +TEST_F(BufferSeek, SetZero) { 1.58 + int result = cxBufferSeek(&buf, 0, SEEK_SET); 1.59 + EXPECT_EQ(result, 0); 1.60 + EXPECT_EQ(buf.pos, 0); 1.61 +} 1.62 + 1.63 +TEST_F(BufferSeek, SetValid) { 1.64 + int result = cxBufferSeek(&buf, 5, SEEK_SET); 1.65 + EXPECT_EQ(result, 0); 1.66 + EXPECT_EQ(buf.pos, 5); 1.67 +} 1.68 + 1.69 +TEST_F(BufferSeek, SetInvalid) { 1.70 + ASSERT_EQ(buf.pos, 3); 1.71 + int result = cxBufferSeek(&buf, 6, SEEK_SET); 1.72 + EXPECT_NE(result, 0); 1.73 + EXPECT_EQ(buf.pos, 3); 1.74 +} 1.75 + 1.76 +TEST_F(BufferSeek, CurZero) { 1.77 + ASSERT_EQ(buf.pos, 3); 1.78 + int result = cxBufferSeek(&buf, 0, SEEK_CUR); 1.79 + EXPECT_EQ(result, 0); 1.80 + EXPECT_EQ(buf.pos, 3); 1.81 +} 1.82 + 1.83 +TEST_F(BufferSeek, CurValidPositive) { 1.84 + ASSERT_EQ(buf.pos, 3); 1.85 + int result = cxBufferSeek(&buf, 2, SEEK_CUR); 1.86 + EXPECT_EQ(result, 0); 1.87 + EXPECT_EQ(buf.pos, 5); 1.88 +} 1.89 + 1.90 +TEST_F(BufferSeek, CurValidNegative) { 1.91 + ASSERT_EQ(buf.pos, 3); 1.92 + int result = cxBufferSeek(&buf, -3, SEEK_CUR); 1.93 + EXPECT_EQ(result, 0); 1.94 + EXPECT_EQ(buf.pos, 0); 1.95 +} 1.96 + 1.97 +TEST_F(BufferSeek, CurInvalidPositive) { 1.98 + ASSERT_EQ(buf.pos, 3); 1.99 + int result = cxBufferSeek(&buf, 3, SEEK_CUR); 1.100 + EXPECT_NE(result, 0); 1.101 + EXPECT_EQ(buf.pos, 3); 1.102 +} 1.103 + 1.104 +TEST_F(BufferSeek, CurInvalidNegative) { 1.105 + ASSERT_EQ(buf.pos, 3); 1.106 + int result = cxBufferSeek(&buf, -4, SEEK_CUR); 1.107 + EXPECT_NE(result, 0); 1.108 + EXPECT_EQ(buf.pos, 3); 1.109 +} 1.110 + 1.111 +TEST_F(BufferSeek, EndZero) { 1.112 + ASSERT_EQ(buf.size, 6); 1.113 + int result = cxBufferSeek(&buf, 0, SEEK_END); 1.114 + // the (past-the-)end position is always invalid 1.115 + EXPECT_NE(result, 0); 1.116 + EXPECT_EQ(buf.pos, 3); 1.117 +} 1.118 + 1.119 +TEST_F(BufferSeek, EndValid) { 1.120 + ASSERT_EQ(buf.size, 6); 1.121 + int result = cxBufferSeek(&buf, -6, SEEK_END); 1.122 + EXPECT_EQ(result, 0); 1.123 + EXPECT_EQ(buf.pos, 0); 1.124 +} 1.125 + 1.126 +TEST_F(BufferSeek, EndInvalid) { 1.127 + ASSERT_EQ(buf.size, 6); 1.128 + int result = cxBufferSeek(&buf, 1, SEEK_END); 1.129 + EXPECT_NE(result, 0); 1.130 + EXPECT_EQ(buf.pos, 3); 1.131 +} 1.132 + 1.133 +TEST_F(BufferSeek, WhenceInvalid) { 1.134 + ASSERT_EQ(buf.size, 6); 1.135 + ASSERT_EQ(buf.pos, 3); 1.136 + int result = cxBufferSeek(&buf, 2, 9000); 1.137 + EXPECT_NE(result, 0); 1.138 + EXPECT_EQ(buf.size, 6); 1.139 + EXPECT_EQ(buf.pos, 3); 1.140 +} 1.141 \ No newline at end of file