Skip to content

Commit d769712

Browse files
authored
Merge pull request #463 from scratchcpp/fix_looks_seteffectto
Fix #457: Use correct input name in the set effect block
2 parents 265adf1 + c716c62 commit d769712

File tree

2 files changed

+68
-25
lines changed

2 files changed

+68
-25
lines changed

src/blocks/looksblocks.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,55 +179,55 @@ void LooksBlocks::compileSetEffectTo(Compiler *compiler)
179179
if (!m_colorEffect)
180180
m_colorEffect = ScratchConfiguration::getGraphicsEffect("color");
181181

182-
compiler->addInput(CHANGE);
182+
compiler->addInput(VALUE);
183183
compiler->addFunctionCall(&setColorEffectTo);
184184
break;
185185

186186
case FisheyeEffect:
187187
if (!m_fisheyeEffect)
188188
m_fisheyeEffect = ScratchConfiguration::getGraphicsEffect("fisheye");
189189

190-
compiler->addInput(CHANGE);
190+
compiler->addInput(VALUE);
191191
compiler->addFunctionCall(&setFisheyeEffectTo);
192192
break;
193193

194194
case WhirlEffect:
195195
if (!m_whirlEffect)
196196
m_whirlEffect = ScratchConfiguration::getGraphicsEffect("whirl");
197197

198-
compiler->addInput(CHANGE);
198+
compiler->addInput(VALUE);
199199
compiler->addFunctionCall(&setWhirlEffectTo);
200200
break;
201201

202202
case PixelateEffect:
203203
if (!m_pixelateEffect)
204204
m_pixelateEffect = ScratchConfiguration::getGraphicsEffect("pixelate");
205205

206-
compiler->addInput(CHANGE);
206+
compiler->addInput(VALUE);
207207
compiler->addFunctionCall(&setPixelateEffectTo);
208208
break;
209209

210210
case MosaicEffect:
211211
if (!m_mosaicEffect)
212212
m_mosaicEffect = ScratchConfiguration::getGraphicsEffect("mosaic");
213213

214-
compiler->addInput(CHANGE);
214+
compiler->addInput(VALUE);
215215
compiler->addFunctionCall(&setMosaicEffectTo);
216216
break;
217217

218218
case BrightnessEffect:
219219
if (!m_brightnessEffect)
220220
m_brightnessEffect = ScratchConfiguration::getGraphicsEffect("brightness");
221221

222-
compiler->addInput(CHANGE);
222+
compiler->addInput(VALUE);
223223
compiler->addFunctionCall(&setBrightnessEffectTo);
224224
break;
225225

226226
case GhostEffect:
227227
if (!m_ghostEffect)
228228
m_ghostEffect = ScratchConfiguration::getGraphicsEffect("ghost");
229229

230-
compiler->addInput(CHANGE);
230+
compiler->addInput(VALUE);
231231
compiler->addFunctionCall(&setGhostEffectTo);
232232
break;
233233

@@ -245,7 +245,7 @@ void LooksBlocks::compileSetEffectTo(Compiler *compiler)
245245
index = it - m_customGraphicsEffects.begin();
246246

247247
compiler->addConstValue(index);
248-
compiler->addInput(CHANGE);
248+
compiler->addInput(VALUE);
249249
compiler->addFunctionCall(&setEffectTo);
250250
}
251251

test/blocks/looks_blocks_test.cpp

Lines changed: 60 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,36 @@ TEST_F(LooksBlocksTest, ChangeEffectBy)
403403

404404
static void initEffects()
405405
{
406+
// Create and register fake graphics effects
407+
auto colorEffect = std::make_shared<GraphicsEffectMock>();
408+
auto fisheyeEffect = std::make_shared<GraphicsEffectMock>();
409+
auto whirlEffect = std::make_shared<GraphicsEffectMock>();
410+
auto pixelateEffect = std::make_shared<GraphicsEffectMock>();
411+
auto mosaicEffect = std::make_shared<GraphicsEffectMock>();
412+
auto brightnessEffect = std::make_shared<GraphicsEffectMock>();
413+
auto ghostEffect = std::make_shared<GraphicsEffectMock>();
414+
415+
EXPECT_CALL(*colorEffect, name()).WillOnce(Return("color"));
416+
ScratchConfiguration::registerGraphicsEffect(colorEffect);
417+
418+
EXPECT_CALL(*fisheyeEffect, name()).WillOnce(Return("fisheye"));
419+
ScratchConfiguration::registerGraphicsEffect(fisheyeEffect);
420+
421+
EXPECT_CALL(*whirlEffect, name()).WillOnce(Return("whirl"));
422+
ScratchConfiguration::registerGraphicsEffect(whirlEffect);
423+
424+
EXPECT_CALL(*pixelateEffect, name()).WillOnce(Return("pixelate"));
425+
ScratchConfiguration::registerGraphicsEffect(pixelateEffect);
426+
427+
EXPECT_CALL(*mosaicEffect, name()).WillOnce(Return("mosaic"));
428+
ScratchConfiguration::registerGraphicsEffect(mosaicEffect);
429+
430+
EXPECT_CALL(*brightnessEffect, name()).WillOnce(Return("brightness"));
431+
ScratchConfiguration::registerGraphicsEffect(brightnessEffect);
432+
433+
EXPECT_CALL(*ghostEffect, name()).WillOnce(Return("ghost"));
434+
ScratchConfiguration::registerGraphicsEffect(ghostEffect);
435+
406436
LooksBlocks::m_colorEffect = ScratchConfiguration::getGraphicsEffect("color");
407437
LooksBlocks::m_fisheyeEffect = ScratchConfiguration::getGraphicsEffect("fisheye");
408438
LooksBlocks::m_whirlEffect = ScratchConfiguration::getGraphicsEffect("whirl");
@@ -412,6 +442,17 @@ static void initEffects()
412442
LooksBlocks::m_ghostEffect = ScratchConfiguration::getGraphicsEffect("ghost");
413443
}
414444

445+
static void removeEffects()
446+
{
447+
ScratchConfiguration::removeGraphicsEffect("color");
448+
ScratchConfiguration::removeGraphicsEffect("fisheye");
449+
ScratchConfiguration::removeGraphicsEffect("whirl");
450+
ScratchConfiguration::removeGraphicsEffect("pixelate");
451+
ScratchConfiguration::removeGraphicsEffect("mosaic");
452+
ScratchConfiguration::removeGraphicsEffect("brightness");
453+
ScratchConfiguration::removeGraphicsEffect("ghost");
454+
}
455+
415456
TEST_F(LooksBlocksTest, ChangeEffectByImpl)
416457
{
417458
static unsigned int bytecode1[] = { vm::OP_START, vm::OP_CONST, 0, vm::OP_CONST, 1, vm::OP_EXEC, 0, vm::OP_HALT };
@@ -466,9 +507,8 @@ TEST_F(LooksBlocksTest, ChangeEffectByImpl)
466507
sprite.setGraphicsEffectValue(ScratchConfiguration::getGraphicsEffect("brightness"), -0.01);
467508
sprite.setGraphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost"), 45.78);
468509

469-
// TODO: Uncomment commented lines (#283, #284, #285, #286, #287, #288, #289)
470510
// color
471-
/*vm.reset();
511+
vm.reset();
472512
vm.setBytecode(bytecode3);
473513
vm.run();
474514

@@ -481,7 +521,7 @@ TEST_F(LooksBlocksTest, ChangeEffectByImpl)
481521
vm.run();
482522

483523
ASSERT_EQ(vm.registerCount(), 0);
484-
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("fisheye")), -6.15);
524+
ASSERT_EQ(std::round(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("fisheye")) * 100) / 100, -6.15);
485525

486526
// whirl
487527
vm.reset();
@@ -513,15 +553,17 @@ TEST_F(LooksBlocksTest, ChangeEffectByImpl)
513553
vm.run();
514554

515555
ASSERT_EQ(vm.registerCount(), 0);
516-
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("brightness")), -8.55);
556+
ASSERT_EQ(std::round(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("brightness")) * 100) / 100, -8.55);
517557

518558
// ghost
519559
vm.reset();
520560
vm.setBytecode(bytecode9);
521561
vm.run();
522562

523563
ASSERT_EQ(vm.registerCount(), 0);
524-
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost")), 45.79);*/
564+
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost")), 45.79);
565+
566+
removeEffects();
525567
}
526568

527569
TEST_F(LooksBlocksTest, SetEffectTo)
@@ -531,47 +573,47 @@ TEST_F(LooksBlocksTest, SetEffectTo)
531573
// set [custom1] effect to 12.5
532574
auto block1 = std::make_shared<Block>("a", "looks_seteffectto");
533575
addDropdownField(block1, "EFFECT", LooksBlocks::EFFECT, "custom1", static_cast<LooksBlocks::FieldValues>(-1));
534-
addValueInput(block1, "CHANGE", LooksBlocks::CHANGE, 12.5);
576+
addValueInput(block1, "VALUE", LooksBlocks::VALUE, 12.5);
535577

536578
// set [custom2] effect to -78.15
537579
auto block2 = std::make_shared<Block>("b", "looks_seteffectto");
538580
addDropdownField(block2, "EFFECT", LooksBlocks::EFFECT, "custom2", static_cast<LooksBlocks::FieldValues>(-1));
539-
addValueInput(block2, "CHANGE", LooksBlocks::CHANGE, -78.15);
581+
addValueInput(block2, "VALUE", LooksBlocks::VALUE, -78.15);
540582

541583
// set [color] effect to 154.152
542584
auto block3 = std::make_shared<Block>("c", "looks_seteffectto");
543585
addDropdownField(block3, "EFFECT", LooksBlocks::EFFECT, "color", LooksBlocks::ColorEffect);
544-
addValueInput(block3, "CHANGE", LooksBlocks::CHANGE, 154.152);
586+
addValueInput(block3, "VALUE", LooksBlocks::VALUE, 154.152);
545587

546588
// set [fisheye] effect to -124.054
547589
auto block4 = std::make_shared<Block>("d", "looks_seteffectto");
548590
addDropdownField(block4, "EFFECT", LooksBlocks::EFFECT, "fisheye", LooksBlocks::FisheyeEffect);
549-
addValueInput(block4, "CHANGE", LooksBlocks::CHANGE, -124.054);
591+
addValueInput(block4, "VALUE", LooksBlocks::VALUE, -124.054);
550592

551593
// set [whirl] effect to 45.858
552594
auto block5 = std::make_shared<Block>("e", "looks_seteffectto");
553595
addDropdownField(block5, "EFFECT", LooksBlocks::EFFECT, "whirl", LooksBlocks::WhirlEffect);
554-
addValueInput(block5, "CHANGE", LooksBlocks::CHANGE, 45.858);
596+
addValueInput(block5, "VALUE", LooksBlocks::VALUE, 45.858);
555597

556598
// set [pixelate] effect to -0.15
557599
auto block6 = std::make_shared<Block>("f", "looks_seteffectto");
558600
addDropdownField(block6, "EFFECT", LooksBlocks::EFFECT, "pixelate", LooksBlocks::PixelateEffect);
559-
addValueInput(block6, "CHANGE", LooksBlocks::CHANGE, -0.15);
601+
addValueInput(block6, "VALUE", LooksBlocks::VALUE, -0.15);
560602

561603
// set [mosaic] effect to 0.84
562604
auto block7 = std::make_shared<Block>("g", "looks_seteffectto");
563605
addDropdownField(block7, "EFFECT", LooksBlocks::EFFECT, "mosaic", LooksBlocks::MosaicEffect);
564-
addValueInput(block7, "CHANGE", LooksBlocks::CHANGE, 0.84);
606+
addValueInput(block7, "VALUE", LooksBlocks::VALUE, 0.84);
565607

566608
// set [brightness] effect to 40.87
567609
auto block8 = std::make_shared<Block>("h", "looks_seteffectto");
568610
addDropdownField(block8, "EFFECT", LooksBlocks::EFFECT, "brightness", LooksBlocks::BrightnessEffect);
569-
addValueInput(block8, "CHANGE", LooksBlocks::CHANGE, 40.87);
611+
addValueInput(block8, "VALUE", LooksBlocks::VALUE, 40.87);
570612

571613
// set [ghost] effect to 50.04
572614
auto block9 = std::make_shared<Block>("i", "looks_seteffectto");
573615
addDropdownField(block9, "EFFECT", LooksBlocks::EFFECT, "ghost", LooksBlocks::GhostEffect);
574-
addValueInput(block9, "CHANGE", LooksBlocks::CHANGE, 50.04);
616+
addValueInput(block9, "VALUE", LooksBlocks::VALUE, 50.04);
575617

576618
auto effect1 = std::make_shared<GraphicsEffectMock>();
577619
auto effect2 = std::make_shared<GraphicsEffectMock>();
@@ -741,9 +783,8 @@ TEST_F(LooksBlocksTest, SetEffectToImpl)
741783
sprite.setGraphicsEffectValue(ScratchConfiguration::getGraphicsEffect("brightness"), -0.01);
742784
sprite.setGraphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost"), 45.78);
743785

744-
// TODO: Uncomment commented lines (#283, #284, #285, #286, #287, #288, #289)
745786
// color
746-
/*vm.reset();
787+
vm.reset();
747788
vm.setBytecode(bytecode3);
748789
vm.run();
749790

@@ -796,7 +837,9 @@ TEST_F(LooksBlocksTest, SetEffectToImpl)
796837
vm.run();
797838

798839
ASSERT_EQ(vm.registerCount(), 0);
799-
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost")), 0.01);*/
840+
ASSERT_EQ(sprite.graphicsEffectValue(ScratchConfiguration::getGraphicsEffect("ghost")), 0.01);
841+
842+
removeEffects();
800843
}
801844

802845
TEST_F(LooksBlocksTest, ClearGraphicEffects)

0 commit comments

Comments
 (0)