Skip to content

Commit 832da85

Browse files
Opt,YY.base分离到共享项目CL添加C++14构建测试
1 parent b76c6c8 commit 832da85

File tree

11 files changed

+504
-417
lines changed

11 files changed

+504
-417
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ charset = utf-8-bom
1111
indent_style = space
1212
indent_size = 4
1313

14-
[*.{vcxproj,xml,props,targets}]
14+
[*.{vcxproj,vcxitems,xml,props,targets}]
1515
indent_style = space
1616
indent_size = 2
1717
insert_final_newline = false

.github/workflows/Build&Test.yml

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,27 @@ jobs:
103103
$Env:Path="$Env:GITHUB_WORKSPACE\Bin;${{env.MSBuildBinPath}};${{env.LatestVisualStudioRoot}}\Common7\IDE\CommonExtensions\Microsoft\TestWindow;" + $Env:Path
104104
105105
# 编译单元测试项目
106-
&msbuild UnitTest\UnitTest.vcxproj "-p:Configuration=Release;Platform=Win32;SolutionDir=$Env:GITHUB_WORKSPACE\\"
106+
## C++14
107+
&msbuild UnitTest\UnitTest.vcxproj "-p:LanguageStandard=stdcpp14;Configuration=Release;Platform=Win32;SolutionDir=$Env:GITHUB_WORKSPACE\\" "-t:Rebuild"
107108
if($lastexitcode -ne 0)
108109
{
109110
throw "UnitTest\UnitTest.vcxproj 编译失败!退出代码:$lastexitcode"
110111
}
111112
112-
&msbuild UnitTest\UnitTest.vcxproj "-p:Configuration=Release;Platform=x64;SolutionDir=$Env:GITHUB_WORKSPACE\\"
113+
&msbuild UnitTest\UnitTest.vcxproj "-p:LanguageStandard=stdcpp14;Configuration=Release;Platform=x64;SolutionDir=$Env:GITHUB_WORKSPACE\\" "-t:Rebuild"
114+
if($lastexitcode -ne 0)
115+
{
116+
throw "UnitTest\UnitTest.vcxproj 编译失败!退出代码:$lastexitcode"
117+
}
118+
119+
## C++20
120+
&msbuild UnitTest\UnitTest.vcxproj "-p:LanguageStandard=stdcpp20;Configuration=Release;Platform=Win32;SolutionDir=$Env:GITHUB_WORKSPACE\\" "-t:Rebuild"
121+
if($lastexitcode -ne 0)
122+
{
123+
throw "UnitTest\UnitTest.vcxproj 编译失败!退出代码:$lastexitcode"
124+
}
125+
126+
&msbuild UnitTest\UnitTest.vcxproj "-p:LanguageStandard=stdcpp20:Configuration=Release;Platform=x64;SolutionDir=$Env:GITHUB_WORKSPACE\\" "-t:Rebuild"
113127
if($lastexitcode -ne 0)
114128
{
115129
throw "UnitTest\UnitTest.vcxproj 编译失败!退出代码:$lastexitcode"

UnitTest/AsyncFileUnitTest.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ namespace UnitTest
1515
TEST_CLASS(AsyncFile)
1616
{
1717
public:
18+
#if defined(_HAS_CXX20) && _HAS_CXX20
1819
static Coroutine<void> ReadFileCoroutine()
1920
{
2021
wchar_t _szFilePath[512] = {};
@@ -31,7 +32,9 @@ namespace UnitTest
3132

3233
co_return;
3334
}
35+
#endif
3436

37+
#if defined(_HAS_CXX20) && _HAS_CXX20
3538
TEST_METHOD(异步读取文件)
3639
{
3740
auto _pTaskRunner = SequencedTaskRunner::Create();
@@ -76,5 +79,6 @@ namespace UnitTest
7679
Assert::AreEqual(_szBufferSrc, _szBufferAsyncReadFile);
7780
}
7881
}
82+
#endif
7983
};
8084
}

UnitTest/SpanUnitTest.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
#include "CppUnitTest.h"
1+
#include "ToStringHelper.h"
2+
#include "CppUnitTest.h"
23

34
#include <atlstr.h>
45
#include <Windows.h>
@@ -11,22 +12,6 @@
1112
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
1213
using namespace YY;
1314

14-
namespace Microsoft::VisualStudio::CppUnitTestFramework
15-
{
16-
template<>
17-
inline std::wstring ToString<YY::Span<const YY::uchar_t>>(const YY::Span<const YY::uchar_t>& _oValue)
18-
{
19-
std::wstring _szResult;
20-
_szResult += L'{';
21-
22-
_szResult.append(_oValue.GetData(), _oValue.GetLength());
23-
24-
_szResult += L'}';
25-
26-
return _szResult;
27-
}
28-
}
29-
3015
namespace UnitTest
3116
{
3217
TEST_CLASS(Span)

UnitTest/StringUnitTest.cpp

Lines changed: 3 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include "CppUnitTest.h"
2+
#include "ToStringHelper.h"
23

34
#include <atlstr.h>
45
#include <Windows.h>
@@ -11,35 +12,6 @@
1112
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
1213
using namespace YY;
1314

14-
namespace Microsoft::VisualStudio::CppUnitTestFramework
15-
{
16-
template<>
17-
inline std::wstring ToString<YY::uString>(const YY::uString& _oValue)
18-
{
19-
std::wstring _szResult;
20-
_szResult += L'{';
21-
22-
_szResult.append(_oValue.GetData(), _oValue.GetLength());
23-
24-
_szResult += L'}';
25-
26-
return _szResult;
27-
}
28-
29-
template<>
30-
inline std::wstring ToString<YY::uStringView>(const YY::uStringView& _oValue)
31-
{
32-
std::wstring _szResult;
33-
_szResult += L'{';
34-
35-
_szResult.append(_oValue.GetData(), _oValue.GetLength());
36-
37-
_szResult += L'}';
38-
39-
return _szResult;
40-
}
41-
}
42-
4315
namespace UnitTest
4416
{
4517
TEST_CLASS(StringUnitTest)
@@ -57,7 +29,7 @@ namespace UnitTest
5729

5830

5931

60-
NString Tmp2(_TEST_TEXT);
32+
NString Tmp2(aString(_TEST_TEXT));
6133
Assert::AreEqual(Tmp2.GetSize(), _countof(_TEST_TEXT) - 1);
6234
Assert::IsTrue(Tmp2.GetEncoding() == Encoding::ANSI);
6335
Assert::IsTrue(memcmp(*(void**)&Tmp2, _TEST_TEXT, sizeof(_TEST_TEXT)) == 0);
@@ -72,7 +44,7 @@ namespace UnitTest
7244
Assert::IsTrue(memcmp(Tmp.GetConstString(), _TEST_TEXT, sizeof(_TEST_TEXT)) == 0);
7345

7446

75-
NString Tmp2(_TEST_TEXT);
47+
NString Tmp2(u8String(_TEST_TEXT));
7648
Assert::AreEqual(Tmp2.GetSize(), _countof(_TEST_TEXT) - 1);
7749
Assert::IsTrue(Tmp2.GetEncoding() == Encoding::UTF8);
7850
Assert::IsTrue(memcmp(*(void**)&Tmp2, _TEST_TEXT, sizeof(_TEST_TEXT)) == 0);

UnitTest/ToStringHelper.h

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#pragma once
2+
#include "CppUnitTest.h"
3+
4+
#include <YY/Base/Strings/String.h>
5+
#include <YY/Base/Containers/Span.h>
6+
#include <string>
7+
8+
namespace Microsoft
9+
{
10+
namespace VisualStudio
11+
{
12+
namespace CppUnitTestFramework
13+
{
14+
template<>
15+
inline std::wstring ToString<YY::uString>(const YY::uString& _oValue)
16+
{
17+
return std::wstring(_oValue.GetData(), _oValue.GetLength());
18+
}
19+
20+
template<>
21+
inline std::wstring ToString<YY::uStringView>(const YY::uStringView& _oValue)
22+
{
23+
return std::wstring(_oValue.GetData(), _oValue.GetLength());
24+
}
25+
26+
template<>
27+
inline std::wstring ToString<YY::Span<const YY::uchar_t>>(const YY::Span<const YY::uchar_t>& _oValue)
28+
{
29+
return std::wstring(_oValue.GetData(), _oValue.GetLength());
30+
}
31+
}
32+
}
33+
}

UnitTest/UnitTest.vcxproj

Lines changed: 7 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
<RootNamespace>UnitTest</RootNamespace>
2626
<WindowsTargetPlatformVersion>$([Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0'))</WindowsTargetPlatformVersion>
2727
<ProjectSubType>NativeUnitTestProject</ProjectSubType>
28+
<LanguageStandard Condition="'$(LanguageStandard)' == ''">stdcpp20</LanguageStandard>
2829
</PropertyGroup>
2930
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
3031
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -61,6 +62,7 @@
6162
<ImportGroup Label="ExtensionSettings">
6263
</ImportGroup>
6364
<ImportGroup Label="Shared">
65+
<Import Project="..\src\YY.Base.vcxitems" Label="Shared" />
6466
</ImportGroup>
6567
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
6668
</ImportGroup>
@@ -96,7 +98,7 @@
9698
<UseFullPaths>true</UseFullPaths>
9799
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
98100
<ConformanceMode>true</ConformanceMode>
99-
<LanguageStandard>stdcpp20</LanguageStandard>
101+
<LanguageStandard>$(LanguageStandard)</LanguageStandard>
100102
<AdditionalOptions>/execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
101103
</ClCompile>
102104
<Link>
@@ -113,7 +115,7 @@
113115
<UseFullPaths>true</UseFullPaths>
114116
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
115117
<ConformanceMode>true</ConformanceMode>
116-
<LanguageStandard>stdcpp20</LanguageStandard>
118+
<LanguageStandard>$(LanguageStandard)</LanguageStandard>
117119
<AdditionalOptions>/execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
118120
</ClCompile>
119121
<Link>
@@ -132,7 +134,7 @@
132134
<UseFullPaths>true</UseFullPaths>
133135
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
134136
<ConformanceMode>true</ConformanceMode>
135-
<LanguageStandard>stdcpp20</LanguageStandard>
137+
<LanguageStandard>$(LanguageStandard)</LanguageStandard>
136138
<AdditionalOptions>/execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
137139
<WholeProgramOptimization>false</WholeProgramOptimization>
138140
</ClCompile>
@@ -155,7 +157,7 @@
155157
<UseFullPaths>true</UseFullPaths>
156158
<PrecompiledHeaderFile>pch.h</PrecompiledHeaderFile>
157159
<ConformanceMode>true</ConformanceMode>
158-
<LanguageStandard>stdcpp20</LanguageStandard>
160+
<LanguageStandard>$(LanguageStandard)</LanguageStandard>
159161
<AdditionalOptions>/execution-charset:utf-8 %(AdditionalOptions)</AdditionalOptions>
160162
<WholeProgramOptimization>false</WholeProgramOptimization>
161163
</ClCompile>
@@ -168,22 +170,9 @@
168170
</Link>
169171
</ItemDefinitionGroup>
170172
<ItemGroup>
173+
<ClInclude Include="ToStringHelper.h" />
171174
</ItemGroup>
172175
<ItemGroup>
173-
<ClCompile Include="..\src\YY\Base\Strings\StringTransform.cpp" />
174-
<ClCompile Include="..\src\YY\Base\Sync\CriticalSection.cpp" />
175-
<ClCompile Include="..\src\YY\Base\Sync\SRWLock.cpp" />
176-
<ClCompile Include="..\src\YY\Base\Sync\Sync.cpp" />
177-
<ClCompile Include="..\src\YY\Base\Threading\SequencedTaskRunnerImpl.cpp" />
178-
<ClCompile Include="..\src\YY\Base\Threading\TaskRunner.cpp" />
179-
<ClCompile Include="..\src\YY\Base\Threading\ThreadPool.Linux.cc" />
180-
<ClCompile Include="..\src\YY\Base\Threading\ThreadPool.Windows.cc" />
181-
<ClCompile Include="..\src\YY\Base\Threading\TaskRunnerDispatchImpl.cpp" />
182-
<ClCompile Include="..\src\YY\Base\Threading\TaskRunnerImpl.cpp" />
183-
<ClCompile Include="..\src\YY\Base\Threading\ThreadTaskRunnerImpl.cpp" />
184-
<ClCompile Include="..\src\YY\Base\Time\DataTime.cpp" />
185-
<ClCompile Include="..\src\YY\Base\Utils\FileInfo.cpp" />
186-
<ClCompile Include="..\src\YY\Base\Utils\SystemInfo.cpp" />
187176
<ClCompile Include="AsyncFileUnitTest.cpp" />
188177
<ClCompile Include="BindUnitTest.cpp" />
189178
<ClCompile Include="BitMapUnitTest.cpp" />
@@ -193,76 +182,7 @@
193182
<ClCompile Include="StringUnitTest.cpp" />
194183
<ClCompile Include="TaskRunnerUnitTest.cpp" />
195184
</ItemGroup>
196-
<ItemGroup>
197-
<ClInclude Include="..\include\YY\Base\Containers\Array.h" />
198-
<ClInclude Include="..\include\YY\Base\Containers\Span.h" />
199-
<ClInclude Include="..\include\YY\Base\Containers\BitMap.h" />
200-
<ClInclude Include="..\include\YY\Base\Containers\ConstructorPolicy.h" />
201-
<ClInclude Include="..\include\YY\Base\Containers\DoublyLinkedList.h" />
202-
<ClInclude Include="..\include\YY\Base\Containers\HashSet.h" />
203-
<ClInclude Include="..\include\YY\Base\Containers\Optional.h" />
204-
<ClInclude Include="..\include\YY\Base\Containers\SingleLinkedList.h" />
205-
<ClInclude Include="..\include\YY\Base\Encoding.h" />
206-
<ClInclude Include="..\include\YY\Base\ErrorCode.h" />
207-
<ClInclude Include="..\include\YY\Base\Exception.h" />
208-
<ClInclude Include="..\include\YY\Base\Functional\Bind.h" />
209-
<ClInclude Include="..\include\YY\Base\IO\File.h" />
210-
<ClInclude Include="..\include\YY\Base\Memory\Alloc.h" />
211-
<ClInclude Include="..\include\YY\Base\Memory\ObserverPtr.h" />
212-
<ClInclude Include="..\include\YY\Base\Memory\RefPtr.h" />
213-
<ClInclude Include="..\include\YY\Base\Memory\UniquePtr.h" />
214-
<ClInclude Include="..\include\YY\Base\Memory\WeakPtr.h" />
215-
<ClInclude Include="..\include\YY\Base\SafeCast.h" />
216-
<ClInclude Include="..\include\YY\Base\SAL.h" />
217-
<ClInclude Include="..\include\YY\Base\Shared\Windows\km.h" />
218-
<ClInclude Include="..\include\YY\Base\Strings\NString.h" />
219-
<ClInclude Include="..\include\YY\Base\Strings\String.h" />
220-
<ClInclude Include="..\include\YY\Base\Strings\StringTransform.h" />
221-
<ClInclude Include="..\include\YY\Base\Strings\StringView.h" />
222-
<ClInclude Include="..\include\YY\Base\Sync\AutoLock.h" />
223-
<ClInclude Include="..\include\YY\Base\Sync\CriticalSection.h" />
224-
<ClInclude Include="..\include\YY\Base\Sync\Interlocked.h" />
225-
<ClInclude Include="..\include\YY\Base\Sync\InterlockedQueue.h" />
226-
<ClInclude Include="..\include\YY\Base\Sync\InterlockedSingleLinkedList.h" />
227-
<ClInclude Include="..\include\YY\Base\Sync\SRWLock.h" />
228-
<ClInclude Include="..\include\YY\Base\Sync\Sync.h" />
229-
<ClInclude Include="..\include\YY\Base\tchar.h" />
230-
<ClInclude Include="..\include\YY\Base\Threading\Coroutine.h" />
231-
<ClInclude Include="..\include\YY\Base\Threading\ProcessThreads.h" />
232-
<ClInclude Include="..\include\YY\Base\Threading\TaskRunner.h" />
233-
<ClInclude Include="..\include\YY\Base\Time\Common.h" />
234-
<ClInclude Include="..\include\YY\Base\Time\TickCount.h" />
235-
<ClInclude Include="..\include\YY\Base\Time\TimeSpan.h" />
236-
<ClInclude Include="..\include\YY\Base\Time\DataTime.h" />
237-
<ClInclude Include="..\include\YY\Base\Utils\ComObjectImpl.h" />
238-
<ClInclude Include="..\include\YY\Base\Utils\FileInfo.h" />
239-
<ClInclude Include="..\include\YY\Base\Utils\MathUtils.h" />
240-
<ClInclude Include="..\include\YY\Base\Utils\SystemInfo.h" />
241-
<ClInclude Include="..\include\YY\Base\Utils\Version.h" />
242-
<ClInclude Include="..\include\YY\Base\YY.h" />
243-
<ClInclude Include="..\src\YY\Base\Threading\ParallelTaskRunnerImpl.hpp" />
244-
<ClInclude Include="..\src\YY\Base\Threading\SequencedTaskRunnerImpl.h" />
245-
<ClInclude Include="..\src\YY\Base\Threading\TaskRunnerDispatchImpl.h" />
246-
<ClInclude Include="..\src\YY\Base\Threading\TaskRunnerImpl.h" />
247-
<ClInclude Include="..\src\YY\Base\Threading\ThreadPool.h" />
248-
<ClInclude Include="..\src\YY\Base\Threading\ThreadPool.Linux.h" />
249-
<ClInclude Include="..\src\YY\Base\Threading\ThreadPool.Windows.h" />
250-
<ClInclude Include="..\src\YY\Base\Threading\ThreadPoolTimerManger.h" />
251-
<ClInclude Include="..\src\YY\Base\Threading\ThreadPoolWaitManger.h" />
252-
<ClInclude Include="..\src\YY\Base\Threading\ThreadTaskRunnerImpl.h" />
253-
<ClInclude Include="..\src\YY\Base\Threading\ThreadTaskRunnerProxyImpl.h" />
254-
</ItemGroup>
255-
<ItemGroup>
256-
<Natvis Include="..\src\YY.Base.natvis" />
257-
</ItemGroup>
258185
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
259186
<ImportGroup Label="ExtensionTargets">
260187
</ImportGroup>
261-
<Target Name="{112FF666-47B5-4371-B525-84D9C5F097B2}" AfterTargets="BeforeClCompile">
262-
<ItemGroup>
263-
<ClCompile Update="@(ClCompile)" Condition="'%(ClCompile.Extension)' == '.cc' and $([System.String]::Copy('%(ClCompile.Identity)').EndsWith('.$(TargetPlatformIdentifier).cc')) == false">
264-
<ExcludedFromBuild>true</ExcludedFromBuild>
265-
</ClCompile>
266-
</ItemGroup>
267-
</Target>
268188
</Project>

0 commit comments

Comments
 (0)