|
9 | 9 | #include <scratchcpp/test/scriptbuilder.h> |
10 | 10 | #include <enginemock.h> |
11 | 11 | #include <targetmock.h> |
| 12 | +#include <audioinputmock.h> |
| 13 | +#include <audioloudnessmock.h> |
12 | 14 |
|
13 | 15 | #include "../common.h" |
14 | 16 | #include "blocks/sensingblocks.h" |
@@ -36,14 +38,26 @@ class SensingBlocksTest : public testing::Test |
36 | 38 | m_extension->registerBlocks(m_engine); |
37 | 39 | m_extension->onInit(m_engine); |
38 | 40 | registerBlocks(m_engine, m_extension.get()); |
| 41 | + |
| 42 | + m_audioLoudness = std::make_shared<AudioLoudnessMock>(); |
| 43 | + SensingBlocks::audioInput = &m_audioInput; |
| 44 | + EXPECT_CALL(m_audioInput, audioLoudness()).WillRepeatedly(Return(m_audioLoudness)); |
39 | 45 | } |
40 | 46 |
|
41 | | - void TearDown() override { SensingBlocks::clearQuestions(); } |
| 47 | + void TearDown() override |
| 48 | + { |
| 49 | + SensingBlocks::clearQuestions(); |
| 50 | + SensingBlocks::audioInput = nullptr; |
| 51 | + } |
42 | 52 |
|
43 | 53 | std::unique_ptr<IExtension> m_extension; |
44 | 54 | Project m_project; |
45 | 55 | IEngine *m_engine = nullptr; |
46 | 56 | EngineMock m_engineMock; |
| 57 | + std::shared_ptr<AudioLoudnessMock> m_audioLoudness; |
| 58 | + |
| 59 | + private: |
| 60 | + AudioInputMock m_audioInput; |
47 | 61 | }; |
48 | 62 |
|
49 | 63 | TEST_F(SensingBlocksTest, TouchingObject_Sprite_CompileTime) |
@@ -1362,3 +1376,23 @@ TEST_F(SensingBlocksTest, SetDragMode_Stage) |
1362 | 1376 |
|
1363 | 1377 | builder.run(); |
1364 | 1378 | } |
| 1379 | + |
| 1380 | +TEST_F(SensingBlocksTest, Loudness) |
| 1381 | +{ |
| 1382 | + auto targetMock = std::make_shared<TargetMock>(); |
| 1383 | + |
| 1384 | + ScriptBuilder builder(m_extension.get(), m_engine, targetMock); |
| 1385 | + builder.addBlock("sensing_loudness"); |
| 1386 | + Block *block = builder.currentBlock(); |
| 1387 | + |
| 1388 | + Compiler compiler(&m_engineMock, targetMock.get()); |
| 1389 | + auto code = compiler.compile(block, Compiler::CodeType::Reporter); |
| 1390 | + Script script(targetMock.get(), block, &m_engineMock); |
| 1391 | + script.setCode(code); |
| 1392 | + Thread thread(targetMock.get(), &m_engineMock, &script); |
| 1393 | + |
| 1394 | + EXPECT_CALL(*m_audioLoudness, getLoudness()).WillOnce(Return(62)); |
| 1395 | + ValueData value = thread.runReporter(); |
| 1396 | + ASSERT_EQ(value_toDouble(&value), 62); |
| 1397 | + value_free(&value); |
| 1398 | +} |
0 commit comments