Skip to content

Commit 2e3b121

Browse files
committed
fix: testing scripts
align with https://github.com/swiing/BitArray
1 parent cf539f2 commit 2e3b121

7 files changed

Lines changed: 127 additions & 82 deletions

File tree

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ jobs:
2525
- name: Install dependencies
2626
run: npm install # npm ci
2727
- run: npm run build --if-present
28-
- run: npm test
28+
- run: npm run test:ci

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
"name": "@bitarray/typedarray",
33
"version": "1.1.1",
44
"description": "A BitArray object exhibiting the interface of standard ecmascript TypedArray's",
5+
"type": "module",
56
"typings": "./dist/esm/bit-typedarray.d.ts",
67
"exports": {
78
".": {
@@ -25,7 +26,8 @@
2526
"prepublishOnly": "npm run test",
2627
"style:fix": "prettier src/**/*.ts --write",
2728
"style:check": "prettier src/**/*.ts --check",
28-
"test": "node --loader ts-node/esm test/index.ts"
29+
"test": "ts-node --esm --project ./tsconfig.esm.json ./test/index.ts",
30+
"test:ci": "set TS_NODE_PROJECT=./tsconfig.esm.json && node --no-warnings=ExperimentalWarning --loader ts-node/esm ./test/index.ts"
2931
},
3032
"repository": {
3133
"type": "git",

test/index.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import suite from "./suite";
2-
import test from "./test";
1+
import suite from './suite.js';
2+
import test from './test.js';
33

4-
test( suite );
4+
test(suite);

test/suite.ts

Lines changed: 109 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -1,123 +1,160 @@
1-
import BitArray from "../src/bit-typedarray";
1+
import BitArray from '../src/bit-typedarray.js';
22

33
// whatever value >=4
44
// Some test cases are not accounting for a zero length (and would appear as failures)
55
// (but, in general, it is obviously allowed to have a zero-size bit array)
66
const length = 48;
77

8-
const bits = new BitArray( length );
9-
8+
const bits = new BitArray(length);
109

1110
/** suite 1 */
1211
const instantiating = {
13-
"new BitArray( length )": bits instanceof BitArray,
14-
"length is set": bits.length === length,
15-
"empty bit array has length 0": new BitArray(0) .length === 0,
16-
"new BitArray( iterable )": new BitArray("011010") instanceof BitArray
17-
&& new BitArray("011010") .length === 6
12+
'new BitArray( length )': bits instanceof BitArray,
13+
'length is set': bits.length === length,
14+
'empty bit array has length 0': new BitArray(0).length === 0,
15+
'new BitArray( iterable )':
16+
new BitArray('011010') instanceof BitArray &&
17+
new BitArray('011010').length === 6,
1818
};
1919

20-
2120
/** suite 2 */
2221
const reading_writing = {
23-
"default value set to 0": bits[0] === 0 && bits[length-1] === 0,
24-
// @ts-ignore
25-
"bits[n] = true sets bit value to 1": (bits[length-1] = true, bits[length-1] === 1),
26-
"bits[n] = 1 sets bit value to 1": (bits[length-1] = 1, bits[length-1] === 1),
27-
".at(n)": bits.at(length-1) === 1,
22+
'default value set to 0': bits[0] === 0 && bits[length - 1] === 0,
23+
'bits[n] = true sets bit value to 1':
24+
// @ts-ignore true type as bit
25+
((bits[length - 1] = true), bits[length - 1] === 1),
26+
'bits[n] = 1 sets bit value to 1':
27+
((bits[length - 1] = 1), bits[length - 1] === 1),
28+
'.at(n)': bits.at(length - 1) === 1,
2829
// this test assumes a minimal length, otherwise we don't run and simply return "pass ok".
29-
".set([true,false], 2)": length < 4 ? true : (bits.set([true,false], 2), bits[2]===1 && bits[3]===0),
30-
".set([1,1], 2)": length < 4 ? true : (bits.set([1,1], 2), bits[2]===1 && bits[3]===1)
30+
'.set([true,false], 2)':
31+
length < 4
32+
? true
33+
: (bits.set([true, false], 2), bits[2] === 1 && bits[3] === 0),
34+
'.set([1,1], 2)':
35+
length < 4 ? true : (bits.set([1, 1], 2), bits[2] === 1 && bits[3] === 1),
3136
};
3237

33-
3438
/** suite 3 */
3539
// we check only that the last value is as expected,
3640
// and assume this is enough evidence to consider the loop was okay
3741
const iterating = {
38-
39-
"for loop": (()=>{
42+
'for loop': (() => {
4043
let item, index;
41-
for( let i=0; i<length; i++ ) item = bits[ index=i ];
42-
return (index === length-1) && (item === 1);
44+
for (let i = 0; i < length; i++) item = bits[(index = i)];
45+
return index === length - 1 && item === 1;
4346
})(),
4447

45-
"for..in loop": (()=>{
48+
'for..in loop': (() => {
4649
let item, index;
47-
for( let i in bits ) item = bits[index=i];
48-
return (index === ""+(length-1)) && (item === 1);
50+
for (let i in bits) item = bits[(index = i)];
51+
return index === '' + (length - 1) && item === 1;
4952
})(),
5053

51-
".forEach()": (()=>{
54+
'.forEach()': (() => {
5255
let res, index;
53-
bits.forEach( (val, i, arr) => { index=i; res = arr[i]===val; } );
54-
return (index === length-1) && (res === true);
56+
bits.forEach((val, i, arr) => {
57+
index = i;
58+
res = arr[i] === val;
59+
});
60+
return index === length - 1 && res === true;
5561
})(),
5662

57-
"for..of loop": (()=>{
58-
let item, index=0;
59-
for( item of bits ) index++;
60-
return (item===1) && (index===length);
61-
})()
62-
63+
'for..of loop': (() => {
64+
let item,
65+
index = 0;
66+
for (item of bits) index++;
67+
return item === 1 && index === length;
68+
})(),
6369
};
6470

65-
6671
/** suite 4 */
6772
const formatting = {
68-
".toString()": bits.toString() === new Array(length)
69-
.fill(0)
70-
.map((c,i)=>(i+1)%8?c:c+" ").join("").trim()
71-
// bits 2 and 3 have been set to 1 in my test cases
72-
.replace(/0000/,"0011")
73-
// last bit have been set to 1 in my test cases
74-
.replace(/.$/,"1")
75-
}
73+
'.toString()':
74+
bits.toString() ===
75+
new Array(length)
76+
.fill(0)
77+
.map((c, i) => ((i + 1) % 8 ? c : c + ' '))
78+
.join('')
79+
.trim()
80+
// bits 2 and 3 have been set to 1 in my test cases
81+
.replace(/0000/, '0011')
82+
// last bit have been set to 1 in my test cases
83+
.replace(/.$/, '1'),
84+
};
7685

7786
/** suite 5 */
7887
const static_metods = {
79-
80-
"BitArray.from( boolean[] )": (()=>{
81-
let arr = BitArray.from( [true,true,false,false,true] );
82-
return arr instanceof BitArray
83-
&& arr.length === 5
84-
&& arr[0]===1 && arr[1]===1 && arr[2]===0 && arr[3]===0 && arr[4]===1
88+
'BitArray.from( boolean[] )': (() => {
89+
let arr = BitArray.from([true, true, false, false, true]);
90+
return (
91+
arr instanceof BitArray &&
92+
arr.length === 5 &&
93+
arr[0] === 1 &&
94+
arr[1] === 1 &&
95+
arr[2] === 0 &&
96+
arr[3] === 0 &&
97+
arr[4] === 1
98+
);
8599
})(),
86100

87-
"BitArray.from( number[] )": (()=>{
88-
let arr = BitArray.from( [1,1,0,0,1] );
89-
return arr instanceof BitArray
90-
&& arr.length === 5
91-
&& arr[0]===1 && arr[1]===1 && arr[2]===0 && arr[3]===0 && arr[4]===1
101+
'BitArray.from( number[] )': (() => {
102+
let arr = BitArray.from([1, 1, 0, 0, 1]);
103+
return (
104+
arr instanceof BitArray &&
105+
arr.length === 5 &&
106+
arr[0] === 1 &&
107+
arr[1] === 1 &&
108+
arr[2] === 0 &&
109+
arr[3] === 0 &&
110+
arr[4] === 1
111+
);
92112
})(),
93113

94-
"BitArray.from( string )": (()=>{
95-
let arr = BitArray.from("11001");
96-
return arr instanceof BitArray
97-
&& arr.length === 5
98-
&& arr[0]===1 && arr[1]===1 && arr[2]===0 && arr[3]===0 && arr[4]===1
114+
'BitArray.from( string )': (() => {
115+
let arr = BitArray.from('11001');
116+
return (
117+
arr instanceof BitArray &&
118+
arr.length === 5 &&
119+
arr[0] === 1 &&
120+
arr[1] === 1 &&
121+
arr[2] === 0 &&
122+
arr[3] === 0 &&
123+
arr[4] === 1
124+
);
99125
})(),
100126

101-
"BitArray.of( ...booleans )": (()=>{
102-
let arr = BitArray.of(true,true,false,false,true);
103-
return arr instanceof BitArray
104-
&& arr.length === 5
105-
&& arr[0]===1 && arr[1]===1 && arr[2]===0 && arr[3]===0 && arr[4]===1
127+
'BitArray.of( ...booleans )': (() => {
128+
let arr = BitArray.of(true, true, false, false, true);
129+
return (
130+
arr instanceof BitArray &&
131+
arr.length === 5 &&
132+
arr[0] === 1 &&
133+
arr[1] === 1 &&
134+
arr[2] === 0 &&
135+
arr[3] === 0 &&
136+
arr[4] === 1
137+
);
106138
})(),
107139

108-
"BitArray.of( ...numbers )": (()=>{
109-
let arr = BitArray.of(1,1,0,0,1);
110-
return arr instanceof BitArray
111-
&& arr.length === 5
112-
&& arr[0]===1 && arr[1]===1 && arr[2]===0 && arr[3]===0 && arr[4]===1
113-
})()
114-
115-
}
140+
'BitArray.of( ...numbers )': (() => {
141+
let arr = BitArray.of(1, 1, 0, 0, 1);
142+
return (
143+
arr instanceof BitArray &&
144+
arr.length === 5 &&
145+
arr[0] === 1 &&
146+
arr[1] === 1 &&
147+
arr[2] === 0 &&
148+
arr[3] === 0 &&
149+
arr[4] === 1
150+
);
151+
})(),
152+
};
116153

117154
export default {
118155
instantiating,
119156
reading_writing,
120157
iterating,
121158
formatting,
122-
static_metods
159+
static_metods,
123160
};

tsconfig.cjs.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@
22
"extends": "./tsconfig.json",
33
"compilerOptions": {
44
"module": "commonjs",
5-
"outDir": "dist/cjs/",
5+
"outDir": "dist/cjs/"
66
}
77
}

tsconfig.esm.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
"extends": "./tsconfig.json",
33
"compilerOptions": {
44
"module": "es6",
5+
"target": "es6",
56
"outDir": "dist/esm/",
7+
"esModuleInterop": true,
8+
"moduleResolution": "node"
69
}
710
}

tsconfig.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{
22
"compilerOptions": {
33
"target": "es6",
4+
"moduleResolution": "node",
45
"declarationDir": "./dist/esm",
5-
"declaration": true
6+
"declaration": true,
7+
"module": "es6",
8+
"outDir": "dist/esm/",
9+
"esModuleInterop": true
610
},
7-
"files": [
8-
"src/bit-typedarray.ts"
9-
]
11+
"ts-node": { "esm": true },
12+
"files": ["src/bit-typedarray.ts"]
1013
}

0 commit comments

Comments
 (0)