Skip to content

Commit 719b7d6

Browse files
committed
Add more unit test
1 parent dfaba04 commit 719b7d6

File tree

5 files changed

+237
-30
lines changed

5 files changed

+237
-30
lines changed

src/NppJsonViewer/Profile.cpp

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -74,43 +74,43 @@ bool ProfileSetting::GetSettings(Setting &info) const
7474
bool bRetVal = true;
7575

7676
int nVal = 0;
77-
bRetVal &= ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_EOL, nVal, static_cast<int>(info.lineEnding));
77+
bRetVal = bRetVal && ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_EOL, nVal, static_cast<int>(info.lineEnding));
7878
if (bRetVal)
7979
info.lineEnding = static_cast<LineEnding>(nVal);
8080

81-
bRetVal &= ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_LINE, nVal, static_cast<int>(info.lineFormat));
81+
bRetVal = bRetVal && ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_LINE, nVal, static_cast<int>(info.lineFormat));
8282
if (bRetVal)
8383
info.lineFormat = static_cast<LineFormat>(nVal);
8484

85-
bRetVal &= ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENT, nVal, static_cast<int>(info.indent.style));
85+
bRetVal = bRetVal && ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENT, nVal, static_cast<int>(info.indent.style));
8686
if (bRetVal)
8787
info.indent.style = static_cast<IndentStyle>(nVal);
8888

89-
bRetVal &= ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENTCOUNT, nVal, info.indent.len);
89+
bRetVal = bRetVal && ReadValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENTCOUNT, nVal, info.indent.len);
9090
if (bRetVal)
9191
info.indent.len = nVal;
9292

93-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_FOLLOW_TAB, nVal, info.bFollowCurrentTab);
93+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_FOLLOW_TAB, nVal, info.bFollowCurrentTab);
9494
if (bRetVal)
9595
info.bFollowCurrentTab = static_cast<bool>(nVal);
9696

97-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_AUTO_FORMAT, nVal, info.bAutoFormat);
97+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_AUTO_FORMAT, nVal, info.bAutoFormat);
9898
if (bRetVal)
9999
info.bAutoFormat = static_cast<bool>(nVal);
100100

101-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_USE_HIGHLIGHT, nVal, info.bUseJsonHighlight);
101+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_USE_HIGHLIGHT, nVal, info.bUseJsonHighlight);
102102
if (bRetVal)
103103
info.bUseJsonHighlight = static_cast<bool>(nVal);
104104

105-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMENT, nVal, info.parseOptions.bIgnoreComment);
105+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMENT, nVal, info.parseOptions.bIgnoreComment);
106106
if (bRetVal)
107107
info.parseOptions.bIgnoreComment = static_cast<bool>(nVal);
108108

109-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMA, nVal, info.parseOptions.bIgnoreTrailingComma);
109+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMA, nVal, info.parseOptions.bIgnoreTrailingComma);
110110
if (bRetVal)
111111
info.parseOptions.bIgnoreTrailingComma = static_cast<bool>(nVal);
112112

113-
bRetVal &= ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_REPLACE_UNDEFINED, nVal, info.parseOptions.bReplaceUndefined);
113+
bRetVal = bRetVal && ReadValue(STR_INI_OTHER_SEC, STR_INI_OTHER_REPLACE_UNDEFINED, nVal, info.parseOptions.bReplaceUndefined);
114114
if (bRetVal)
115115
info.parseOptions.bReplaceUndefined = static_cast<bool>(nVal);
116116

@@ -121,17 +121,17 @@ bool ProfileSetting::SetSettings(const Setting &info) const
121121
{
122122
bool bRetVal = true;
123123

124-
bRetVal &= WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_EOL, static_cast<int>(info.lineEnding));
125-
bRetVal &= WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_LINE, static_cast<int>(info.lineFormat));
126-
bRetVal &= WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENT, static_cast<int>(info.indent.style));
127-
bRetVal &= WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENTCOUNT, info.indent.len);
128-
129-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_FOLLOW_TAB, info.bFollowCurrentTab);
130-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_AUTO_FORMAT, info.bAutoFormat);
131-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_USE_HIGHLIGHT, info.bUseJsonHighlight);
132-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMENT, info.parseOptions.bIgnoreComment);
133-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMA, info.parseOptions.bIgnoreTrailingComma);
134-
bRetVal &= WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_REPLACE_UNDEFINED, info.parseOptions.bReplaceUndefined);
124+
bRetVal = bRetVal && WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_EOL, static_cast<int>(info.lineEnding));
125+
bRetVal = bRetVal && WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_LINE, static_cast<int>(info.lineFormat));
126+
bRetVal = bRetVal && WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENT, static_cast<int>(info.indent.style));
127+
bRetVal = bRetVal && WriteValue(STR_INI_FORMATTING_SEC, STR_INI_FORMATTING_INDENTCOUNT, info.indent.len);
128+
129+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_FOLLOW_TAB, info.bFollowCurrentTab);
130+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_AUTO_FORMAT, info.bAutoFormat);
131+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_USE_HIGHLIGHT, info.bUseJsonHighlight);
132+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMENT, info.parseOptions.bIgnoreComment);
133+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_IGNORE_COMMA, info.parseOptions.bIgnoreTrailingComma);
134+
bRetVal = bRetVal && WriteValue(STR_INI_OTHER_SEC, STR_INI_OTHER_REPLACE_UNDEFINED, info.parseOptions.bReplaceUndefined);
135135

136136
return bRetVal;
137137
}

src/NppJsonViewer/Profile.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
class Profile
66
{
7+
protected:
78
std::wstring m_ProfileFilePath;
89

910
public:

tests/UnitTest/ProfileTest.cpp

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,181 @@
1+
#include <gtest/gtest.h>
2+
3+
#include <memory>
4+
#include <filesystem>
5+
6+
#include "Profile.h"
7+
8+
namespace ProfileSettingTests
9+
{
10+
class ProfileSettingEx : public ProfileSetting
11+
{
12+
public:
13+
ProfileSettingEx(const std::wstring &path)
14+
: ProfileSetting(path)
15+
{
16+
// any left over from previous run
17+
RemoveProfileFile();
18+
}
19+
20+
~ProfileSettingEx()
21+
{
22+
RemoveProfileFile();
23+
}
24+
25+
bool ReadValue(const std::wstring &section, const std::wstring &key, int &retVal, int defaultVal = 0) const
26+
{
27+
return Profile::ReadValue(section, key, retVal, defaultVal);
28+
}
29+
30+
bool ReadValue(const std::wstring &section, const std::wstring &key, std::wstring &retVal, const std::wstring &defaultVal = {}) const
31+
{
32+
return Profile::ReadValue(section, key, retVal, defaultVal);
33+
}
34+
35+
bool WriteValue(const std::wstring &section, const std::wstring &key, int value) const
36+
{
37+
return Profile::WriteValue(section, key, value);
38+
}
39+
40+
bool WriteValue(const std::wstring &section, const std::wstring &key, const std::wstring &value) const
41+
{
42+
return Profile::WriteValue(section, key, value);
43+
}
44+
45+
private:
46+
void RemoveProfileFile()
47+
{
48+
std::error_code ec {};
49+
std::filesystem::remove(m_ProfileFilePath, ec);
50+
}
51+
};
52+
53+
class ProfileTest : public ::testing::Test
54+
{
55+
protected:
56+
std::unique_ptr<ProfileSettingEx> m_pProfile;
57+
58+
void SetUp() override
59+
{
60+
std::wstring exePath;
61+
wchar_t path[MAX_PATH];
62+
DWORD size = GetModuleFileName(nullptr, path, MAX_PATH);
63+
if (size)
64+
{
65+
exePath = path;
66+
size_t pos = exePath.find_last_of(L"\\/");
67+
if (pos != std::wstring::npos)
68+
{
69+
// Remove the executable name, leave only the directory
70+
exePath = exePath.substr(0, pos + 1);
71+
}
72+
}
73+
exePath += L"test_profile.ini";
74+
75+
m_pProfile = std::make_unique<ProfileSettingEx>(exePath);
76+
}
77+
78+
void TearDown() override {}
79+
};
80+
81+
TEST_F(ProfileTest, ReadValueInt_Default)
82+
{
83+
int result = 0;
84+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeIntegerKey", result, 42));
85+
EXPECT_EQ(result, 42);
86+
}
87+
88+
TEST_F(ProfileTest, ReadValueInt_Positive)
89+
{
90+
int result = 0;
91+
EXPECT_TRUE(m_pProfile->WriteValue(L"Settings", L"SomeIntegerKey", 100));
92+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeIntegerKey", result));
93+
EXPECT_EQ(result, 100);
94+
}
95+
96+
TEST_F(ProfileTest, ReadValueInt_Missing)
97+
{
98+
int result = 0;
99+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeIntegerKey", result));
100+
EXPECT_EQ(result, 0);
101+
}
102+
103+
TEST_F(ProfileTest, ReadValueString_Default)
104+
{
105+
std::wstring result;
106+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeStringKey", result, L"default"));
107+
EXPECT_EQ(result, L"default");
108+
}
109+
110+
TEST_F(ProfileTest, ReadValueString_Positive)
111+
{
112+
std::wstring result;
113+
EXPECT_TRUE(m_pProfile->WriteValue(L"Settings", L"SomeStringKey", L"It will be written there."));
114+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeStringKey", result));
115+
EXPECT_EQ(result, L"It will be written there.");
116+
}
117+
118+
TEST_F(ProfileTest, ReadValueString_Missing)
119+
{
120+
std::wstring result;
121+
EXPECT_TRUE(m_pProfile->ReadValue(L"Settings", L"SomeStringKey", result));
122+
EXPECT_EQ(result, L"");
123+
}
124+
125+
TEST_F(ProfileTest, GetSettings_Defualt)
126+
{
127+
Setting setting {};
128+
EXPECT_TRUE(m_pProfile->GetSettings(setting));
129+
130+
EXPECT_EQ(setting.lineEnding, LineEnding::AUTO);
131+
132+
EXPECT_EQ(setting.lineFormat, LineFormat::DEFAULT);
133+
134+
EXPECT_EQ(setting.indent.len, 4u);
135+
EXPECT_EQ(setting.indent.style, IndentStyle::AUTO);
136+
137+
EXPECT_EQ(setting.bFollowCurrentTab, false);
138+
EXPECT_EQ(setting.bAutoFormat, false);
139+
EXPECT_EQ(setting.bUseJsonHighlight, true);
140+
141+
EXPECT_EQ(setting.parseOptions.bIgnoreComment, true);
142+
EXPECT_EQ(setting.parseOptions.bIgnoreTrailingComma, true);
143+
EXPECT_EQ(setting.parseOptions.bReplaceUndefined, false);
144+
}
145+
146+
TEST_F(ProfileTest, SetSettings_Positive)
147+
{
148+
Setting expected, actual;
149+
expected.lineEnding = LineEnding::WINDOWS;
150+
expected.lineFormat, LineFormat::SINGLELINE;
151+
expected.indent.len = 2u;
152+
expected.indent.style = IndentStyle::TAB;
153+
154+
expected.bAutoFormat = true;
155+
expected.bFollowCurrentTab = true;
156+
expected.bAutoFormat = true;
157+
expected.bUseJsonHighlight = false;
158+
159+
expected.parseOptions.bIgnoreComment = false;
160+
expected.parseOptions.bIgnoreTrailingComma = false;
161+
expected.parseOptions.bReplaceUndefined = true;
162+
163+
EXPECT_TRUE(m_pProfile->SetSettings(expected));
164+
EXPECT_TRUE(m_pProfile->GetSettings(actual));
165+
166+
EXPECT_EQ(actual.lineEnding, expected.lineEnding);
167+
168+
EXPECT_EQ(actual.lineFormat, expected.lineFormat);
169+
170+
EXPECT_EQ(actual.indent.len, expected.indent.len);
171+
EXPECT_EQ(actual.indent.style, expected.indent.style);
172+
173+
EXPECT_EQ(actual.bFollowCurrentTab, expected.bFollowCurrentTab);
174+
EXPECT_EQ(actual.bAutoFormat, expected.bAutoFormat);
175+
EXPECT_EQ(actual.bUseJsonHighlight, expected.bUseJsonHighlight);
176+
177+
EXPECT_EQ(actual.parseOptions.bIgnoreComment, expected.parseOptions.bIgnoreComment);
178+
EXPECT_EQ(actual.parseOptions.bIgnoreTrailingComma, expected.parseOptions.bIgnoreTrailingComma);
179+
EXPECT_EQ(actual.parseOptions.bReplaceUndefined, expected.parseOptions.bReplaceUndefined);
180+
}
181+
} // namespace ProfileSettingTests

tests/UnitTest/UnitTest.vcxproj

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,28 @@
6060
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
6161
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
6262
<LinkIncremental>true</LinkIncremental>
63+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
6364
</PropertyGroup>
6465
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
6566
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
67+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
6668
</PropertyGroup>
6769
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
6870
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
6971
<LinkIncremental>true</LinkIncremental>
72+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
7073
</PropertyGroup>
7174
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
7275
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
76+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
7377
</PropertyGroup>
7478
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
7579
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
80+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
7681
</PropertyGroup>
7782
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
7883
<ExternalIncludePath>$(SolutionDir)..\external\googletest\googletest;$(SolutionDir)..\external\googletest\googletest\include;$(SolutionDir)..\external\googletest\googlemock;$(SolutionDir)..\external\googletest\googlemock\include;$(ExternalIncludePath)</ExternalIncludePath>
84+
<IncludePath>$(SolutionDir)NppJsonViewer;$(IncludePath)</IncludePath>
7985
</PropertyGroup>
8086
<ItemDefinitionGroup />
8187
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -146,7 +152,9 @@
146152
<ItemGroup>
147153
<ClCompile Include="..\..\external\googletest\googlemock\src\gmock-all.cc" />
148154
<ClCompile Include="..\..\external\googletest\googletest\src\gtest-all.cc" />
155+
<ClCompile Include="..\..\src\NppJsonViewer\Profile.cpp" />
149156
<ClCompile Include="main.cpp" />
157+
<ClCompile Include="ProfileTest.cpp" />
150158
<ClCompile Include="StringHelperTest.cpp" />
151159
<ClCompile Include="UtilityTest.cpp" />
152160
</ItemGroup>
@@ -155,6 +163,9 @@
155163
<Project>{171cafc6-e679-4b81-bf5b-049ac0fab4f8}</Project>
156164
</ProjectReference>
157165
</ItemGroup>
166+
<ItemGroup>
167+
<ClInclude Include="..\..\src\NppJsonViewer\Profile.h" />
168+
</ItemGroup>
158169
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
159170
<ImportGroup Label="ExtensionTargets">
160171
</ImportGroup>

tests/UnitTest/UnitTest.vcxproj.filters

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,50 @@
22
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
33
<ItemGroup>
44
<Filter Include="Source Files">
5-
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
5+
<UniqueIdentifier>{85c7eb1f-2b68-43cb-8405-a71e55e79fd5}</UniqueIdentifier>
66
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
77
</Filter>
88
<Filter Include="Header Files">
9-
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
9+
<UniqueIdentifier>{80e1a248-3f71-4247-836e-d9c0755d3a45}</UniqueIdentifier>
1010
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
1111
</Filter>
1212
<Filter Include="Resource Files">
13-
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
13+
<UniqueIdentifier>{e63ed3dd-a0ad-4b70-b440-e132f2aec749}</UniqueIdentifier>
1414
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
1515
</Filter>
1616
<Filter Include="Source Files\googletest">
17-
<UniqueIdentifier>{6566c3ee-c762-478e-89d9-b411a9670e1a}</UniqueIdentifier>
17+
<UniqueIdentifier>{43a04267-7051-4c70-836c-2691b50401ed}</UniqueIdentifier>
18+
</Filter>
19+
<Filter Include="Source Files\NppJsonViewer">
20+
<UniqueIdentifier>{be698e04-b1a9-4f55-9035-986c6e58c21a}</UniqueIdentifier>
1821
</Filter>
1922
</ItemGroup>
2023
<ItemGroup>
21-
<ClCompile Include="main.cpp">
22-
<Filter>Source Files</Filter>
23-
</ClCompile>
2424
<ClCompile Include="..\..\external\googletest\googletest\src\gtest-all.cc">
2525
<Filter>Source Files\googletest</Filter>
2626
</ClCompile>
2727
<ClCompile Include="..\..\external\googletest\googlemock\src\gmock-all.cc">
2828
<Filter>Source Files\googletest</Filter>
2929
</ClCompile>
30-
<ClCompile Include="StringHelperTest.cpp">
31-
<Filter>Source Files</Filter>
30+
<ClCompile Include="..\..\src\NppJsonViewer\Profile.cpp">
31+
<Filter>Source Files\NppJsonViewer</Filter>
3232
</ClCompile>
3333
<ClCompile Include="UtilityTest.cpp">
3434
<Filter>Source Files</Filter>
3535
</ClCompile>
36+
<ClCompile Include="main.cpp">
37+
<Filter>Source Files</Filter>
38+
</ClCompile>
39+
<ClCompile Include="ProfileTest.cpp">
40+
<Filter>Source Files</Filter>
41+
</ClCompile>
42+
<ClCompile Include="StringHelperTest.cpp">
43+
<Filter>Source Files</Filter>
44+
</ClCompile>
45+
</ItemGroup>
46+
<ItemGroup>
47+
<ClInclude Include="..\..\src\NppJsonViewer\Profile.h">
48+
<Filter>Source Files\NppJsonViewer</Filter>
49+
</ClInclude>
3650
</ItemGroup>
3751
</Project>

0 commit comments

Comments
 (0)