@@ -378,3 +378,46 @@ TEST_F(OperatorBlocksTest, Join)
378378 ASSERT_EQ (Value (values[0 ]), " abcdef" );
379379 ASSERT_EQ (Value (values[1 ]), " Hello world" );
380380}
381+
382+ TEST_F (OperatorBlocksTest, LetterOf)
383+ {
384+ auto target = std::make_shared<Sprite>();
385+ ScriptBuilder builder (m_extension.get (), m_engine, target);
386+
387+ builder.addBlock (" operator_letter_of" );
388+ builder.addValueInput (" LETTER" , 2 );
389+ builder.addValueInput (" STRING" , " abc" );
390+ builder.captureBlockReturnValue ();
391+
392+ builder.addBlock (" operator_letter_of" );
393+ builder.addValueInput (" LETTER" , 7 );
394+ builder.addValueInput (" STRING" , " Hello world" );
395+ builder.captureBlockReturnValue ();
396+
397+ builder.addBlock (" operator_letter_of" );
398+ builder.addValueInput (" LETTER" , 0 );
399+ builder.addValueInput (" STRING" , " Hello world" );
400+ builder.captureBlockReturnValue ();
401+
402+ builder.addBlock (" operator_letter_of" );
403+ builder.addValueInput (" LETTER" , 12 );
404+ builder.addValueInput (" STRING" , " Hello world" );
405+ builder.captureBlockReturnValue ();
406+
407+ builder.addBlock (" operator_letter_of" );
408+ builder.addValueInput (" LETTER" , 1 );
409+ builder.addValueInput (" STRING" , " Ábč" );
410+ builder.captureBlockReturnValue ();
411+
412+ builder.build ();
413+ builder.run ();
414+
415+ List *valueList = builder.capturedValues ();
416+ ValueData *values = valueList->data ();
417+ ASSERT_EQ (valueList->size (), 5 );
418+ ASSERT_EQ (Value (values[0 ]), " b" );
419+ ASSERT_EQ (Value (values[1 ]), " w" );
420+ ASSERT_EQ (Value (values[2 ]), " " );
421+ ASSERT_EQ (Value (values[3 ]), " " );
422+ ASSERT_EQ (Value (values[4 ]), " Á" );
423+ }
0 commit comments