44#include < scratchcpp/iengine.h>
55#include < scratchcpp/value.h>
66#include < scratchcpp/block.h>
7+ #include < scratchcpp/input.h>
8+ #include < scratchcpp/field.h>
79#include < scratchcpp/list.h>
810
911#include " ../../common.h"
@@ -32,7 +34,13 @@ class ScriptBuilderTest : public testing::Test
3234
3335TEST_F (ScriptBuilderTest, AddBlock)
3436{
37+ ASSERT_EQ (m_builder->currentBlock (), nullptr );
38+
3539 m_builder->addBlock (" test_simple" );
40+ auto block = m_builder->currentBlock ();
41+ ASSERT_TRUE (block);
42+ ASSERT_EQ (block->opcode (), " test_simple" );
43+
3644 m_builder->build ();
3745
3846 testing::internal::CaptureStdout ();
@@ -44,8 +52,20 @@ TEST_F(ScriptBuilderTest, AddValueInput)
4452{
4553 m_builder->addBlock (" test_print" );
4654 m_builder->addValueInput (" STRING" , 10 );
55+ auto block = m_builder->currentBlock ();
56+ ASSERT_TRUE (block);
57+ ASSERT_EQ (block->opcode (), " test_print" );
58+ ASSERT_EQ (block->inputs ().size (), 1 );
59+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
60+
4761 m_builder->addBlock (" test_print" );
4862 m_builder->addValueInput (" STRING" , " Hello world" );
63+ block = m_builder->currentBlock ();
64+ ASSERT_TRUE (block);
65+ ASSERT_EQ (block->opcode (), " test_print" );
66+ ASSERT_EQ (block->inputs ().size (), 1 );
67+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
68+
4969 m_builder->build ();
5070
5171 testing::internal::CaptureStdout ();
@@ -57,6 +77,12 @@ TEST_F(ScriptBuilderTest, AddNullInput)
5777{
5878 m_builder->addBlock (" test_print" );
5979 m_builder->addNullInput (" STRING" );
80+ auto block = m_builder->currentBlock ();
81+ ASSERT_TRUE (block);
82+ ASSERT_EQ (block->opcode (), " test_print" );
83+ ASSERT_EQ (block->inputs ().size (), 1 );
84+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
85+
6086 m_builder->build ();
6187
6288 testing::internal::CaptureStdout ();
@@ -67,8 +93,14 @@ TEST_F(ScriptBuilderTest, AddNullInput)
6793TEST_F (ScriptBuilderTest, AddObscuredInput)
6894{
6995 m_builder->addBlock (" test_print" );
70- auto block = std::make_shared<Block>(" " , " test_teststr" );
71- m_builder->addObscuredInput (" STRING" , block);
96+ auto valueBlock = std::make_shared<Block>(" " , " test_teststr" );
97+ m_builder->addObscuredInput (" STRING" , valueBlock);
98+ auto block = m_builder->currentBlock ();
99+ ASSERT_TRUE (block);
100+ ASSERT_EQ (block->opcode (), " test_print" );
101+ ASSERT_EQ (block->inputs ().size (), 1 );
102+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
103+
72104 m_builder->build ();
73105
74106 testing::internal::CaptureStdout ();
@@ -80,6 +112,12 @@ TEST_F(ScriptBuilderTest, AddNullObscuredInput)
80112{
81113 m_builder->addBlock (" test_print" );
82114 m_builder->addNullObscuredInput (" STRING" );
115+ auto block = m_builder->currentBlock ();
116+ ASSERT_TRUE (block);
117+ ASSERT_EQ (block->opcode (), " test_print" );
118+ ASSERT_EQ (block->inputs ().size (), 1 );
119+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
120+
83121 m_builder->build ();
84122
85123 testing::internal::CaptureStdout ();
@@ -91,6 +129,12 @@ TEST_F(ScriptBuilderTest, AddDropdownInput)
91129{
92130 m_builder->addBlock (" test_print_dropdown" );
93131 m_builder->addDropdownInput (" STRING" , " hello" );
132+ auto block = m_builder->currentBlock ();
133+ ASSERT_TRUE (block);
134+ ASSERT_EQ (block->opcode (), " test_print_dropdown" );
135+ ASSERT_EQ (block->inputs ().size (), 1 );
136+ ASSERT_EQ (block->inputAt (0 )->name (), " STRING" );
137+
94138 m_builder->build ();
95139
96140 testing::internal::CaptureStdout ();
@@ -102,6 +146,13 @@ TEST_F(ScriptBuilderTest, AddDropdownField)
102146{
103147 m_builder->addBlock (" test_print_field" );
104148 m_builder->addDropdownField (" STRING" , " hello" );
149+ auto block = m_builder->currentBlock ();
150+ ASSERT_TRUE (block);
151+ ASSERT_EQ (block->opcode (), " test_print_field" );
152+ ASSERT_TRUE (block->inputs ().empty ());
153+ ASSERT_EQ (block->fields ().size (), 1 );
154+ ASSERT_EQ (block->fieldAt (0 )->name (), " STRING" );
155+
105156 m_builder->build ();
106157
107158 testing::internal::CaptureStdout ();
@@ -112,10 +163,18 @@ TEST_F(ScriptBuilderTest, AddDropdownField)
112163TEST_F (ScriptBuilderTest, ReporterBlocks)
113164{
114165 m_builder->addReporterBlock (" test_teststr" );
166+ auto block = m_builder->currentBlock ();
167+ ASSERT_TRUE (block);
168+ ASSERT_EQ (block->opcode (), " test_teststr" );
115169 m_builder->captureBlockReturnValue ();
116170
117171 m_builder->addReporterBlock (" test_input" );
118172 m_builder->addValueInput (" INPUT" , -93.4 );
173+ block = m_builder->currentBlock ();
174+ ASSERT_TRUE (block);
175+ ASSERT_EQ (block->opcode (), " test_input" );
176+ ASSERT_EQ (block->inputs ().size (), 1 );
177+ ASSERT_EQ (block->inputAt (0 )->name (), " INPUT" );
119178 m_builder->captureBlockReturnValue ();
120179
121180 m_builder->build ();
0 commit comments