From 065f4191f0ff8e6141440bbbdf6a9401e29765a3 Mon Sep 17 00:00:00 2001 From: alex Date: Sun, 1 May 2022 17:34:47 +0100 Subject: [PATCH] Rename TrigZero -> Trigzero, + more composer tests --- packages/core/pattern.mjs | 14 ++-- packages/core/test/pattern.test.mjs | 106 +++++++++++++++++++++++++--- 2 files changed, 104 insertions(+), 16 deletions(-) diff --git a/packages/core/pattern.mjs b/packages/core/pattern.mjs index 39c9519b..b9af52cb 100644 --- a/packages/core/pattern.mjs +++ b/packages/core/pattern.mjs @@ -282,9 +282,9 @@ export class Pattern { const otherPat = reify(other); return otherPat.fmap((b) => this.fmap((a) => func(a)(b)))._trigJoin(); } - _opTrigZero(other, func) { + _opTrigzero(other, func) { const otherPat = reify(other); - return otherPat.fmap((b) => this.fmap((a) => func(a)(b)))._trigZeroJoin(); + return otherPat.fmap((b) => this.fmap((a) => func(a)(b)))._TrigzeroJoin(); } _asNumber(silent = false) { @@ -416,7 +416,7 @@ export class Pattern { return ( outer_hap.value // trig = align the inner pattern cycle start to outer pattern events - // trigZero = align the inner pattern cycle zero to outer pattern events + // Trigzero = align the inner pattern cycle zero to outer pattern events .late(cycleZero ? outer_hap.whole.begin : outer_hap.whole.begin.cyclePos()) .query(state) .map((inner_hap) => @@ -436,7 +436,7 @@ export class Pattern { }); } - _trigZeroJoin() { + _TrigzeroJoin() { return this._trigJoin(true); } @@ -854,7 +854,7 @@ const composers = { // generate methods to do what and how for (const [what, op] of Object.entries(composers)) { - for (const how of ['In', 'Out', 'Mix', 'Squeeze', 'SqueezeOut', 'Trig', 'TrigZero']) { + for (const how of ['In', 'Out', 'Mix', 'Squeeze', 'SqueezeOut', 'Trig', 'Trigzero']) { Pattern.prototype[what + how] = function (...other) { var result = this['_op' + how](sequence(other), (a) => (b) => _composeOp(a, b, op)); // hack to remove undefs when doing 'keepif' @@ -886,8 +886,8 @@ Pattern.prototype.mask = Pattern.prototype.keepifIn; Pattern.prototype.maskAll = Pattern.prototype.keepIn; Pattern.prototype.reset = Pattern.prototype.keepifTrig; Pattern.prototype.resetAll = Pattern.prototype.keepTrig; -Pattern.prototype.restart = Pattern.prototype.keepifTrigZero; -Pattern.prototype.restartAll = Pattern.prototype.keepTrigZero; +Pattern.prototype.restart = Pattern.prototype.keepifTrigzero; +Pattern.prototype.restartAll = Pattern.prototype.keepTrigzero; // methods of Pattern that get callable factories Pattern.prototype.patternified = [ diff --git a/packages/core/test/pattern.test.mjs b/packages/core/test/pattern.test.mjs index 5bc99f60..df942d0f 100644 --- a/packages/core/test/pattern.test.mjs +++ b/packages/core/test/pattern.test.mjs @@ -152,7 +152,7 @@ describe('Pattern', function () { }); }); describe('add()', function () { - it('can can structure In()', function () { + it('can structure In()', function () { assert.equal(pure(3).add(pure(4)).query(st(0, 1))[0].value, 7); assert.equal(pure(3).addIn(pure(4)).query(st(0, 1))[0].value, 7); }); @@ -160,20 +160,21 @@ describe('Pattern', function () { sameFirst(sequence(1, 2).addOut(4), sequence(5, 6).struct(true)); }); it('can Mix() structure', () => { - assert.deepStrictEqual(sequence(1, 2).addMix(silence,5,silence).firstCycle(), - [hap(ts(1/3,1/2),ts(1/3,1/2),6), hap(ts(1/2,2/3),ts(1/2,2/3),7)] - ); + assert.deepStrictEqual(sequence(1, 2).addMix(silence, 5, silence).firstCycle(), [ + hap(ts(1 / 3, 1 / 2), ts(1 / 3, 1 / 2), 6), + hap(ts(1 / 2, 2 / 3), ts(1 / 2, 2 / 3), 7), + ]); }); it('can Trig() structure', () => { sameFirst( - slowcat(sequence(1,2,3,4),5,sequence(6,7,8,9),10).addTrig(20,30).early(2), - sequence(26,27,36,37) + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).addTrig(20, 30).early(2), + sequence(26, 27, 36, 37), ); }); - it('can TrigZero() structure', () => { + it('can Trigzero() structure', () => { sameFirst( - slowcat(sequence(1,2,3,4),5,sequence(6,7,8,9),10).addTrigZero(20,30).early(2), - sequence(21,22,31,32) + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).addTrigzero(20, 30).early(2), + sequence(21, 22, 31, 32), ); }); it('can Squeeze() structure', () => { @@ -195,6 +196,93 @@ describe('Pattern', function () { ); }); }); + describe('keep()', function () { + it('can structure In()', function () { + assert.equal(pure(3).keep(pure(4)).query(st(0, 1))[0].value, 3); + assert.equal(pure(3).keepIn(pure(4)).query(st(0, 1))[0].value, 3); + }); + it('can structure Out()', () => { + sameFirst(sequence(1, 2).keepOut(4), sequence(1, 2).struct(true)); + }); + it('can Mix() structure', () => { + assert.deepStrictEqual(sequence(1, 2).keepMix(silence, 5, silence).firstCycle(), [ + hap(ts(1 / 3, 1 / 2), ts(1 / 3, 1 / 2), 1), + hap(ts(1 / 2, 2 / 3), ts(1 / 2, 2 / 3), 2), + ]); + }); + it('can Trig() structure', () => { + sameFirst( + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).keepTrig(20, 30).early(2), + sequence(6, 7, 6, 7), + ); + }); + it('can Trigzero() structure', () => { + sameFirst( + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).keepTrigzero(20, 30).early(2), + sequence(1, 2, 1, 2), + ); + }); + it('can Squeeze() structure', () => { + sameFirst( + sequence(1, [2, 3]).keepSqueeze(sequence(10, 20, 30)), + sequence( + [1, 1, 1], + [ + [2, 2, 2], + [3, 3, 3], + ], + ), + ); + }); + it('can SqueezeOut() structure', () => { + sameFirst(sequence(1, [2, 3]).keepSqueezeOut(10, 20, 30), sequence([1, [2, 3]], [1, [2, 3]], [1, [2, 3]])); + }); + }); + describe('keepif()', function () { + it('can structure In()', function () { + sameFirst(sequence(3, 4).keepif(true, false), sequence(3, silence)); + sameFirst(sequence(3, 4).keepifIn(true, false), sequence(3, silence)); + }); + it('can structure Out()', () => { + sameFirst(pure(1).keepifOut(true, false), sequence(1, silence)); + }); + it('can Mix() structure', () => { + assert.deepStrictEqual(sequence(1, 2).keepifMix(false, true, false).firstCycle(), [ + hap(ts(1 / 3, 1 / 2), ts(1 / 3, 1 / 2), 1), + hap(ts(1 / 2, 2 / 3), ts(1 / 2, 2 / 3), 2), + ]); + }); + it('can Trig() structure', () => { + sameFirst( + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).keepifTrig(false, true).early(2), + sequence(silence, silence, 6, 7), + ); + }); + it('can Trigzero() structure', () => { + sameFirst( + slowcat(sequence(1, 2, 3, 4), 5, sequence(6, 7, 8, 9), 10).keepifTrigzero(false, true).early(2), + sequence(silence, silence, 1, 2), + ); + }); + it('can Squeeze() structure', () => { + sameFirst( + sequence(1, [2, 3]).keepifSqueeze(sequence(true, true, false)), + sequence( + [1, 1, silence], + [ + [2, 2, silence], + [3, 3, silence], + ], + ), + ); + }); + it('can SqueezeOut() structure', () => { + sameFirst( + sequence(1, [2, 3]).keepifSqueezeOut(true, true, false), + sequence([1, [2, 3]], [1, [2, 3]], silence), + ); + }); + }); describe('sub()', function () { it('Can subtract things', function () { assert.equal(pure(3).sub(pure(4)).query(st(0, 1))[0].value, -1);