14namespace tracktion {
inline namespace graph
17#if GRAPH_UNIT_TESTS_PLAYHEADSTATE
25 :
juce::UnitTest (
"PlayHeadStateTests",
"tracktion_graph")
29 void runTest()
override
31 constexpr int64_t blockSize = 44'100;
33 beginTest (
"Loop edges");
36 PlayHeadState playHeadState (playHead);
38 playHead.play ({ 44'100, 176'400 },
true);
40 playHeadState.update (referenceRange);
42 expect (! playHeadState.isContiguousWithPreviousBlock());
43 expect (playHeadState.didPlayheadJump());
44 expect (playHeadState.isFirstBlockOfLoop());
45 expect (! playHeadState.isLastBlockOfLoop());
47 referenceRange += blockSize;
48 playHead.setReferenceSampleRange (referenceRange);
49 playHeadState.update (referenceRange);
51 expect (playHeadState.isContiguousWithPreviousBlock());
52 expect (! playHeadState.didPlayheadJump());
53 expect (! playHeadState.isFirstBlockOfLoop());
54 expect (! playHeadState.isLastBlockOfLoop());
56 referenceRange += blockSize;
57 playHead.setReferenceSampleRange (referenceRange);
58 playHeadState.update (referenceRange);
60 expect (playHeadState.isContiguousWithPreviousBlock());
61 expect (! playHeadState.didPlayheadJump());
62 expect (! playHeadState.isFirstBlockOfLoop());
63 expect (playHeadState.isLastBlockOfLoop());
66 beginTest (
"Not looping");
69 PlayHeadState playHeadState (playHead);
71 playHead.play ({ 44'100, 176'400 },
false);
73 playHeadState.update (referenceRange);
75 expect (! playHeadState.isContiguousWithPreviousBlock());
76 expect (playHeadState.didPlayheadJump());
77 expect (! playHeadState.isFirstBlockOfLoop());
78 expect (! playHeadState.isLastBlockOfLoop());
80 referenceRange += blockSize;
81 playHead.setReferenceSampleRange (referenceRange);
82 playHeadState.update (referenceRange);
84 expect (playHeadState.isContiguousWithPreviousBlock());
85 expect (! playHeadState.didPlayheadJump());
86 expect (! playHeadState.isFirstBlockOfLoop());
87 expect (! playHeadState.isLastBlockOfLoop());
89 referenceRange += blockSize;
90 playHead.setReferenceSampleRange (referenceRange);
91 playHeadState.update (referenceRange);
93 expect (playHeadState.isContiguousWithPreviousBlock());
94 expect (! playHeadState.didPlayheadJump());
95 expect (! playHeadState.isFirstBlockOfLoop());
96 expect (! playHeadState.isLastBlockOfLoop());
101static PlayHeadStateTests playHeadStateTests;
static Range withStartAndLength(const ValueType startValue, const ValueType length) noexcept