summaryrefslogtreecommitdiff
path: root/Source/UnitTests
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2014-09-02 07:40:49 +0200
committerPierre Bourdon <delroth@gmail.com>2014-09-02 07:40:49 +0200
commit5941653d474ba27ed40250028e03425cb5c2be5f (patch)
tree51538037d9cd4f0ac6d7d096cd940c97756b64a3 /Source/UnitTests
parent9b10d36a85bb27681f5d48e3ced9c142a1ac6b47 (diff)
parent839cace5ff15b56afa3a72c86b379c6abc4c0bf6 (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.cpp3
-rw-r--r--Source/UnitTests/Common/CommonFuncsTest.cpp3
-rw-r--r--Source/UnitTests/Common/FlagTest.cpp4
-rw-r--r--Source/UnitTests/TestUtils/StubHost.cpp1
-rw-r--r--Source/UnitTests/UnitTests.vcxproj112
-rw-r--r--Source/UnitTests/UnitTests.vcxproj.user9
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) &gt; $([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