@@ -29,6 +29,18 @@ using ::testing::_;
2929class RenderedTargetTest : public testing ::Test
3030{
3131 public:
32+ void SetUp () override
33+ {
34+ // Create OpenGL context
35+ createContextAndSurface (&m_context, &m_surface);
36+ }
37+
38+ void TearDown () override
39+ {
40+ emit m_context.aboutToBeDestroyed ();
41+ m_context.doneCurrent ();
42+ }
43+
3244 void createContextAndSurface (QOpenGLContext *context, QOffscreenSurface *surface)
3345 {
3446 QSurfaceFormat surfaceFormat;
@@ -46,6 +58,9 @@ class RenderedTargetTest : public testing::Test
4658 context->makeCurrent (surface);
4759 ASSERT_EQ (QOpenGLContext::currentContext (), context);
4860 }
61+
62+ QOpenGLContext m_context;
63+ QOffscreenSurface m_surface;
4964};
5065
5166TEST_F (RenderedTargetTest, Constructors)
@@ -58,9 +73,6 @@ TEST_F(RenderedTargetTest, Constructors)
5873
5974TEST_F (RenderedTargetTest, UpdateMethods)
6075{
61- QOpenGLContext context;
62- QOffscreenSurface surface;
63- createContextAndSurface (&context, &surface);
6476 RenderedTarget parent; // a parent item is needed for setVisible() to work
6577 RenderedTarget target (&parent);
6678 EngineMock engine;
@@ -325,8 +337,6 @@ TEST_F(RenderedTargetTest, UpdateMethods)
325337 ASSERT_TRUE (texture.isValid ());
326338 ASSERT_EQ (texture.width (), 13 );
327339 ASSERT_EQ (texture.height (), 13 );
328-
329- context.doneCurrent ();
330340}
331341
332342TEST_F (RenderedTargetTest, DeinitClone)
@@ -358,11 +368,6 @@ TEST_F(RenderedTargetTest, CpuRendering)
358368 target.setEngine (&engine);
359369 target.setSpriteModel (&model);
360370
361- // Create OpenGL context
362- QOpenGLContext context;
363- QOffscreenSurface surface;
364- createContextAndSurface (&context, &surface);
365-
366371 // Load costume
367372 EXPECT_CALL (engine, stageWidth ()).WillRepeatedly (Return (480 ));
368373 EXPECT_CALL (engine, stageHeight ()).WillRepeatedly (Return (360 ));
@@ -467,9 +472,6 @@ TEST_F(RenderedTargetTest, CpuRendering)
467472 target.setGraphicEffect (ShaderManager::Effect::Color, 0 );
468473
469474 // TODO: Test point transform (graphic effects that change shape)
470-
471- // Cleanup
472- context.doneCurrent ();
473475}
474476
475477TEST_F (RenderedTargetTest, SpriteDragging)
@@ -738,9 +740,6 @@ TEST_F(RenderedTargetTest, GraphicEffects)
738740
739741TEST_F (RenderedTargetTest, GetBounds)
740742{
741- QOpenGLContext context;
742- QOffscreenSurface surface;
743- createContextAndSurface (&context, &surface);
744743 RenderedTarget target;
745744
746745 Sprite sprite;
@@ -826,16 +825,11 @@ TEST_F(RenderedTargetTest, GetBounds)
826825 ASSERT_EQ (std::round (bubbleBounds.top () * 100 ) / 100 , 1294.13 );
827826 ASSERT_EQ (std::round (bubbleBounds.right () * 100 ) / 100 , -405.87 );
828827 ASSERT_EQ (std::round (bubbleBounds.bottom () * 100 ) / 100 , 1286.13 );
829-
830- context.doneCurrent ();
831828}
832829
833830TEST_F (RenderedTargetTest, GetFastBounds)
834831{
835- QOpenGLContext context;
836- QOffscreenSurface surface;
837- createContextAndSurface (&context, &surface);
838- QOpenGLExtraFunctions glF (&context);
832+ QOpenGLExtraFunctions glF (&m_context);
839833 glF.initializeOpenGLFunctions ();
840834 RenderedTarget target;
841835
@@ -898,8 +892,6 @@ TEST_F(RenderedTargetTest, GetFastBounds)
898892 ASSERT_EQ (std::round (bounds.top () * 100 ) / 100 , 1324.22 );
899893 ASSERT_EQ (std::round (bounds.right () * 100 ) / 100 , -375.77 );
900894 ASSERT_EQ (std::round (bounds.bottom () * 100 ) / 100 , 1143.65 );
901-
902- context.doneCurrent ();
903895}
904896
905897TEST_F (RenderedTargetTest, TouchingClones)
@@ -923,11 +915,6 @@ TEST_F(RenderedTargetTest, TouchingClones)
923915 model1.setRenderedTarget (&target1);
924916 model2.setRenderedTarget (&target2);
925917
926- // Create OpenGL context
927- QOpenGLContext context;
928- QOffscreenSurface surface;
929- createContextAndSurface (&context, &surface);
930-
931918 // Load costume
932919 EXPECT_CALL (engine, stageWidth ()).WillRepeatedly (Return (480 ));
933920 EXPECT_CALL (engine, stageHeight ()).WillRepeatedly (Return (360 ));
@@ -1074,9 +1061,6 @@ TEST_F(RenderedTargetTest, TouchingClones)
10741061 EXPECT_CALL (target1, containsScratchPoint).Times (0 );
10751062 EXPECT_CALL (target2, containsScratchPoint).Times (0 );
10761063 ASSERT_FALSE (target.touchingClones ({ &clone1, &clone2 }));
1077-
1078- // Cleanup
1079- context.doneCurrent ();
10801064}
10811065
10821066TEST_F (RenderedTargetTest, TouchingColor)
@@ -1146,11 +1130,6 @@ TEST_F(RenderedTargetTest, TouchingColor)
11461130 model1.setRenderedTarget (&target1);
11471131 model2.setRenderedTarget (&target2);
11481132
1149- // Create OpenGL context
1150- QOpenGLContext context;
1151- QOffscreenSurface surface;
1152- createContextAndSurface (&context, &surface);
1153-
11541133 // Load costume
11551134 EXPECT_CALL (engine, stageWidth ()).WillRepeatedly (Return (480 ));
11561135 EXPECT_CALL (engine, stageHeight ()).WillRepeatedly (Return (360 ));
@@ -1330,7 +1309,4 @@ TEST_F(RenderedTargetTest, TouchingColor)
13301309 EXPECT_CALL (penLayer, colorAtScratchPoint).Times (0 );
13311310 EXPECT_CALL (stageTarget, colorAtScratchPoint).Times (0 );
13321311 ASSERT_FALSE (target.touchingColor (color1));
1333-
1334- // Cleanup
1335- context.doneCurrent ();
13361312}
0 commit comments