@@ -424,3 +424,46 @@ TEST_F(ListBlocksTest, LengthOfList)
424424 ASSERT_EQ (list1->toString (), " Lorem ipsum dolor 123 true" );
425425 ASSERT_EQ (list2->toString (), " 1 false" );
426426}
427+
428+ TEST_F (ListBlocksTest, ListContainsItem)
429+ {
430+ auto target = std::make_shared<Sprite>();
431+
432+ auto list = std::make_shared<List>(" list" , " " );
433+ list->append (" Lorem" );
434+ list->append (" ipsum" );
435+ list->append (" dolor" );
436+ list->append (123 );
437+ list->append (true );
438+ list->append (" dolor" );
439+ target->addList (list);
440+
441+ ScriptBuilder builder (m_extension.get (), m_engine, target);
442+
443+ auto addTest = [&builder](const Value &item, std::shared_ptr<List> list) {
444+ builder.addBlock (" data_listcontainsitem" );
445+ builder.addEntityField (" LIST" , list);
446+ builder.addValueInput (" ITEM" , item);
447+ auto block = builder.takeBlock ();
448+
449+ builder.addBlock (" test_print" );
450+ builder.addObscuredInput (" STRING" , block);
451+ return builder.currentBlock ();
452+ };
453+
454+ auto block = addTest (" dolor" , list);
455+ addTest (true , list);
456+ addTest (" nonexistent" , list);
457+
458+ builder.build ();
459+
460+ static const std::string expected =
461+ " true\n "
462+ " true\n "
463+ " false\n " ;
464+
465+ testing::internal::CaptureStdout ();
466+ builder.run ();
467+ ASSERT_EQ (testing::internal::GetCapturedStdout (), expected);
468+ ASSERT_EQ (list->toString (), " Lorem ipsum dolor 123 true dolor" );
469+ }
0 commit comments