From 189fd31a7969887dc17f65fca00c740f60d4b785 Mon Sep 17 00:00:00 2001 From: Eugene Lazutkin Date: Tue, 17 Sep 2024 23:28:30 -0500 Subject: [PATCH] Added a test for `clearFunctionList()`. --- tests/test-transducers.mjs | 42 +++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/tests/test-transducers.mjs b/tests/test-transducers.mjs index b4d2c6f..1581f41 100644 --- a/tests/test-transducers.mjs +++ b/tests/test-transducers.mjs @@ -3,7 +3,7 @@ import test from 'tape-six'; import {streamToArray} from './helpers.mjs'; -import chain, {gen, none, finalValue} from '../src/index.js'; +import chain, {gen, none, finalValue, clearFunctionList} from '../src/index.js'; import fromIterable from '../src/utils/readableFrom.js'; test.asPromise('transducers: smoke test', (t, resolve) => { @@ -98,3 +98,43 @@ test.asPromise('transducers: embedded arrays', (t, resolve) => { resolve(); }); }); + +test.asPromise('transducers: optimize function lists', (t, resolve) => { + const output = [], + c = chain([ + fromIterable([1, 2, 3]), + gen( + x => x * x, + x => finalValue(x), + x => 2 * x + 1 + ), + x => x + 1, + streamToArray(output) + ]); + + c.on('end', () => { + t.deepEqual(output, [1, 4, 9]); + resolve(); + }); +}); + +test.asPromise("transducers: don't optimize function lists", (t, resolve) => { + const output = [], + c = chain([ + fromIterable([1, 2, 3]), + clearFunctionList( + gen( + x => x * x, + x => finalValue(x), + x => 2 * x + 1 + ) + ), + x => x + 1, + streamToArray(output) + ]); + + c.on('end', () => { + t.deepEqual(output, [2, 5, 10]); + resolve(); + }); +});