@@ -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