@@ -226,6 +226,45 @@ TEST_F(VariableBlocksTest, ShowVariable_Global_Nonexistent)
226226 ASSERT_TRUE (monitor2->visible ());
227227}
228228
229+ TEST_F (VariableBlocksTest, ShowVariable_Global_Nonexistent_FromSprite)
230+ {
231+ auto stage = std::make_shared<Stage>();
232+ auto sprite = std::make_shared<Sprite>();
233+
234+ auto var1 = std::make_shared<Variable>(" a" , " var1" , 835.21 );
235+ stage->addVariable (var1);
236+ auto var2 = std::make_shared<Variable>(" b" , " var2" , " Hello world" );
237+ stage->addVariable (var2);
238+
239+ m_engine->setTargets ({ stage, sprite });
240+
241+ ScriptBuilder builder1 (m_extension.get (), m_engine, sprite);
242+ builder1.addBlock (" data_showvariable" );
243+ builder1.addEntityField (" VARIABLE" , var1);
244+
245+ ScriptBuilder builder2 (m_extension.get (), m_engine, sprite);
246+ builder2.addBlock (" data_showvariable" );
247+ builder2.addEntityField (" VARIABLE" , var2);
248+
249+ ScriptBuilder::buildMultiple ({ &builder1, &builder2 });
250+ m_engine->run ();
251+
252+ // Missing monitors should be created
253+ builder1.run ();
254+
255+ Monitor *monitor1 = var1->monitor ();
256+ ASSERT_TRUE (monitor1);
257+ ASSERT_TRUE (monitor1->visible ());
258+
259+ builder2.run ();
260+
261+ Monitor *monitor2 = var2->monitor ();
262+
263+ ASSERT_TRUE (monitor2);
264+ ASSERT_TRUE (monitor1->visible ());
265+ ASSERT_TRUE (monitor2->visible ());
266+ }
267+
229268TEST_F (VariableBlocksTest, ShowVariable_Local_Existent)
230269{
231270 auto stage = std::make_shared<Stage>();
0 commit comments