|
13 | 13 | #include <audioinputmock.h> |
14 | 14 | #include <audioloudnessmock.h> |
15 | 15 | #include <timermock.h> |
| 16 | +#include <clockmock.h> |
16 | 17 |
|
17 | 18 | #include "../common.h" |
18 | 19 | #include "blocks/sensingblocks.h" |
@@ -44,19 +45,23 @@ class SensingBlocksTest : public testing::Test |
44 | 45 | m_audioLoudness = std::make_shared<AudioLoudnessMock>(); |
45 | 46 | SensingBlocks::audioInput = &m_audioInput; |
46 | 47 | EXPECT_CALL(m_audioInput, audioLoudness()).WillRepeatedly(Return(m_audioLoudness)); |
| 48 | + |
| 49 | + SensingBlocks::clock = &m_clock; |
47 | 50 | } |
48 | 51 |
|
49 | 52 | void TearDown() override |
50 | 53 | { |
51 | 54 | SensingBlocks::clearQuestions(); |
52 | 55 | SensingBlocks::audioInput = nullptr; |
| 56 | + SensingBlocks::clock = nullptr; |
53 | 57 | } |
54 | 58 |
|
55 | 59 | std::unique_ptr<IExtension> m_extension; |
56 | 60 | Project m_project; |
57 | 61 | IEngine *m_engine = nullptr; |
58 | 62 | EngineMock m_engineMock; |
59 | 63 | std::shared_ptr<AudioLoudnessMock> m_audioLoudness; |
| 64 | + ClockMock m_clock; |
60 | 65 |
|
61 | 66 | private: |
62 | 67 | AudioInputMock m_audioInput; |
@@ -2745,3 +2750,25 @@ TEST_F(SensingBlocksTest, Current_Invalid) |
2745 | 2750 | ASSERT_EQ(value_toDouble(&value), 0.0); |
2746 | 2751 | value_free(&value); |
2747 | 2752 | } |
| 2753 | + |
| 2754 | +TEST_F(SensingBlocksTest, DaysSince2000) |
| 2755 | +{ |
| 2756 | + auto targetMock = std::make_shared<TargetMock>(); |
| 2757 | + |
| 2758 | + ScriptBuilder builder(m_extension.get(), m_engine, targetMock); |
| 2759 | + builder.addBlock("sensing_dayssince2000"); |
| 2760 | + Block *block = builder.currentBlock(); |
| 2761 | + |
| 2762 | + Compiler compiler(&m_engineMock, targetMock.get()); |
| 2763 | + auto code = compiler.compile(block, Compiler::CodeType::Reporter); |
| 2764 | + Script script(targetMock.get(), block, &m_engineMock); |
| 2765 | + script.setCode(code); |
| 2766 | + Thread thread(targetMock.get(), &m_engineMock, &script); |
| 2767 | + |
| 2768 | + std::chrono::system_clock::time_point time(std::chrono::milliseconds(1011243120562)); // Jan 17 2002 04:52:00 |
| 2769 | + EXPECT_CALL(m_clock, currentSystemTime()).WillOnce(Return(time)); |
| 2770 | + |
| 2771 | + ValueData value = thread.runReporter(); |
| 2772 | + ASSERT_EQ(value_toDouble(&value), 747.20278428240817); |
| 2773 | + value_free(&value); |
| 2774 | +} |
0 commit comments