@@ -1175,3 +1175,57 @@ TEST_F(SensingBlocksTest, AskAndWait_KillThread)
11751175 Thread thread2 (sprite.get (), &m_engineMock, &script);
11761176 thread2.run ();
11771177}
1178+
1179+ TEST_F (SensingBlocksTest, KeyPressed_Space)
1180+ {
1181+ auto targetMock = std::make_shared<TargetMock>();
1182+ targetMock->setEngine (&m_engineMock);
1183+
1184+ ScriptBuilder builder (m_extension.get (), m_engine, targetMock);
1185+ builder.addBlock (" sensing_keypressed" );
1186+ builder.addDropdownInput (" KEY_OPTION" , " space" );
1187+ Block *block = builder.currentBlock ();
1188+
1189+ Compiler compiler (&m_engineMock, targetMock.get ());
1190+ auto code = compiler.compile (block, Compiler::CodeType::Reporter);
1191+ Script script (targetMock.get (), block, &m_engineMock);
1192+ script.setCode (code);
1193+ Thread thread (targetMock.get (), &m_engineMock, &script);
1194+
1195+ EXPECT_CALL (m_engineMock, keyPressed (" space" )).WillOnce (Return (true ));
1196+ ValueData value = thread.runReporter ();
1197+ ASSERT_TRUE (value_toBool (&value));
1198+ value_free (&value);
1199+
1200+ EXPECT_CALL (m_engineMock, keyPressed (" space" )).WillOnce (Return (false ));
1201+ value = thread.runReporter ();
1202+ ASSERT_FALSE (value_toBool (&value));
1203+ value_free (&value);
1204+ }
1205+
1206+ TEST_F (SensingBlocksTest, KeyPressed_M)
1207+ {
1208+ auto targetMock = std::make_shared<TargetMock>();
1209+ targetMock->setEngine (&m_engineMock);
1210+
1211+ ScriptBuilder builder (m_extension.get (), m_engine, targetMock);
1212+ builder.addBlock (" sensing_keypressed" );
1213+ builder.addDropdownInput (" KEY_OPTION" , " m" );
1214+ Block *block = builder.currentBlock ();
1215+
1216+ Compiler compiler (&m_engineMock, targetMock.get ());
1217+ auto code = compiler.compile (block, Compiler::CodeType::Reporter);
1218+ Script script (targetMock.get (), block, &m_engineMock);
1219+ script.setCode (code);
1220+ Thread thread (targetMock.get (), &m_engineMock, &script);
1221+
1222+ EXPECT_CALL (m_engineMock, keyPressed (" m" )).WillOnce (Return (true ));
1223+ ValueData value = thread.runReporter ();
1224+ ASSERT_TRUE (value_toBool (&value));
1225+ value_free (&value);
1226+
1227+ EXPECT_CALL (m_engineMock, keyPressed (" m" )).WillOnce (Return (false ));
1228+ value = thread.runReporter ();
1229+ ASSERT_FALSE (value_toBool (&value));
1230+ value_free (&value);
1231+ }
0 commit comments