midi-player-demo / src /common /player /EventScheduler.test.ts
Yann
test
f23825d
import { filterEventsWithRange } from "../helpers/filterEvents"
import EventScheduler from "./EventScheduler"
describe("EventScheduler", () => {
it("readNextEvents", () => {
const events = [{ tick: 0 }, { tick: 100 }, { tick: 110 }]
const s = new EventScheduler(
(start, end) => filterEventsWithRange(events, start, end),
() => [],
0,
480,
100,
)
// ๅ…ˆ่ชญใฟๆ™‚้–“ๅˆ†ใฎใ‚คใƒ™ใƒณใƒˆใŒๅ…ฅใฃใฆใ„ใ‚‹
// There are events for read ahead time
{
const result = s.readNextEvents(120, 0)
expect(result.length).toBe(1)
expect(result[0].event).toBe(events[0])
}
// ๅ‰ๅ›žใ‹ใ‚‰ๆ™‚้–“ใŒ็ตŒ้Žใ—ใฆใชใ‘ใ‚Œใฐใ‚คใƒ™ใƒณใƒˆใฏใชใ„
// There is no event if time has passed since last time
{
const result = s.readNextEvents(120, 0)
expect(result.length).toBe(0)
}
// ๆ™‚้–“ใŒ็ตŒ้Žใ™ใ‚‹ใจ2ๅ€‹็›ฎไปฅ้™ใฎใ‚คใƒ™ใƒณใƒˆใŒ่ฟ”ใฃใฆใใ‚‹
// If time has passed, the second or later events will come back
{
const result = s.readNextEvents(120, 120)
expect(result.length).toBe(2)
expect(result[0].event).toBe(events[1])
expect(result[0].timestamp).toBe(120)
expect(result[1].event).toBe(events[2])
expect(result[1].timestamp).toBe(120)
}
})
})