--- /dev/null
+#include <gtest/gtest.h>\r
+\r
+#include <core/frame/gpu_frame.h>\r
+#include <core/renderer/layer.h>\r
+#include <core/producer/frame_producer.h>\r
+#include <common/exception/exceptions.h>\r
+\r
+using namespace caspar;\r
+using namespace caspar::core;
\ No newline at end of file
--- /dev/null
+#include <gtest/gtest.h>\r
+\r
+#include <core/frame/gpu_frame.h>\r
+#include <core/renderer/layer.h>\r
+#include <core/producer/frame_producer.h>\r
+#include <common/exception/exceptions.h>\r
+\r
+using namespace caspar;\r
+using namespace caspar::core;\r
+\r
+struct mock_frame_producer : public frame_producer\r
+{\r
+ gpu_frame_ptr get_frame()\r
+ { return std::make_shared<gpu_frame>(0, 0); }\r
+ std::shared_ptr<frame_producer> get_following_producer() const \r
+ { return nullptr; }\r
+ void set_leading_producer(const std::shared_ptr<frame_producer>&) \r
+ {}\r
+ const frame_format_desc& get_frame_format_desc() const\r
+ {return frame_format_desc();}\r
+ void initialize(const frame_factory_ptr& factory)\r
+ {}\r
+};\r
+\r
+TEST(layer_test, load_nullptr) \r
+{\r
+ core::renderer::layer layer;\r
+\r
+ ASSERT_THROW(layer.load(nullptr), null_argument);\r
+}\r
+\r
+TEST(layer_test, load)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto background = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(background);\r
+\r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == nullptr);\r
+ ASSERT_TRUE(layer.background() == background);\r
+ ASSERT_TRUE(frame == nullptr);\r
+}\r
+\r
+TEST(layer_test, load_auto_play)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto active = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(active, renderer::load_option::auto_play);\r
+ \r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == active);\r
+ ASSERT_TRUE(layer.background() == nullptr);\r
+ ASSERT_TRUE(frame != nullptr);\r
+}\r
+\r
+TEST(layer_test, load_active)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto active = std::make_shared<mock_frame_producer>();\r
+ auto background = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(active, renderer::load_option::auto_play);\r
+ layer.load(background);\r
+ \r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == active);\r
+ ASSERT_TRUE(layer.background() == background);\r
+ ASSERT_TRUE(frame != nullptr);\r
+}\r
+\r
+TEST(layer_test, load_preview)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto background = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(background, renderer::load_option::preview);\r
+\r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == nullptr);\r
+ ASSERT_TRUE(layer.background() == background);\r
+ ASSERT_TRUE(frame != nullptr);\r
+ ASSERT_TRUE(frame->audio_data().empty());\r
+}\r
+\r
+TEST(layer_test, load_preview_active)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto active = std::make_shared<mock_frame_producer>();\r
+ auto background = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(active, renderer::load_option::auto_play);\r
+ layer.load(background, renderer::load_option::preview);\r
+ \r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == nullptr);\r
+ ASSERT_TRUE(layer.background() == background);\r
+ ASSERT_TRUE(frame != nullptr);\r
+}\r
+\r
+TEST(layer_test, load_play)\r
+{ \r
+ core::renderer::layer layer;\r
+ auto active = std::make_shared<mock_frame_producer>();\r
+\r
+ layer.load(active);\r
+ layer.play();\r
+\r
+ auto frame = layer.get_frame();\r
+\r
+ ASSERT_TRUE(layer.active() == active);\r
+ ASSERT_TRUE(layer.background() == nullptr);\r
+ ASSERT_TRUE(frame != nullptr);\r
+}\r
--- /dev/null
+#include <gtest/gtest.h>\r
+\r
+#include <core/frame/gpu_frame.h>\r
+#include <core/renderer/layer.h>\r
+#include <core/producer/frame_producer.h>\r
+#include <common/exception/exceptions.h>\r
+\r
+using namespace caspar;\r
+using namespace caspar::core;
\ No newline at end of file
--- /dev/null
+#include <gtest/gtest.h>\r
+#include <conio.h>\r
+#include <windows.h>\r
+\r
+int main(int argc, char **argv)\r
+{\r
+ MoveWindow(GetConsoleWindow(), 0, 0, 800, 1000, true);\r
+ ::testing::InitGoogleTest(&argc, argv);\r
+ RUN_ALL_TESTS();\r
+ getchar();\r
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup Label="ProjectConfigurations">\r
+ <ProjectConfiguration Include="Debug|Win32">\r
+ <Configuration>Debug</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ <ProjectConfiguration Include="Release|Win32">\r
+ <Configuration>Release</Configuration>\r
+ <Platform>Win32</Platform>\r
+ </ProjectConfiguration>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="core\renderer\display_device.cpp">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="core\renderer\layer_test.cpp">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="core\renderer\render_device.cpp">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
+ </ClCompile>\r
+ <ClCompile Include="main.cpp">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ProjectReference Include="..\common\common.vcxproj">\r
+ <Project>{02308602-7fe0-4253-b96e-22134919f56a}</Project>\r
+ </ProjectReference>\r
+ <ProjectReference Include="..\core\core.vcxproj">\r
+ <Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
+ </ProjectReference>\r
+ </ItemGroup>\r
+ <PropertyGroup Label="Globals">\r
+ <ProjectGuid>{8002D74D-4E89-4BD6-8CE8-0FE4DF14CA5D}</ProjectGuid>\r
+ <Keyword>Win32Proj</Keyword>\r
+ <RootNamespace>test</RootNamespace>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseDebugLibraries>true</UseDebugLibraries>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
+ <ConfigurationType>Application</ConfigurationType>\r
+ <UseDebugLibraries>false</UseDebugLibraries>\r
+ <WholeProgramOptimization>true</WholeProgramOptimization>\r
+ <CharacterSet>Unicode</CharacterSet>\r
+ </PropertyGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
+ <ImportGroup Label="ExtensionSettings">\r
+ </ImportGroup>\r
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />\r
+ </ImportGroup>\r
+ <PropertyGroup Label="UserMacros" />\r
+ <PropertyGroup>\r
+ <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</IntDir>\r
+ <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</IntDir>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\..\dependencies\gtest-1.5.0\include;..\..\dependencies\gtest-1.5.0\include;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\..\dependencies\gtest-1.5.0\include;..\..\dependencies\gtest-1.5.0\include;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\dependencies\boost_1_44_0\stage\lib\;..\..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\lib\;..\..\..\dependencies\SFML-1.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;..\..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+ <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\dependencies\boost_1_44_0\stage\lib\;..\..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\lib\;..\..\..\dependencies\SFML-1.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;..\..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)debug\</OutDir>\r
+ <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)release\</OutDir>\r
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionName)</TargetName>\r
+ <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionName)</TargetName>\r
+ </PropertyGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">\r
+ <ClCompile>\r
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>\r
+ <WarningLevel>Level3</WarningLevel>\r
+ <Optimization>Disabled</Optimization>\r
+ <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>../</AdditionalIncludeDirectories>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Console</SubSystem>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <AdditionalLibraryDirectories>..\..\dependencies\gtest-1.5.0\msvc\gtest-md\Debug;..\..\..\dependencies\gtest-1.5.0\msvc\gtest-md\Debug;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <AdditionalDependencies>gtestd.lib;gtest_main-mdd.lib;BlueHancUtils_d.lib;sfml-audio-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;OpenGL32.lib;FreeImage.lib;GLee.lib;Winmm.lib;Ws2_32.lib;BlueVelvet3_d.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;swscale-0.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <IgnoreSpecificDefaultLibraries>LIBC.lib</IgnoreSpecificDefaultLibraries>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
+ <ClCompile>\r
+ <WarningLevel>TurnOffAllWarnings</WarningLevel>\r
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>\r
+ <Optimization>MaxSpeed</Optimization>\r
+ <FunctionLevelLinking>true</FunctionLevelLinking>\r
+ <IntrinsicFunctions>true</IntrinsicFunctions>\r
+ <PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
+ <AdditionalIncludeDirectories>../</AdditionalIncludeDirectories>\r
+ <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+ </ClCompile>\r
+ <Link>\r
+ <SubSystem>Console</SubSystem>\r
+ <GenerateDebugInformation>true</GenerateDebugInformation>\r
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>\r
+ <OptimizeReferences>true</OptimizeReferences>\r
+ <AdditionalLibraryDirectories>..\..\dependencies\gtest-1.5.0\msvc\gtest-md\Release;..\..\..\dependencies\gtest-1.5.0\msvc\gtest-md\Release;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
+ <AdditionalDependencies>gtest.lib;gtest_main-md.lib;BlueHancUtils.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;Bluevelvet3.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;SWSCALE-0.lib;tbb.lib;Glee.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+ <IgnoreSpecificDefaultLibraries>LIBC.lib</IgnoreSpecificDefaultLibraries>\r
+ </Link>\r
+ </ItemDefinitionGroup>\r
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
+ <ImportGroup Label="ExtensionTargets">\r
+ </ImportGroup>\r
+</Project>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+ <ItemGroup>\r
+ <Filter Include="Source">\r
+ <UniqueIdentifier>{d4a5c843-0e41-4d98-9056-b7f0de0d49a7}</UniqueIdentifier>\r
+ </Filter>\r
+ <Filter Include="Source\core">\r
+ <UniqueIdentifier>{6b116fc0-5f04-4952-a54b-06b208d13b1d}</UniqueIdentifier>\r
+ </Filter>\r
+ <Filter Include="Source\core\renderer">\r
+ <UniqueIdentifier>{f7f271e6-1741-4d8e-8903-73f6b6363ef4}</UniqueIdentifier>\r
+ </Filter>\r
+ </ItemGroup>\r
+ <ItemGroup>\r
+ <ClCompile Include="core\renderer\layer_test.cpp">\r
+ <Filter>Source\core\renderer</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="main.cpp">\r
+ <Filter>Source</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="core\renderer\display_device.cpp">\r
+ <Filter>Source\core\renderer</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="core\renderer\render_device.cpp">\r
+ <Filter>Source\core\renderer</Filter>\r
+ </ClCompile>\r
+ </ItemGroup>\r
+</Project>
\ No newline at end of file