@@ -102,6 +102,7 @@ TEST_F(SoundBlocksTest, RegisterBlocks)
102102 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_play" , &SoundBlocks::compilePlay));
103103 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_playuntildone" , &SoundBlocks::compilePlayUntilDone));
104104 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_stopallsounds" , &SoundBlocks::compileStopAllSounds));
105+ EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_seteffectto" , &SoundBlocks::compileSetEffectTo));
105106 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_changevolumeby" , &SoundBlocks::compileChangeVolumeBy));
106107 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_setvolumeto" , &SoundBlocks::compileSetVolumeTo));
107108 EXPECT_CALL (m_engineMock, addCompileFunction (m_section.get (), " sound_volume" , &SoundBlocks::compileVolume));
@@ -111,8 +112,16 @@ TEST_F(SoundBlocksTest, RegisterBlocks)
111112
112113 // Inputs
113114 EXPECT_CALL (m_engineMock, addInput (m_section.get (), " SOUND_MENU" , SoundBlocks::SOUND_MENU));
115+ EXPECT_CALL (m_engineMock, addInput (m_section.get (), " VALUE" , SoundBlocks::VALUE));
114116 EXPECT_CALL (m_engineMock, addInput (m_section.get (), " VOLUME" , SoundBlocks::VOLUME));
115117
118+ // Fields
119+ EXPECT_CALL (m_engineMock, addField (m_section.get (), " EFFECT" , SoundBlocks::EFFECT));
120+
121+ // Field values
122+ EXPECT_CALL (m_engineMock, addFieldValue (m_section.get (), " PITCH" , SoundBlocks::PITCH));
123+ EXPECT_CALL (m_engineMock, addFieldValue (m_section.get (), " PAN" , SoundBlocks::PAN));
124+
116125 m_section->registerBlocks (&m_engineMock);
117126}
118127
@@ -589,6 +598,63 @@ TEST_F(SoundBlocksTest, StopAllSoundsImpl)
589598 ASSERT_EQ (vm.registerCount (), 0 );
590599}
591600
601+ TEST_F (SoundBlocksTest, SetEffectTo)
602+ {
603+ Compiler compiler (&m_engineMock);
604+
605+ // set [pitch] effect to (5.3)
606+ auto block1 = std::make_shared<Block>(" a" , " sound_seteffectto" );
607+ addDropdownField (block1, " EFFECT" , SoundBlocks::EFFECT, " PITCH" , SoundBlocks::PITCH);
608+ addValueInput (block1, " VALUE" , SoundBlocks::VALUE, 5.3 );
609+
610+ // set [pan] effect to (-79.52)
611+ auto block2 = std::make_shared<Block>(" b" , " sound_seteffectto" );
612+ addDropdownField (block2, " EFFECT" , SoundBlocks::EFFECT, " PAN" , SoundBlocks::PAN);
613+ addValueInput (block2, " VALUE" , SoundBlocks::VALUE, -79.52 );
614+
615+ compiler.init ();
616+
617+ EXPECT_CALL (m_engineMock, functionIndex (&SoundBlocks::setPitchEffectTo)).WillOnce (Return (0 ));
618+ compiler.setBlock (block1);
619+ SoundBlocks::compileSetEffectTo (&compiler);
620+
621+ EXPECT_CALL (m_engineMock, functionIndex (&SoundBlocks::setPanEffectTo)).WillOnce (Return (1 ));
622+ compiler.setBlock (block2);
623+ SoundBlocks::compileSetEffectTo (&compiler);
624+
625+ compiler.end ();
626+
627+ ASSERT_EQ (compiler.bytecode (), std::vector<unsigned int >({ vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_CONST, 1 , vm::OP_EXEC, 1 , vm::OP_HALT }));
628+ ASSERT_EQ (compiler.constValues (), std::vector<Value>({ 5.3 , -79.52 }));
629+ }
630+
631+ TEST_F (SoundBlocksTest, SetEffectToImpl)
632+ {
633+ static unsigned int bytecode1[] = { vm::OP_START, vm::OP_CONST, 0 , vm::OP_EXEC, 0 , vm::OP_HALT };
634+ static unsigned int bytecode2[] = { vm::OP_START, vm::OP_CONST, 1 , vm::OP_EXEC, 1 , vm::OP_HALT };
635+ static BlockFunc functions[] = { &SoundBlocks::setPitchEffectTo, &SoundBlocks::setPanEffectTo };
636+ static Value constValues[] = { -20.7 , 12.53 };
637+
638+ TargetMock target;
639+ VirtualMachine vm (&target, nullptr , nullptr );
640+
641+ vm.setBytecode (bytecode1);
642+ vm.setFunctions (functions);
643+ vm.setConstValues (constValues);
644+
645+ EXPECT_CALL (target, setSoundEffect (Sound::Effect::Pitch, -20.7 ));
646+ vm.run ();
647+
648+ ASSERT_EQ (vm.registerCount (), 0 );
649+
650+ EXPECT_CALL (target, setSoundEffect (Sound::Effect::Pan, 12.53 ));
651+ vm.reset ();
652+ vm.setBytecode (bytecode2);
653+ vm.run ();
654+
655+ ASSERT_EQ (vm.registerCount (), 0 );
656+ }
657+
592658TEST_F (SoundBlocksTest, ChangeVolumeBy)
593659{
594660 Compiler compiler (&m_engineMock);
0 commit comments