@@ -1952,3 +1952,128 @@ TEST_F(PenBlocksTest, SetPenColorParamTo_Stage)
19521952 EXPECT_EQ (model.penAttributes ().color .blue (), 149 );
19531953 EXPECT_EQ (model.penAttributes ().color .alpha (), 255 );
19541954}
1955+
1956+ TEST_F (PenBlocksTest, ChangePenSizeBy)
1957+ {
1958+ auto sprite = std::make_shared<Sprite>();
1959+ sprite->setEngine (&m_engineMock);
1960+
1961+ RenderedTarget renderedTarget;
1962+ SpriteModel model;
1963+ model.init (sprite.get ());
1964+ model.setRenderedTarget (&renderedTarget);
1965+ sprite->setInterface (&model);
1966+
1967+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1968+ builder.addBlock (" pen_changePenSizeBy" );
1969+ builder.addValueInput (" SIZE" , 511.5 );
1970+
1971+ model.penAttributes ().diameter = 2.3 ;
1972+
1973+ auto thread = buildScript (builder, sprite.get ());
1974+
1975+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
1976+
1977+ thread->run ();
1978+ ASSERT_EQ (model.penAttributes ().diameter , 513.8 );
1979+ }
1980+
1981+ TEST_F (PenBlocksTest, ChangePenSizeBy_Negative)
1982+ {
1983+ auto sprite = std::make_shared<Sprite>();
1984+ sprite->setEngine (&m_engineMock);
1985+
1986+ RenderedTarget renderedTarget;
1987+ SpriteModel model;
1988+ model.init (sprite.get ());
1989+ model.setRenderedTarget (&renderedTarget);
1990+ sprite->setInterface (&model);
1991+
1992+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
1993+ builder.addBlock (" pen_changePenSizeBy" );
1994+ builder.addValueInput (" SIZE" , -0.5 );
1995+
1996+ model.penAttributes ().diameter = 2.3 ;
1997+
1998+ auto thread = buildScript (builder, sprite.get ());
1999+
2000+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2001+
2002+ thread->run ();
2003+ ASSERT_EQ (std::round (model.penAttributes ().diameter * 100 ) / 100 , 1.8 );
2004+ }
2005+
2006+ TEST_F (PenBlocksTest, ChangePenSizeBy_AboveMaximum)
2007+ {
2008+ auto sprite = std::make_shared<Sprite>();
2009+ sprite->setEngine (&m_engineMock);
2010+
2011+ RenderedTarget renderedTarget;
2012+ SpriteModel model;
2013+ model.init (sprite.get ());
2014+ model.setRenderedTarget (&renderedTarget);
2015+ sprite->setInterface (&model);
2016+
2017+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2018+ builder.addBlock (" pen_changePenSizeBy" );
2019+ builder.addValueInput (" SIZE" , 687.2 );
2020+
2021+ model.penAttributes ().diameter = 513.8 ;
2022+
2023+ auto thread = buildScript (builder, sprite.get ());
2024+
2025+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2026+
2027+ thread->run ();
2028+ ASSERT_EQ (model.penAttributes ().diameter , 1200 );
2029+ }
2030+
2031+ TEST_F (PenBlocksTest, ChangePenSizeBy_BelowMinimum)
2032+ {
2033+ auto sprite = std::make_shared<Sprite>();
2034+ sprite->setEngine (&m_engineMock);
2035+
2036+ RenderedTarget renderedTarget;
2037+ SpriteModel model;
2038+ model.init (sprite.get ());
2039+ model.setRenderedTarget (&renderedTarget);
2040+ sprite->setInterface (&model);
2041+
2042+ ScriptBuilder builder (m_extension.get (), m_engine, sprite);
2043+ builder.addBlock (" pen_changePenSizeBy" );
2044+ builder.addValueInput (" SIZE" , -13 );
2045+
2046+ model.penAttributes ().diameter = 12.5 ;
2047+
2048+ auto thread = buildScript (builder, sprite.get ());
2049+
2050+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2051+
2052+ thread->run ();
2053+ ASSERT_EQ (model.penAttributes ().diameter , 1 );
2054+ }
2055+
2056+ TEST_F (PenBlocksTest, ChangePenSizeBy_Stage)
2057+ {
2058+ auto stage = std::make_shared<Stage>();
2059+ stage->setEngine (&m_engineMock);
2060+
2061+ RenderedTarget renderedTarget;
2062+ StageModel model;
2063+ model.init (stage.get ());
2064+ model.setRenderedTarget (&renderedTarget);
2065+ stage->setInterface (&model);
2066+
2067+ ScriptBuilder builder (m_extension.get (), m_engine, stage);
2068+ builder.addBlock (" pen_changePenSizeBy" );
2069+ builder.addValueInput (" SIZE" , 511.5 );
2070+
2071+ model.penAttributes ().diameter = 2.3 ;
2072+
2073+ auto thread = buildScript (builder, stage.get ());
2074+
2075+ EXPECT_CALL (m_engineMock, requestRedraw).Times (0 );
2076+
2077+ thread->run ();
2078+ ASSERT_EQ (model.penAttributes ().diameter , 513.8 );
2079+ }
0 commit comments