1+ import assert from 'assert' ;
2+
13import 'regenerator-runtime/runtime.js' ;
24import { ArgumentParser } from 'argparse' ;
35
@@ -10,7 +12,7 @@ import {
1012 iterableToString ,
1113} from '../test/src/_fixtures.js' ;
1214
13- import { dist , dependency } from './_fixtures.js' ;
15+ import { dist , dependency , object } from './_fixtures.js' ;
1416
1517const parser = new ArgumentParser ( ) ;
1618parser . add_argument ( 'filter' ) ;
@@ -21,6 +23,7 @@ const cjs = dist('cjs');
2123const module = dist ( 'module.js' ) ;
2224const modern = dist ( 'modern.js' ) ;
2325const list = dependency ( 'list' ) ;
26+ const array = object ( 'Array' , Array ) ;
2427
2528const suite = new Benchtable ( 'Tree Construction' , { isTransposed : false } ) ;
2629
@@ -79,6 +82,18 @@ const append = makeFn({
7982 } ,
8083} ) ;
8184
85+ const push = makeFn ( {
86+ name : 'push' ,
87+ build : ( { exports} ) => {
88+ const { empty} = exports ;
89+ return ( measure , iterable ) => {
90+ let l = empty ( measure ) ;
91+ for ( const x of iterable ) l = l . push ( x ) ;
92+ return l ;
93+ } ;
94+ } ,
95+ } ) ;
96+
8297const prepend = makeFn ( {
8398 name : 'prepend' ,
8499 build : ( { exports} ) => {
@@ -96,7 +111,7 @@ const listFrom = makeFn({
96111} ) ;
97112
98113const listAppend = makeFn ( {
99- name : 'append ' ,
114+ name : 'push ' ,
100115 build : ( { exports} ) => {
101116 const { empty, append} = exports ;
102117 return ( _measure , iterable ) => {
@@ -107,18 +122,35 @@ const listAppend = makeFn({
107122 } ,
108123} ) ;
109124
125+ const arrayPush = makeFn ( {
126+ name : 'push' ,
127+ build : ( { exports} ) => {
128+ assert ( exports === Array ) ;
129+ return ( _measure , iterable ) => {
130+ const l = [ ] ;
131+ for ( const x of iterable ) l . push ( x ) ;
132+ return l ;
133+ } ;
134+ } ,
135+ } ) ;
136+
110137await add ( cjs , from ) ;
111138await add ( cjs , append ) ;
112139await add ( cjs , prepend ) ;
140+ await add ( cjs , push ) ;
113141await add ( module , from ) ;
114142await add ( module , append ) ;
115143await add ( module , prepend ) ;
144+ await add ( module , push ) ;
116145await add ( modern , from ) ;
117146await add ( modern , append ) ;
118147await add ( modern , prepend ) ;
148+ await add ( modern , push ) ;
119149
120150await add ( list , listFrom ) ;
121151await add ( list , listAppend ) ;
152+ await add ( array , listFrom ) ;
153+ await add ( array , arrayPush ) ;
122154
123155const addTitle = ( input ) => {
124156 const { measure, iterable} = input ;
0 commit comments