aboutsummaryrefslogtreecommitdiffstats
path: root/test/file_util_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/file_util_test.cpp')
-rw-r--r--test/file_util_test.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/file_util_test.cpp b/test/file_util_test.cpp
new file mode 100644
index 0000000..f78fbe2
--- /dev/null
+++ b/test/file_util_test.cpp
@@ -0,0 +1,84 @@
+/**
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * @file data-pool-service-test.c
+ * @brief Unit test fot data-pool-service-test.c
+ */
+#include <gtest/gtest.h>
+#include "mock/syscall_io_mock.hpp"
+
+// Test Terget files ---------------------------------------
+extern "C" {
+#include "../lib/file-util.c"
+}
+// Test Terget files ---------------------------------------
+using namespace ::testing;
+
+struct file_util_test : Test, SyscallIOMockBase {};
+
+//--------------------------------------------------------------------------------------------------------
+TEST_F(file_util_test, file_util_test_safe_read__success)
+{
+ ssize_t ret = -1;
+ uint8_t buffer[1024*1024];
+ size_t sz = 1024*1024;
+ size_t sza = sz - 1024;
+ size_t szb = 1024;
+
+ EXPECT_CALL(sysiom, read(1,buffer,sz)).WillOnce(SetErrnoAndReturn(EIO, -1));
+ ret = safe_read(1, buffer, sz);
+ ASSERT_EQ(-1, ret);
+
+ EXPECT_CALL(sysiom, read(1,buffer,sz)).WillOnce(Return(sz));
+ ret = safe_read(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, read(1,buffer,sz))
+ .WillOnce(SetErrnoAndReturn(EINTR, -1))
+ .WillOnce(Return(sz));
+ ret = safe_read(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, read(1,buffer,sz)).WillOnce(Return(sza));
+ EXPECT_CALL(sysiom, read(1,(&buffer[sza]),szb)).WillOnce(Return(szb));
+ ret = safe_read(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, read(1,buffer,sz)).WillOnce(Return(sza));
+ EXPECT_CALL(sysiom, read(1,(&buffer[sza]),szb)).WillOnce(Return(0));
+ ret = safe_read(1, buffer, sz);
+ ASSERT_EQ(sza, ret);
+}
+//--------------------------------------------------------------------------------------------------------
+TEST_F(file_util_test, file_util_test_safe_write__success)
+{
+ ssize_t ret = -1;
+ uint8_t buffer[1024*1024];
+ size_t sz = 1024*1024;
+ size_t sza = sz - 1024;
+ size_t szb = 1024;
+
+ EXPECT_CALL(sysiom, write(1,buffer,sz)).WillOnce(SetErrnoAndReturn(EIO, -1));
+ ret = safe_write(1, buffer, sz);
+ ASSERT_EQ(-1, ret);
+
+ EXPECT_CALL(sysiom, write(1,buffer,sz)).WillOnce(Return(sz));
+ ret = safe_write(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, write(1,buffer,sz))
+ .WillOnce(SetErrnoAndReturn(EINTR, -1))
+ .WillOnce(Return(sz));
+ ret = safe_write(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, write(1,buffer,sz)).WillOnce(Return(sza));
+ EXPECT_CALL(sysiom, write(1,(&buffer[sza]),szb)).WillOnce(Return(szb));
+ ret = safe_write(1, buffer, sz);
+ ASSERT_EQ(sz, ret);
+
+ EXPECT_CALL(sysiom, write(1,buffer,sz)).WillOnce(Return(sza));
+ EXPECT_CALL(sysiom, write(1,(&buffer[sza]),szb)).WillOnce(Return(0));
+ ret = safe_write(1, buffer, sz);
+ ASSERT_EQ(sza, ret);
+}