Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | 1x 1x 1x 1x 1x 1x | import { Machine } from '../../src/index'; import { testAll } from '../utils'; describe('Example: CD Player', () => { const machine = Machine({ key: 'cd', initial: 'not_loaded', states: { not_loaded: { on: { INSERT_CD: 'loaded' } }, loaded: { initial: 'stopped', on: { EJECT: 'not_loaded' }, states: { stopped: { on: { PLAY: 'playing' } }, playing: { on: { STOP: 'stopped', EXPIRED_END: 'stopped', EXPIRED_MID: 'playing', PAUSE: 'paused' } }, paused: { initial: 'not_blank', states: { blank: { on: { TIMER: 'not_blank' } }, not_blank: { on: { TIMER: 'blank' } } }, on: { PAUSE: 'playing', PLAY: 'playing', STOP: 'stopped' } } } } } }); const expected = { not_loaded: { INSERT_CD: 'loaded.stopped', FAKE: undefined }, loaded: { EJECT: 'not_loaded', FAKE: undefined }, 'loaded.stopped': { PLAY: 'loaded.playing', EJECT: 'not_loaded', FAKE: undefined }, 'loaded.playing': { EXPIRED_MID: 'loaded.playing', EXPIRED_END: 'loaded.stopped', STOP: 'loaded.stopped', EJECT: 'not_loaded', PAUSE: 'loaded.paused.not_blank', FAKE: undefined }, 'loaded.paused': { PAUSE: 'loaded.playing', PLAY: 'loaded.playing', TIMER: 'loaded.paused.blank', EJECT: 'not_loaded', STOP: 'loaded.stopped' }, 'loaded.paused.blank': { PAUSE: 'loaded.playing', PLAY: 'loaded.playing', TIMER: 'loaded.paused.not_blank', EJECT: 'not_loaded', STOP: 'loaded.stopped' } }; testAll(machine, expected); }); |