#170 test buffer seek

Mon, 16 May 2022 19:15:44 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 16 May 2022 19:15:44 +0200
changeset 547
9e933920dcf9
parent 546
900795d59d03
child 548
459bca1cdf8d

#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

mercurial