@@ -367,3 +367,57 @@ TEST_F(SensingBlocksTest, TouchingObject_Invalid_Runtime)
367367 ASSERT_FALSE(value_toBool(&value));
368368 value_free(&value);
369369}
370+
371+ TEST_F(SensingBlocksTest, TouchingColor_String)
372+ {
373+ auto targetMock = std::make_shared<TargetMock>();
374+ targetMock->setEngine(&m_engineMock);
375+
376+ ScriptBuilder builder(m_extension.get(), m_engine, targetMock);
377+ builder.addBlock("sensing_touchingcolor");
378+ builder.addValueInput("COLOR", "#00ffff");
379+ Block *block = builder.currentBlock();
380+
381+ Compiler compiler(&m_engineMock, targetMock.get());
382+ auto code = compiler.compile(block, Compiler::CodeType::Reporter);
383+ Script script(targetMock.get(), block, &m_engineMock);
384+ script.setCode(code);
385+ Thread thread(targetMock.get(), &m_engineMock, &script);
386+
387+ EXPECT_CALL(*targetMock, touchingColor(rgb(0, 255, 255))).WillOnce(Return(true));
388+ ValueData value = thread.runReporter();
389+ ASSERT_TRUE(value_toBool(&value));
390+ value_free(&value);
391+
392+ EXPECT_CALL(*targetMock, touchingColor(rgb(0, 255, 255))).WillOnce(Return(false));
393+ value = thread.runReporter();
394+ ASSERT_FALSE(value_toBool(&value));
395+ value_free(&value);
396+ }
397+
398+ TEST_F(SensingBlocksTest, TouchingColor_Number)
399+ {
400+ auto targetMock = std::make_shared<TargetMock>();
401+ targetMock->setEngine(&m_engineMock);
402+
403+ ScriptBuilder builder(m_extension.get(), m_engine, targetMock);
404+ builder.addBlock("sensing_touchingcolor");
405+ builder.addValueInput("COLOR", rgb(255, 54, 23));
406+ Block *block = builder.currentBlock();
407+
408+ Compiler compiler(&m_engineMock, targetMock.get());
409+ auto code = compiler.compile(block, Compiler::CodeType::Reporter);
410+ Script script(targetMock.get(), block, &m_engineMock);
411+ script.setCode(code);
412+ Thread thread(targetMock.get(), &m_engineMock, &script);
413+
414+ EXPECT_CALL(*targetMock, touchingColor(rgb(255, 54, 23))).WillOnce(Return(true));
415+ ValueData value = thread.runReporter();
416+ ASSERT_TRUE(value_toBool(&value));
417+ value_free(&value);
418+
419+ EXPECT_CALL(*targetMock, touchingColor(rgb(255, 54, 23))).WillOnce(Return(false));
420+ value = thread.runReporter();
421+ ASSERT_FALSE(value_toBool(&value));
422+ value_free(&value);
423+ }
0 commit comments