Skip to content

Commit d0b9ac7

Browse files
Adding override destructor & unassigning ifstream pointer when destruct
1 parent 2ec7d3b commit d0b9ac7

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

Include/Tests/ConfigParsing/MockComponents.hpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,8 @@ namespace std
3737
class Mock_ifstream
3838
{
3939
public:
40-
CO_INSERT_MEMBER_METHOD_CTOR( OverrideInstance,
41-
Mock_ifstream,
42-
const ghc::filesystem::path&)
40+
CO_INSERT_MEMBER_METHOD_CTOR(OverrideInstance, Mock_ifstream, const ghc::filesystem::path&)
41+
CO_INSERT_MEMBER_METHOD_DTOR(OverrideInstance, Mock_ifstream)
4342
CO_INSERT_MEMBER_METHOD(OverrideInstance, bool, operator!, ())
4443
CO_INSERT_MEMBER_METHOD(OverrideInstance, std::string, rdbuf, ())
4544
CO_INSERT_METHOD( OverrideInstance,

Src/Tests/ConfigParsingTest.cpp

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,19 @@ int main(int argc, char** argv)
9898
)
9999
.Times(1)
100100
.Expected();
101+
//Unassign ifstream pointers when done
102+
CO_INSTRUCT_NO_REF (OverrideInstance, ~Mock_ifstream)
103+
.WhenCalledExpectedly_Do
104+
(
105+
[&userConfigIfstreamInstance, &versionIfstreamInstance]
106+
(void* instance, std::vector<CppOverride::TypedDataInfo>&)
107+
{
108+
if(instance == userConfigIfstreamInstance)
109+
userConfigIfstreamInstance = nullptr;
110+
else if(instance == versionIfstreamInstance)
111+
versionIfstreamInstance = nullptr;
112+
}
113+
);
101114
CO_INSTRUCT_REF (OverrideInstance, std::Mock_ifstream, operator!)
102115
.If
103116
(
@@ -509,7 +522,32 @@ int main(int argc, char** argv)
509522
}
510523
)
511524
.Expected();
512-
525+
//Unassign ifstream pointers when done
526+
CO_REMOVE_INSTRUCT_NO_REF(OverrideInstance, ~Mock_ifstream);
527+
CO_INSTRUCT_NO_REF (OverrideInstance, ~Mock_ifstream)
528+
.WhenCalledExpectedly_Do
529+
(
530+
[
531+
&userConfigIfstreamInstance,
532+
&versionIfstreamInstance,
533+
&gccImportIfstreamInstance,
534+
&filetypesImportIfstreamInstance,
535+
&gccCompilerLinkerImportIfstreamInstance
536+
]
537+
(void* instance, ...)
538+
{
539+
if(instance == userConfigIfstreamInstance)
540+
userConfigIfstreamInstance = nullptr;
541+
else if(instance == versionIfstreamInstance)
542+
versionIfstreamInstance = nullptr;
543+
else if(instance == gccImportIfstreamInstance)
544+
gccImportIfstreamInstance = nullptr;
545+
else if(instance == filetypesImportIfstreamInstance)
546+
filetypesImportIfstreamInstance = nullptr;
547+
else if(instance == gccCompilerLinkerImportIfstreamInstance)
548+
gccCompilerLinkerImportIfstreamInstance = nullptr;
549+
}
550+
);
513551
//Mock for rdbuf call with specific path check for import files
514552
CO_INSTRUCT_REF (OverrideInstance, std::Mock_ifstream, rdbuf)
515553
.Returns<std::string>(importedGccProfileYamlStr)

0 commit comments

Comments
 (0)