diff options
author | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2022-07-04 07:23:53 +0900 |
---|---|---|
committer | Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> | 2022-07-30 23:42:18 +0900 |
commit | e8a05c6f1ac288a8cfa5b0837313fec8fb7aadaf (patch) | |
tree | 4f43e3521ea2384f7298a6f00406aab631f44cde /test/file_util_test.cpp | |
parent | e5f52b7e2305019651fe4b6351d3466638af3488 (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.cpp | 84 |
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); +} |