aboutsummaryrefslogtreecommitdiffstats
path: root/test/file_util_test.cpp
diff options
context:
space:
mode:
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2022-07-04 07:23:53 +0900
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2022-07-30 23:42:18 +0900
commite8a05c6f1ac288a8cfa5b0837313fec8fb7aadaf (patch)
tree4f43e3521ea2384f7298a6f00406aab631f44cde /test/file_util_test.cpp
parente5f52b7e2305019651fe4b6351d3466638af3488 (diff)
Add test case for librefop
The librefop aim to 100% code coverage testing. This patch add test case with mock to aim to that criteria. Bug-AGL: SPEC-4500 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: I4bf14d343b9fca784fb7bc3ee6d3e53691a5ea4e
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);
+}