From e8a05c6f1ac288a8cfa5b0837313fec8fb7aadaf Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Mon, 4 Jul 2022 07:23:53 +0900 Subject: 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 Change-Id: I4bf14d343b9fca784fb7bc3ee6d3e53691a5ea4e --- test/file_util_test.cpp | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 test/file_util_test.cpp (limited to 'test/file_util_test.cpp') 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 +#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); +} -- cgit 1.2.3-korg