1
+ import assert from 'assert' ;
2
+
1
3
import 'regenerator-runtime/runtime.js' ;
2
4
import { ArgumentParser } from 'argparse' ;
3
5
@@ -10,7 +12,7 @@ import {
10
12
iterableToString ,
11
13
} from '../test/src/_fixtures.js' ;
12
14
13
- import { dist , dependency } from './_fixtures.js' ;
15
+ import { dist , dependency , object } from './_fixtures.js' ;
14
16
15
17
const parser = new ArgumentParser ( ) ;
16
18
parser . add_argument ( 'filter' ) ;
@@ -21,6 +23,7 @@ const cjs = dist('cjs');
21
23
const module = dist ( 'module.js' ) ;
22
24
const modern = dist ( 'modern.js' ) ;
23
25
const list = dependency ( 'list' ) ;
26
+ const array = object ( 'Array' , Array ) ;
24
27
25
28
const suite = new Benchtable ( 'Tree Construction' , { isTransposed : false } ) ;
26
29
@@ -79,6 +82,18 @@ const append = makeFn({
79
82
} ,
80
83
} ) ;
81
84
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
+
82
97
const prepend = makeFn ( {
83
98
name : 'prepend' ,
84
99
build : ( { exports} ) => {
@@ -96,7 +111,7 @@ const listFrom = makeFn({
96
111
} ) ;
97
112
98
113
const listAppend = makeFn ( {
99
- name : 'append ' ,
114
+ name : 'push ' ,
100
115
build : ( { exports} ) => {
101
116
const { empty, append} = exports ;
102
117
return ( _measure , iterable ) => {
@@ -107,18 +122,35 @@ const listAppend = makeFn({
107
122
} ,
108
123
} ) ;
109
124
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
+
110
137
await add ( cjs , from ) ;
111
138
await add ( cjs , append ) ;
112
139
await add ( cjs , prepend ) ;
140
+ await add ( cjs , push ) ;
113
141
await add ( module , from ) ;
114
142
await add ( module , append ) ;
115
143
await add ( module , prepend ) ;
144
+ await add ( module , push ) ;
116
145
await add ( modern , from ) ;
117
146
await add ( modern , append ) ;
118
147
await add ( modern , prepend ) ;
148
+ await add ( modern , push ) ;
119
149
120
150
await add ( list , listFrom ) ;
121
151
await add ( list , listAppend ) ;
152
+ await add ( array , listFrom ) ;
153
+ await add ( array , arrayPush ) ;
122
154
123
155
const addTitle = ( input ) => {
124
156
const { measure, iterable} = input ;
0 commit comments