@@ -2077,3 +2077,128 @@ TEST_F(PenBlocksTest, ChangePenSizeBy_Stage)
20772077 thread->run ();
20782078 ASSERT_EQ (model.penAttributes ().diameter , 513.8 );
20792079}
2080+
2081+ TEST_F (PenBlocksTest, SetPenSizeTo)
2082+ {
2083+ auto sprite = std::make_shared<Sprite>();
2084+ sprite->setEngine (&m_engineMock);
2085+
2086+ RenderedTarget renderedTarget;
2087+ SpriteModel model;
2088+ model.init (sprite.get ());
2089+ model.setRenderedTarget (&renderedTarget);
2090+ sprite->setInterface (&model);
2091+
2092+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2093+ builder.addBlock (" pen_setPenSizeTo" );
2094+ builder.addValueInput (" SIZE" , 511.5 );
2095+
2096+ model.penAttributes ().diameter = 2.3 ;
2097+
2098+ auto thread = buildScript (builder, sprite.get ());
2099+
2100+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2101+
2102+ thread->run ();
2103+ ASSERT_EQ (model.penAttributes ().diameter , 511.5 );
2104+ }
2105+
2106+ TEST_F (PenBlocksTest, SetPenSizeTo_Negative)
2107+ {
2108+ auto sprite = std::make_shared<Sprite>();
2109+ sprite->setEngine (&m_engineMock);
2110+
2111+ RenderedTarget renderedTarget;
2112+ SpriteModel model;
2113+ model.init (sprite.get ());
2114+ model.setRenderedTarget (&renderedTarget);
2115+ sprite->setInterface (&model);
2116+
2117+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2118+ builder.addBlock (" pen_setPenSizeTo" );
2119+ builder.addValueInput (" SIZE" , -0.5 );
2120+
2121+ model.penAttributes ().diameter = 2.3 ;
2122+
2123+ auto thread = buildScript (builder, sprite.get ());
2124+
2125+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2126+
2127+ thread->run ();
2128+ ASSERT_EQ (model.penAttributes ().diameter , 1 );
2129+ }
2130+
2131+ TEST_F (PenBlocksTest, SetPenSizeTo_AboveMaximum)
2132+ {
2133+ auto sprite = std::make_shared<Sprite>();
2134+ sprite->setEngine (&m_engineMock);
2135+
2136+ RenderedTarget renderedTarget;
2137+ SpriteModel model;
2138+ model.init (sprite.get ());
2139+ model.setRenderedTarget (&renderedTarget);
2140+ sprite->setInterface (&model);
2141+
2142+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2143+ builder.addBlock (" pen_setPenSizeTo" );
2144+ builder.addValueInput (" SIZE" , 1200.6 );
2145+
2146+ model.penAttributes ().diameter = 513.8 ;
2147+
2148+ auto thread = buildScript (builder, sprite.get ());
2149+
2150+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2151+
2152+ thread->run ();
2153+ ASSERT_EQ (model.penAttributes ().diameter , 1200 );
2154+ }
2155+
2156+ TEST_F (PenBlocksTest, SetPenSizeTo_BelowMinimum)
2157+ {
2158+ auto sprite = std::make_shared<Sprite>();
2159+ sprite->setEngine (&m_engineMock);
2160+
2161+ RenderedTarget renderedTarget;
2162+ SpriteModel model;
2163+ model.init (sprite.get ());
2164+ model.setRenderedTarget (&renderedTarget);
2165+ sprite->setInterface (&model);
2166+
2167+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2168+ builder.addBlock (" pen_setPenSizeTo" );
2169+ builder.addValueInput (" SIZE" , 0.5 );
2170+
2171+ model.penAttributes ().diameter = 12.5 ;
2172+
2173+ auto thread = buildScript (builder, sprite.get ());
2174+
2175+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2176+
2177+ thread->run ();
2178+ ASSERT_EQ (model.penAttributes ().diameter , 1 );
2179+ }
2180+
2181+ TEST_F (PenBlocksTest, SetPenSizeTo_Stage)
2182+ {
2183+ auto stage = std::make_shared<Stage>();
2184+ stage->setEngine (&m_engineMock);
2185+
2186+ RenderedTarget renderedTarget;
2187+ StageModel model;
2188+ model.init (stage.get ());
2189+ model.setRenderedTarget (&renderedTarget);
2190+ stage->setInterface (&model);
2191+
2192+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
2193+ builder.addBlock (" pen_setPenSizeTo" );
2194+ builder.addValueInput (" SIZE" , 511.5 );
2195+
2196+ model.penAttributes ().diameter = 2.3 ;
2197+
2198+ auto thread = buildScript (builder, stage.get ());
2199+
2200+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2201+
2202+ thread->run ();
2203+ ASSERT_EQ (model.penAttributes ().diameter , 511.5 );
2204+ }
0 commit comments