diff options
| author | Pierre Bourdon <delroth@gmail.com> | 2014-09-02 07:40:49 +0200 |
|---|---|---|
| committer | Pierre Bourdon <delroth@gmail.com> | 2014-09-02 07:40:49 +0200 |
| commit | 5941653d474ba27ed40250028e03425cb5c2be5f (patch) | |
| tree | 51538037d9cd4f0ac6d7d096cd940c97756b64a3 /Source/UnitTests | |
| parent | 9b10d36a85bb27681f5d48e3ced9c142a1ac6b47 (diff) | |
| parent | 839cace5ff15b56afa3a72c86b379c6abc4c0bf6 (diff) | |
Merge pull request #920 from shuffle2/msvc-gtest
Provide a way to build and run unittests on Windows
Diffstat (limited to 'Source/UnitTests')
| -rw-r--r-- | Source/UnitTests/Common/BitFieldTest.cpp | 3 | ||||
| -rw-r--r-- | Source/UnitTests/Common/CommonFuncsTest.cpp | 3 | ||||
| -rw-r--r-- | Source/UnitTests/Common/FlagTest.cpp | 4 | ||||
| -rw-r--r-- | Source/UnitTests/TestUtils/StubHost.cpp | 1 | ||||
| -rw-r--r-- | Source/UnitTests/UnitTests.vcxproj | 112 | ||||
| -rw-r--r-- | Source/UnitTests/UnitTests.vcxproj.user | 9 |
6 files changed, 129 insertions, 3 deletions
diff --git a/Source/UnitTests/Common/BitFieldTest.cpp b/Source/UnitTests/Common/BitFieldTest.cpp index aa98352272..ff317649e6 100644 --- a/Source/UnitTests/Common/BitFieldTest.cpp +++ b/Source/UnitTests/Common/BitFieldTest.cpp @@ -139,7 +139,8 @@ TEST(BitField, Alignment) GC_ALIGNED16(OddlyAlignedTestStruct test_struct); TestUnion& object = test_struct.obj; - static_assert(alignof(test_struct.obj.signed_1bit) == 1, "Incorrect variable alignment"); + static_assert(alignof(decltype(test_struct.obj.signed_1bit)) == 1, + "Incorrect variable alignment"); for (u64 val : table) { diff --git a/Source/UnitTests/Common/CommonFuncsTest.cpp b/Source/UnitTests/Common/CommonFuncsTest.cpp index 5fced4c5aa..e9b39b320e 100644 --- a/Source/UnitTests/Common/CommonFuncsTest.cpp +++ b/Source/UnitTests/Common/CommonFuncsTest.cpp @@ -13,6 +13,9 @@ TEST(CommonFuncs, ArraySizeMacro) EXPECT_EQ(4u, ArraySize(test)); EXPECT_EQ(42u, ArraySize(test2)); + + (void)test; + (void)test2; } TEST(CommonFuncs, RoundUpPow2Macro) diff --git a/Source/UnitTests/Common/FlagTest.cpp b/Source/UnitTests/Common/FlagTest.cpp index a3a0c3d929..2c087fd739 100644 --- a/Source/UnitTests/Common/FlagTest.cpp +++ b/Source/UnitTests/Common/FlagTest.cpp @@ -37,7 +37,7 @@ TEST(Flag, MultiThreaded) int count = 0; const int ITERATIONS_COUNT = 100000; - auto setter = [&f]() { + auto setter = [&]() { for (int i = 0; i < ITERATIONS_COUNT; ++i) { while (f.IsSet()); @@ -45,7 +45,7 @@ TEST(Flag, MultiThreaded) } }; - auto clearer = [&f, &count]() { + auto clearer = [&]() { for (int i = 0; i < ITERATIONS_COUNT; ++i) { while (!f.IsSet()); diff --git a/Source/UnitTests/TestUtils/StubHost.cpp b/Source/UnitTests/TestUtils/StubHost.cpp index e0363843aa..e55db7bb75 100644 --- a/Source/UnitTests/TestUtils/StubHost.cpp +++ b/Source/UnitTests/TestUtils/StubHost.cpp @@ -19,6 +19,7 @@ void Host_UpdateDisasmDialog() {} void Host_UpdateMainFrame() {} void Host_GetRenderWindowSize(int&, int&, int&, int&) {} void Host_RequestRenderWindowSize(int, int) {} +void Host_RequestFullscreen(bool) {} void Host_SetStartupDebuggingParameters() {} bool Host_UIHasFocus() { return false; } bool Host_RendererHasFocus() { return false; } diff --git a/Source/UnitTests/UnitTests.vcxproj b/Source/UnitTests/UnitTests.vcxproj new file mode 100644 index 0000000000..a67c8e5ac0 --- /dev/null +++ b/Source/UnitTests/UnitTests.vcxproj @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <ItemGroup Label="ProjectConfigurations"> + <ProjectConfiguration Include="Debug|x64"> + <Configuration>Debug</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + <ProjectConfiguration Include="Release|x64"> + <Configuration>Release</Configuration> + <Platform>x64</Platform> + </ProjectConfiguration> + </ItemGroup> + <PropertyGroup Label="Globals"> + <ProjectGuid>{474661E7-C73A-43A6-AFEE-EE1EC433D49E}</ProjectGuid> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> + <PropertyGroup Label="Configuration"> + <ConfigurationType>Application</ConfigurationType> + <PlatformToolset>v120</PlatformToolset> + <CharacterSet>Unicode</CharacterSet> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration"> + <UseDebugLibraries>true</UseDebugLibraries> + </PropertyGroup> + <PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration"> + <UseDebugLibraries>false</UseDebugLibraries> + </PropertyGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> + <ImportGroup Label="ExtensionSettings"> + </ImportGroup> + <ImportGroup Label="PropertySheets"> + <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> + <Import Project="..\VSProps\Base.props" /> + <Import Project="..\VSProps\PCHUse.props" /> + </ImportGroup> + <PropertyGroup Label="UserMacros" /> + <ItemDefinitionGroup> + <!--This project also compiles gtest--> + <ClCompile> + <AdditionalIncludeDirectories>$(ExternalsDir)gtest\include;$(ExternalsDir)gtest;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> + </ClCompile> + <Link> + <!--This junk is needed for JIT to function correctly--> + <BaseAddress>0x00400000</BaseAddress> + <RandomizedBaseAddress>false</RandomizedBaseAddress> + <FixedBaseAddress>true</FixedBaseAddress> + <!-- + The following libs are needed since we pull in pretty much the entire + dolphin codebase. + --> + <AdditionalLibraryDirectories>$(ExternalsDir)OpenAL\$(PlatformName);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> + <AdditionalDependencies>iphlpapi.lib;winmm.lib;setupapi.lib;vfw32.lib;opengl32.lib;glu32.lib;rpcrt4.lib;comctl32.lib;%(AdditionalDependencies)</AdditionalDependencies> + <SubSystem>Console</SubSystem> + </Link> + </ItemDefinitionGroup> + <ItemGroup> + <!--gtest is rather small, so just include it into the build here--> + <ClCompile Include="$(ExternalsDir)gtest\src\gtest-all.cc" /> + <ClCompile Include="$(ExternalsDir)gtest\src\gtest_main.cc" /> + <!--Lump all of the tests (and supporting code) into one binary--> + <ClCompile Include="*\*.cpp" /> + </ItemGroup> + <ItemGroup> + <Text Include="CMakeLists.txt" /> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="$(CoreDir)Core\Core.vcxproj"> + <Project>{E54CF649-140E-4255-81A5-30A673C1FB36}</Project> + </ProjectReference> + <ProjectReference Include="$(CoreDir)VideoBackends\D3D\D3D.vcxproj"> + <Project>{96020103-4ba5-4fd2-b4aa-5b6d24492d4e}</Project> + </ProjectReference> + <ProjectReference Include="$(CoreDir)VideoBackends\OGL\OGL.vcxproj"> + <Project>{ec1a314c-5588-4506-9c1e-2e58e5817f75}</Project> + </ProjectReference> + <ProjectReference Include="$(CoreDir)VideoBackends\Software\Software.vcxproj"> + <Project>{a4c423aa-f57c-46c7-a172-d1a777017d29}</Project> + </ProjectReference> + </ItemGroup> + <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> + <ImportGroup Label="ExtensionTargets"> + </ImportGroup> + <!-- + This project is always built, but the outputs are conditionally executed. + The tests will either be run by VS' test runner (requires a plugin to adapt + to gtest - developers will mostly use this method), or via msbuild (the + buildbot does it this way). The gtest adapter has the restriction that it + can only scan for tests on binaries it knows about (e.g. from projects' OutDir), + and it doesn't allow changing the working directory for running the tests. + Essentially this requires all runtime dependencies to be findable from the + context of the tests running with working directory set to OutDir. So... + that was the long-winded explanation of why we copy external things to the + OutDir :) + --> + <ItemGroup> + <ExternalDlls Include="$(ExternalsDir)OpenAL\$(PlatformName)\*.dll" /> + </ItemGroup> + <!--Either method of running requires the runtime deps to be copied to pwd--> + <Target Name="CopyDeps" + AfterTargets="AfterBuild" + Inputs="@(ExternalDlls)" + Outputs="@(ExternalDlls -> '$(OutDir)%(RecursiveDir)%(Filename)%(Extension)')"> + <Copy SourceFiles="@(ExternalDlls)" DestinationFolder="$(OutDir)" + Condition="!Exists('$(OutDir)%(RecursiveDir)%(Filename)%(ExternalDlls.Extension)') OR $([System.DateTime]::Parse('%(ModifiedTime)').Ticks) > $([System.IO.File]::GetLastWriteTime('$(OutDir)%(RecursiveDir)%(Filename)%(ExternalDlls.Extension)').Ticks)" /> + </Target> + <Target Name="ExecUnitTests" + AfterTargets="AfterBuild;CopyDeps" + Condition="'$(RunUnitTests)'=='true'"> + <!--This is only executed via msbuild, VS test runner automatically does this--> + <Exec Command="$(TargetPath)"/> + </Target> +</Project>
\ No newline at end of file diff --git a/Source/UnitTests/UnitTests.vcxproj.user b/Source/UnitTests/UnitTests.vcxproj.user new file mode 100644 index 0000000000..e472aa9c6d --- /dev/null +++ b/Source/UnitTests/UnitTests.vcxproj.user @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <!--For some stupid reason this has to be in the .user file...--> + <!--This is only used to allow UnitTests to find OpenAL DLL...kinda hacky--> + <LocalDebuggerWorkingDirectory>$(BinaryOutputDir)</LocalDebuggerWorkingDirectory> + <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> + </PropertyGroup> +</Project>
\ No newline at end of file |
