diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index cff764eb..f2b255d2 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -36,6 +36,9 @@ import { id, ply, } from '../index.mjs'; + +import { steady } from '../signal.mjs'; + //import { Time } from 'tone'; import pkg from 'tone'; const { Time } = pkg; @@ -108,6 +111,18 @@ describe('Hap', function () { assert.deepStrictEqual(state3, { incrementme: 12 }); }); }); + describe('wholeOrPart()', () => { + const ts1 = new TimeSpan(Fraction(0), Fraction(1)); + const ts0_5 = new TimeSpan(Fraction(0), Fraction(0.5)); + const continuousHap = new Hap(undefined, ts1, 'hello'); + const discreteHap = new Hap(ts1, ts0_5, 'hello'); + it('Can pick a whole', () => { + assert.deepStrictEqual(discreteHap.wholeOrPart(), ts1); + }); + it('Can pick a part', () => { + assert.deepStrictEqual(continuousHap.wholeOrPart(), ts1); + }); + }); }); describe('Pattern', function () { @@ -399,7 +414,7 @@ describe('Pattern', function () { }); }); describe('struct()', function () { - it('Can restructure a pattern', function () { + it('Can restructure a discrete pattern', function () { assert.deepStrictEqual(sequence('a', 'b').struct(sequence(true, true, true)).firstCycle(), [ hap(ts(0, third), ts(0, third), 'a'), hap(ts(third, twothirds), ts(third, 0.5), 'a'), @@ -425,6 +440,9 @@ describe('Pattern', function () { sequence('a', ['a', silence], 'a').firstCycle(), ); }); + it('Can structure a continuous pattern', () => { + assert.deepStrictEqual(steady('a').struct(true, [true, true]).firstCycle(), sequence('a', ['a', 'a']).firstCycle()); + }); }); describe('mask()', function () { it('Can fragment a pattern', function () {