@@ -1778,9 +1778,11 @@ TEST_F(LooksBlocksTest, SwitchBackdropToImpl)
1778
1778
static unsigned int bytecode12[] = { vm::OP_START, vm::OP_CONST, 11 , vm::OP_EXEC, 0 , vm::OP_HALT };
1779
1779
static unsigned int bytecode13[] = { vm::OP_START, vm::OP_CONST, 12 , vm::OP_EXEC, 0 , vm::OP_HALT };
1780
1780
static unsigned int bytecode14[] = { vm::OP_START, vm::OP_CONST, 13 , vm::OP_EXEC, 0 , vm::OP_HALT };
1781
+ static unsigned int bytecode15[] = { vm::OP_START, vm::OP_CONST, 14 , vm::OP_EXEC, 0 , vm::OP_HALT };
1781
1782
static BlockFunc functions[] = { &LooksBlocks::switchBackdropTo };
1782
1783
static Value constValues[] = {
1783
- " backdrop2" , 0 , 1 , 2 , 3 , " 2" , " 3" , Value::SpecialValue::NaN, Value::SpecialValue::Infinity, Value::SpecialValue::NegativeInfinity, " " , " " , " next backdrop" , " previous backdrop"
1784
+ " backdrop2" , 0 , 1 , 2 , 3 , " 2" , " 3" , Value::SpecialValue::NaN, Value::SpecialValue::Infinity, Value::SpecialValue::NegativeInfinity, " " , " " , " next backdrop" , " previous backdrop" ,
1785
+ " random backdrop"
1784
1786
};
1785
1787
1786
1788
Target target;
@@ -1992,6 +1994,42 @@ TEST_F(LooksBlocksTest, SwitchBackdropToImpl)
1992
1994
1993
1995
ASSERT_EQ (vm.registerCount (), 0 );
1994
1996
ASSERT_EQ (stage.costumeIndex (), 5 );
1997
+
1998
+ // random backdrop
1999
+ RandomGeneratorMock rng;
2000
+ LooksBlocks::rng = &rng;
2001
+
2002
+ EXPECT_CALL (m_engineMock, stage ()).Times (3 ).WillRepeatedly (Return (&stage));
2003
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (3 )->broadcast ()));
2004
+ EXPECT_CALL (rng, randint (0 , 5 )).WillOnce (Return (3 ));
2005
+ stage.setCostumeIndex (0 );
2006
+ vm.setBytecode (bytecode15);
2007
+ vm.run ();
2008
+
2009
+ ASSERT_EQ (vm.registerCount (), 0 );
2010
+ ASSERT_EQ (stage.costumeIndex (), 3 );
2011
+
2012
+ EXPECT_CALL (m_engineMock, stage ()).Times (3 ).WillRepeatedly (Return (&stage));
2013
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (5 )->broadcast ()));
2014
+ EXPECT_CALL (rng, randint (0 , 5 )).WillOnce (Return (5 ));
2015
+ vm.reset ();
2016
+ vm.run ();
2017
+
2018
+ ASSERT_EQ (vm.registerCount (), 0 );
2019
+ ASSERT_EQ (stage.costumeIndex (), 5 );
2020
+
2021
+ stage.addCostume (std::make_shared<Costume>(" random backdrop" , " b7" , " svg" ));
2022
+
2023
+ EXPECT_CALL (m_engineMock, stage ()).Times (2 ).WillRepeatedly (Return (&stage));
2024
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (6 )->broadcast ()));
2025
+ EXPECT_CALL (rng, randint).Times (0 );
2026
+ vm.reset ();
2027
+ vm.run ();
2028
+
2029
+ ASSERT_EQ (vm.registerCount (), 0 );
2030
+ ASSERT_EQ (stage.costumeIndex (), 6 );
2031
+
2032
+ LooksBlocks::rng = RandomGenerator::instance ().get ();
1995
2033
}
1996
2034
1997
2035
TEST_F (LooksBlocksTest, SwitchBackdropToAndWait)
@@ -2045,9 +2083,11 @@ TEST_F(LooksBlocksTest, SwitchBackdropToAndWaitImpl)
2045
2083
static unsigned int bytecode12[] = { vm::OP_START, vm::OP_CONST, 11 , vm::OP_EXEC, 0 , vm::OP_EXEC, 1 , vm::OP_EXEC, 2 , vm::OP_HALT };
2046
2084
static unsigned int bytecode13[] = { vm::OP_START, vm::OP_CONST, 12 , vm::OP_EXEC, 0 , vm::OP_EXEC, 1 , vm::OP_EXEC, 2 , vm::OP_HALT };
2047
2085
static unsigned int bytecode14[] = { vm::OP_START, vm::OP_CONST, 13 , vm::OP_EXEC, 0 , vm::OP_EXEC, 1 , vm::OP_EXEC, 2 , vm::OP_HALT };
2086
+ static unsigned int bytecode15[] = { vm::OP_START, vm::OP_CONST, 14 , vm::OP_EXEC, 0 , vm::OP_EXEC, 1 , vm::OP_EXEC, 2 , vm::OP_HALT };
2048
2087
static BlockFunc functions[] = { &LooksBlocks::switchBackdropToAndWait, &LooksBlocks::backdropNumber, &LooksBlocks::checkBackdropScripts };
2049
2088
static Value constValues[] = {
2050
- " backdrop2" , 0 , 1 , 2 , 3 , " 2" , " 3" , Value::SpecialValue::NaN, Value::SpecialValue::Infinity, Value::SpecialValue::NegativeInfinity, " " , " " , " next backdrop" , " previous backdrop"
2089
+ " backdrop2" , 0 , 1 , 2 , 3 , " 2" , " 3" , Value::SpecialValue::NaN, Value::SpecialValue::Infinity, Value::SpecialValue::NegativeInfinity, " " , " " , " next backdrop" , " previous backdrop" ,
2090
+ " random backdrop"
2051
2091
};
2052
2092
2053
2093
Target target;
@@ -2315,6 +2355,45 @@ TEST_F(LooksBlocksTest, SwitchBackdropToAndWaitImpl)
2315
2355
2316
2356
ASSERT_EQ (vm.registerCount (), 0 );
2317
2357
ASSERT_EQ (stage.costumeIndex (), 5 );
2358
+
2359
+ // random backdrop
2360
+ RandomGeneratorMock rng;
2361
+ LooksBlocks::rng = &rng;
2362
+
2363
+ EXPECT_CALL (m_engineMock, stage ()).Times (5 ).WillRepeatedly (Return (&stage));
2364
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (3 )->broadcast ()));
2365
+ EXPECT_CALL (m_engineMock, broadcastByPtrRunning (stage.costumeAt (3 )->broadcast ())).WillOnce (Return (false ));
2366
+ EXPECT_CALL (rng, randint (0 , 5 )).WillOnce (Return (3 ));
2367
+ stage.setCostumeIndex (0 );
2368
+ vm.setBytecode (bytecode15);
2369
+ vm.run ();
2370
+
2371
+ ASSERT_EQ (vm.registerCount (), 0 );
2372
+ ASSERT_EQ (stage.costumeIndex (), 3 );
2373
+
2374
+ EXPECT_CALL (m_engineMock, stage ()).Times (5 ).WillRepeatedly (Return (&stage));
2375
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (5 )->broadcast ()));
2376
+ EXPECT_CALL (m_engineMock, broadcastByPtrRunning (stage.costumeAt (5 )->broadcast ())).WillOnce (Return (false ));
2377
+ EXPECT_CALL (rng, randint (0 , 5 )).WillOnce (Return (5 ));
2378
+ vm.reset ();
2379
+ vm.run ();
2380
+
2381
+ ASSERT_EQ (vm.registerCount (), 0 );
2382
+ ASSERT_EQ (stage.costumeIndex (), 5 );
2383
+
2384
+ stage.addCostume (std::make_shared<Costume>(" random backdrop" , " b7" , " svg" ));
2385
+
2386
+ EXPECT_CALL (m_engineMock, stage ()).Times (4 ).WillRepeatedly (Return (&stage));
2387
+ EXPECT_CALL (m_engineMock, startBackdropScripts (stage.costumeAt (6 )->broadcast ()));
2388
+ EXPECT_CALL (m_engineMock, broadcastByPtrRunning (stage.costumeAt (6 )->broadcast ())).WillOnce (Return (false ));
2389
+ EXPECT_CALL (rng, randint).Times (0 );
2390
+ vm.reset ();
2391
+ vm.run ();
2392
+
2393
+ ASSERT_EQ (vm.registerCount (), 0 );
2394
+ ASSERT_EQ (stage.costumeIndex (), 6 );
2395
+
2396
+ LooksBlocks::rng = RandomGenerator::instance ().get ();
2318
2397
}
2319
2398
2320
2399
TEST_F (LooksBlocksTest, NextBackdrop)
0 commit comments