!I integrate from //ce/main...
[CRYENGINE.git] / Code / CryEngine / CryAction / ColorGradientManager_Test.cpp
blob950b431a6f9218624956c72e76e176ffa90ae858
1 // Copyright 2001-2018 Crytek GmbH / Crytek Group. All rights reserved.
3 /*************************************************************************
5 -------------------------------------------------------------------------
6 History:
7 - 15:05:2009 Created by Federico Rebora
9 *************************************************************************/
11 #include "Stdafx.h"
13 #include "ColorGradientManager.h"
15 #include "EngineFacade/PluggableEngineFacade.h"
17 #include "Testing/TestUtilities.h"
19 #include "Testing/MockColorGradingController.h"
21 #include <CryRenderer/IColorGradingController.h>
23 CRY_TEST_FIXTURE(ColorGradientManager_TestFixture, CryUnit::ITestFixture, GameTesting::MainTestSuite)
25 private:
26 class CMock3DEngine : public EngineFacade::CDummyEngine3DEngine
28 public:
29 CMock3DEngine(EngineFacade::IEngineColorGradingController& colorGradingController)
30 : m_colorGradingController(colorGradingController)
35 virtual EngineFacade::IEngineColorGradingController& GetEngineColorGradingController()
37 return m_colorGradingController;
40 private:
41 EngineFacade::IEngineColorGradingController& m_colorGradingController;
44 public:
45 ColorGradientManager_TestFixture()
46 : m_mock3DEngine(m_mockColorGradingController)
47 , m_colorGradientManager(m_engine)
51 void SetUp()
53 m_engine.Use(m_mock3DEngine);
56 protected:
57 GameTesting::CMockEngineColorGradingController m_mockColorGradingController;
58 CMock3DEngine m_mock3DEngine;
59 EngineFacade::CDummyPluggableEngineFacade m_engine;
60 Graphics::CColorGradientManager m_colorGradientManager;
65 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestTriggeredFadingColorGradientLoadsOnUpdate, ColorGradientManager_TestFixture)
67 const char* const testPath = "testPath";
69 m_colorGradientManager.TriggerFadingColorGradient(testPath, 0.0f);
70 m_colorGradientManager.UpdateForThisFrame(0.0f);
72 ASSERT_ARE_EQUAL(testPath, m_mockColorGradingController.GetPathOfLastLoadedColorChart());
75 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestNothingIsLoadedIfNothingWasTriggered, ColorGradientManager_TestFixture)
77 m_colorGradientManager.UpdateForThisFrame(0.0f);
79 ASSERT_IS_FALSE(m_mockColorGradingController.AnyChartsWereLoaded());
82 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestMoreGradientsCanBeTriggeredInOneFrame, ColorGradientManager_TestFixture)
84 const char* const testPath1 = "testPath1";
85 m_colorGradientManager.TriggerFadingColorGradient(testPath1, 0.0f);
87 const char* const testPath2 = "testPath2";
88 m_colorGradientManager.TriggerFadingColorGradient(testPath2, 0.0f);
90 m_colorGradientManager.UpdateForThisFrame(0.0f);
92 ASSERT_ARE_EQUAL(testPath1, m_mockColorGradingController.GetPathOfLoadedColorChart(0));
93 ASSERT_ARE_EQUAL(testPath2, m_mockColorGradingController.GetPathOfLoadedColorChart(1));
96 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestGradientsAreLoadedOnlyOnce, ColorGradientManager_TestFixture)
98 m_colorGradientManager.TriggerFadingColorGradient("testPath", 0.0f);
100 m_colorGradientManager.UpdateForThisFrame(0.0f);
101 m_mockColorGradingController.ClearLoadedCharts();
102 m_colorGradientManager.UpdateForThisFrame(0.0f);
104 ASSERT_IS_FALSE(m_mockColorGradingController.AnyChartsWereLoaded());
107 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestGradientWithZeroFadingTimeIsUsedImmediatelyWithFullWeight, ColorGradientManager_TestFixture)
109 const int expectedTexID = 64;
110 m_mockColorGradingController.SetFakeIDForLoadedTexture(expectedTexID);
112 m_colorGradientManager.TriggerFadingColorGradient("testPath", 0.0f);
113 m_colorGradientManager.UpdateForThisFrame(0.0f);
115 const SColorChartLayer& theLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
117 const SColorChartLayer expectedColorChartLayer(expectedTexID, 1.0f);
119 ASSERT_ARE_EQUAL(expectedColorChartLayer, theLayerSet);
122 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestBlendWeightHalfWayThroughFadingIn, ColorGradientManager_TestFixture)
124 m_colorGradientManager.TriggerFadingColorGradient("testPath", 10.0f);
125 m_colorGradientManager.UpdateForThisFrame(5.0f);
127 const SColorChartLayer& theLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
129 const SColorChartLayer expectedColorChartLayer(0, 0.5f);
131 ASSERT_ARE_EQUAL(expectedColorChartLayer, theLayerSet);
134 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestBlendWeightIsOneWhenFadingIsFinished, ColorGradientManager_TestFixture)
136 m_colorGradientManager.TriggerFadingColorGradient("testPath", 5.0f);
137 m_colorGradientManager.UpdateForThisFrame(5.0f);
139 const SColorChartLayer& theLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
141 const SColorChartLayer expectedColorChartLayer(0, 1.0f);
143 ASSERT_ARE_EQUAL(expectedColorChartLayer, theLayerSet);
146 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestBlendWeightIsOneAfterFadingIsFinished, ColorGradientManager_TestFixture)
148 m_colorGradientManager.TriggerFadingColorGradient("testPath", 5.0f);
149 m_colorGradientManager.UpdateForThisFrame(10.0f);
151 const SColorChartLayer& theLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
153 const SColorChartLayer expectedColorChartLayer(0, 1.0f);
155 ASSERT_ARE_EQUAL(expectedColorChartLayer, theLayerSet);
158 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestNullLayersAreNotSet, ColorGradientManager_TestFixture)
160 m_colorGradientManager.UpdateForThisFrame(0.0f);
162 ASSERT_IS_FALSE(m_mockColorGradingController.WasNullPointerSetOnLayers())
165 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestBlendWeightIsOneAfterFadingIsFinishedInMoreUpdates, ColorGradientManager_TestFixture)
167 m_colorGradientManager.TriggerFadingColorGradient("testPath", 10.0f);
169 m_colorGradientManager.UpdateForThisFrame(2.0f);
170 m_colorGradientManager.UpdateForThisFrame(2.0f);
171 m_colorGradientManager.UpdateForThisFrame(2.0f);
172 m_colorGradientManager.UpdateForThisFrame(2.0f);
173 m_colorGradientManager.UpdateForThisFrame(2.0f);
175 const SColorChartLayer& theLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
177 const SColorChartLayer expectedColorChartLayer(0, 1.0f);
179 ASSERT_ARE_EQUAL(expectedColorChartLayer, theLayerSet);
182 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestTwoLayersSet, ColorGradientManager_TestFixture)
184 m_colorGradientManager.TriggerFadingColorGradient("testPath1", 10.0f);
185 m_colorGradientManager.UpdateForThisFrame(10.0f);
187 m_colorGradientManager.TriggerFadingColorGradient("testPath2", 10.0f);
188 m_colorGradientManager.UpdateForThisFrame(5.0f);
190 const unsigned int numberOfLayersSet = (int) m_mockColorGradingController.GetNumberOfLayersSet();
191 ASSERT_ARE_EQUAL(2u, numberOfLayersSet);
194 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestLayerIntroducedWhileAnotherOneWasFadingIn, ColorGradientManager_TestFixture)
196 m_colorGradientManager.TriggerFadingColorGradient("testPath1", 10.0f);
197 m_colorGradientManager.UpdateForThisFrame(10.0f);
199 const int expectedTexID = 64;
200 m_mockColorGradingController.SetFakeIDForLoadedTexture(expectedTexID);
202 m_colorGradientManager.TriggerFadingColorGradient("testPath2", 10.0f);
203 m_colorGradientManager.UpdateForThisFrame(5.0f);
205 const SColorChartLayer expectedFirstColorChartLayer(0, 0.5f);
206 ASSERT_ARE_EQUAL(expectedFirstColorChartLayer, m_mockColorGradingController.GetCurrentlySetLayerByIndex(0));
208 const SColorChartLayer expectedSecondColorChartLayer(expectedTexID, 0.5f);
209 ASSERT_ARE_EQUAL(expectedSecondColorChartLayer, m_mockColorGradingController.GetCurrentlySetLayerByIndex(1));
212 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestNewFadedChartStopsUpdatingPreviousOnes, ColorGradientManager_TestFixture)
214 m_colorGradientManager.TriggerFadingColorGradient("", 10.0f);
215 m_colorGradientManager.UpdateForThisFrame(5.0f);
217 m_colorGradientManager.TriggerFadingColorGradient("", 10.0f);
218 m_colorGradientManager.UpdateForThisFrame(5.0f);
220 m_colorGradientManager.TriggerFadingColorGradient("", 10.0f);
221 m_colorGradientManager.UpdateForThisFrame(5.0f);
223 const SColorChartLayer& firstLayerSet = m_mockColorGradingController.GetCurrentlySetLayerByIndex(0);
225 ASSERT_FLOAT_ARE_EQUAL(0.125f, firstLayerSet.m_blendAmount, 0.001f);
228 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestLayerWithBlendWeightOneSetsOnlyOneLayer, ColorGradientManager_TestFixture)
230 m_colorGradientManager.TriggerFadingColorGradient("testPath1", 10.0f);
231 m_colorGradientManager.UpdateForThisFrame(0.0f);
233 m_colorGradientManager.TriggerFadingColorGradient("testPath2", 0.0f);
234 m_colorGradientManager.UpdateForThisFrame(0.0f);
236 const unsigned int numberOfLayersSet = (int) m_mockColorGradingController.GetNumberOfLayersSet();
237 ASSERT_ARE_EQUAL(1u, numberOfLayersSet);
240 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestLayerWithBlendWeightOneRemovesOtherLayersAndIsSetCorrectly, ColorGradientManager_TestFixture)
242 m_colorGradientManager.TriggerFadingColorGradient("testPath1", 10.0f);
243 m_colorGradientManager.UpdateForThisFrame(0.0f);
245 const int expectedTexID = 64;
246 m_mockColorGradingController.SetFakeIDForLoadedTexture(expectedTexID);
248 m_colorGradientManager.TriggerFadingColorGradient("testPath2", 0.0f);
249 m_colorGradientManager.UpdateForThisFrame(0.0f);
251 const SColorChartLayer expectedColorChartLayer(expectedTexID, 1.0f);
252 ASSERT_ARE_EQUAL(expectedColorChartLayer, m_mockColorGradingController.GetCurrentlySetLayerByIndex(0));
255 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestRemovedLayerUnloadsTexture, ColorGradientManager_TestFixture)
257 const int expectedTexID = 64;
258 m_mockColorGradingController.SetFakeIDForLoadedTexture(expectedTexID);
260 m_colorGradientManager.TriggerFadingColorGradient("testPath1", 10.0f);
261 m_colorGradientManager.UpdateForThisFrame(0.0f);
263 m_colorGradientManager.TriggerFadingColorGradient("testPath2", 0.0f);
264 m_colorGradientManager.UpdateForThisFrame(0.0f);
266 ASSERT_ARE_EQUAL(expectedTexID, m_mockColorGradingController.GetLastUnloadedTextureID());
269 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestTextureIsNotUnloadedIfInUse, ColorGradientManager_TestFixture)
271 m_colorGradientManager.TriggerFadingColorGradient("testPath", 10.0f);
272 m_colorGradientManager.UpdateForThisFrame(10.0f);
274 ASSERT_ARE_EQUAL(-1, m_mockColorGradingController.GetLastUnloadedTextureID());
277 CRY_TEST_WITH_FIXTURE(ColorGradientManager_TestTextureIsNotUnloadedIfDeltaIsZero, ColorGradientManager_TestFixture)
279 m_colorGradientManager.TriggerFadingColorGradient("testPath", 10.0f);
280 m_colorGradientManager.UpdateForThisFrame(0.0f);
282 ASSERT_ARE_EQUAL(-1, m_mockColorGradingController.GetLastUnloadedTextureID());