@@ -421,3 +421,59 @@ TEST_F(SensingBlocksTest, TouchingColor_Number)
421421 ASSERT_FALSE (value_toBool (&value));
422422 value_free (&value);
423423}
424+
425+ TEST_F (SensingBlocksTest, ColorIsTouchingColor_StringNumber)
426+ {
427+ auto targetMock = std::make_shared<TargetMock>();
428+ targetMock->setEngine (&m_engineMock);
429+
430+ ScriptBuilder builder (m_extension.get (), m_engine, targetMock);
431+ builder.addBlock (" sensing_coloristouchingcolor" );
432+ builder.addValueInput (" COLOR" , " #00ffff" );
433+ builder.addValueInput (" COLOR2" , rgb (255 , 54 , 23 ));
434+ Block *block = builder.currentBlock ();
435+
436+ Compiler compiler (&m_engineMock, targetMock.get ());
437+ auto code = compiler.compile (block, Compiler::CodeType::Reporter);
438+ Script script (targetMock.get (), block, &m_engineMock);
439+ script.setCode (code);
440+ Thread thread (targetMock.get (), &m_engineMock, &script);
441+
442+ EXPECT_CALL (*targetMock, touchingColor (rgb (0 , 255 , 255 ), rgb (255 , 54 , 23 ))).WillOnce (Return (true ));
443+ ValueData value = thread.runReporter ();
444+ ASSERT_TRUE (value_toBool (&value));
445+ value_free (&value);
446+
447+ EXPECT_CALL (*targetMock, touchingColor (rgb (0 , 255 , 255 ), rgb (255 , 54 , 23 ))).WillOnce (Return (false ));
448+ value = thread.runReporter ();
449+ ASSERT_FALSE (value_toBool (&value));
450+ value_free (&value);
451+ }
452+
453+ TEST_F (SensingBlocksTest, ColorIsTouchingColor_NumberString)
454+ {
455+ auto targetMock = std::make_shared<TargetMock>();
456+ targetMock->setEngine (&m_engineMock);
457+
458+ ScriptBuilder builder (m_extension.get (), m_engine, targetMock);
459+ builder.addBlock (" sensing_coloristouchingcolor" );
460+ builder.addValueInput (" COLOR" , rgb (255 , 54 , 23 ));
461+ builder.addValueInput (" COLOR2" , " #00ffff" );
462+ Block *block = builder.currentBlock ();
463+
464+ Compiler compiler (&m_engineMock, targetMock.get ());
465+ auto code = compiler.compile (block, Compiler::CodeType::Reporter);
466+ Script script (targetMock.get (), block, &m_engineMock);
467+ script.setCode (code);
468+ Thread thread (targetMock.get (), &m_engineMock, &script);
469+
470+ EXPECT_CALL (*targetMock, touchingColor (rgb (255 , 54 , 23 ), rgb (0 , 255 , 255 ))).WillOnce (Return (true ));
471+ ValueData value = thread.runReporter ();
472+ ASSERT_TRUE (value_toBool (&value));
473+ value_free (&value);
474+
475+ EXPECT_CALL (*targetMock, touchingColor (rgb (255 , 54 , 23 ), rgb (0 , 255 , 255 ))).WillOnce (Return (false ));
476+ value = thread.runReporter ();
477+ ASSERT_FALSE (value_toBool (&value));
478+ value_free (&value);
479+ }
0 commit comments