Skip to content

Commit a683b70

Browse files
committed
Add tests for this case
1 parent df038ef commit a683b70

File tree

4 files changed

+83
-0
lines changed

4 files changed

+83
-0
lines changed

server/test/framework/Server_Tests.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2103,6 +2103,44 @@ namespace {
21032103
testUtils::checkStatuses(resultsMap, tests);
21042104
}
21052105

2106+
TEST_F(Server_Test, Run_Tests_For_Multi_Dim_Pointers) {
2107+
fs::path multi_dim_pointers_c = getTestFilePath("multi_dim_pointers.c");
2108+
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,
2109+
srcPaths, multi_dim_pointers_c,
2110+
GrpcUtils::UTBOT_AUTO_TARGET_PATH, true, false);
2111+
auto testGen = FileTestGen(*request, writer.get(), TESTMODE);
2112+
Status status = Server::TestsGenServiceImpl::ProcessBaseTestRequest(testGen, writer.get());
2113+
ASSERT_TRUE(status.ok()) << status.error_message();
2114+
EXPECT_GE(testUtils::getNumberOfTests(testGen.tests), 2);
2115+
2116+
fs::path testsDirPath = getTestFilePath("tests");
2117+
2118+
fs::path multi_dim_pointers_test_cpp = Paths::sourcePathToTestPath(
2119+
utbot::ProjectContext(projectName, suitePath, testsDirPath, buildDirRelativePath, clientProjectPath),
2120+
multi_dim_pointers_c);
2121+
auto testFilter = GrpcUtils::createTestFilterForFile(multi_dim_pointers_test_cpp);
2122+
auto runRequest = testUtils::createCoverageAndResultsRequest(
2123+
projectName, suitePath, testsDirPath, buildDirRelativePath, std::move(testFilter));
2124+
2125+
static auto coverageAndResultsWriter =
2126+
std::make_unique<ServerCoverageAndResultsWriter>(nullptr);
2127+
CoverageAndResultsGenerator coverageGenerator{ runRequest.get(),
2128+
coverageAndResultsWriter.get() };
2129+
utbot::SettingsContext settingsContext{
2130+
true, false, 45, 0, false, false, ErrorMode::FAILING, false
2131+
};
2132+
coverageGenerator.generate(false, settingsContext);
2133+
2134+
EXPECT_FALSE(coverageGenerator.hasExceptions());
2135+
ASSERT_TRUE(coverageGenerator.getCoverageMap().empty());
2136+
2137+
auto resultsMap = coverageGenerator.getTestResultMap();
2138+
auto tests = coverageGenerator.getTestsToLaunch();
2139+
2140+
StatusCountMap expectedStatusCountMap{ { testsgen::TEST_PASSED, 2 } };
2141+
testUtils::checkStatuses(resultsMap, tests);
2142+
}
2143+
21062144
TEST_F(Server_Test, Run_Tests_For_Struct_With_Union) {
21072145
fs::path struct_with_union_c = getTestFilePath("struct_with_union.c");
21082146
auto request = testUtils::createFileRequest(projectName, suitePath, buildDirRelativePath,

server/test/suites/server/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ add_executable(server
2020
keywords.c
2121
linkage.c
2222
main.c
23+
multi_dim_pointers.c
2324
pointer_parameters.c
2425
pointer_return.c
2526
simple_structs.c
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#include "multi_dim_pointers.h"
2+
3+
int func_with_multi_dim_pointer(struct MainStruct **str) {
4+
if (!str) {
5+
return 0;
6+
}
7+
str++;
8+
struct MainStruct *ptr = *str;
9+
int sz = 0;
10+
if (ptr) {
11+
struct ElementStruct *e = ptr->list.head;
12+
struct ElementStruct *n;
13+
for (int i = 0; i < 5; i++) {
14+
if (e) {
15+
n = e->next;
16+
sz++;
17+
} else {
18+
break;
19+
}
20+
}
21+
}
22+
return sz;
23+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#ifndef UNITTESTBOT_MULTI_DIM_POINTERS_H
2+
#define UNITTESTBOT_MULTI_DIM_POINTERS_H
3+
4+
struct ElementStruct {
5+
struct ElementStruct *prev;
6+
struct ElementStruct *next;
7+
};
8+
9+
struct ListStruct {
10+
struct ElementStruct *head;
11+
struct ElementStruct *tail;
12+
unsigned size;
13+
};
14+
15+
struct MainStruct {
16+
struct ListStruct list;
17+
};
18+
19+
int func_with_multi_dim_pointer(struct MainStruct **str);
20+
21+
#endif // UNITTESTBOT_MULTI_DIM_POINTERS_H

0 commit comments

Comments
 (0)