File tree 4 files changed +18
-4
lines changed
4 files changed +18
-4
lines changed Original file line number Diff line number Diff line change @@ -16,12 +16,21 @@ $ yarn add numeric-array-integer
16
16
## Usage:
17
17
18
18
``` js
19
+ // Initialize new NumericArrayInteger with bits per number 4 (max number is 2^4-1, 15), total bit length 10
19
20
const integer = new NumericArrayInteger (4 , 10 );
21
+
22
+ // Set number at position
20
23
integer .setPos (0 , 3 );
21
24
integer .setPos (2 , 2 );
25
+
26
+ // Get data as an integer
22
27
const data = integer .getData ();
23
28
console .log (data); // 515
29
+
30
+ // Load data from an integer
24
31
const integer2 = NumericArrayInteger .fromData (data, 4 , 10 );
32
+
33
+ // Get back original number at position
25
34
console .log (integer2 .getPos (0 )); // 3
26
35
console .log (integer2 .getPos (2 )); // 2
27
36
```
Original file line number Diff line number Diff line change 1
1
{
2
2
"name" : " numeric-array-integer" ,
3
- "version" : " 3.0 .0" ,
3
+ "version" : " 3.1 .0" ,
4
4
"description" : " JavaScript numeric array implemented using an integer" ,
5
5
"main" : " dist/index.js" ,
6
6
"module" : " ./dist/index.mjs" ,
Original file line number Diff line number Diff line change @@ -50,7 +50,7 @@ export class NumericArrayInteger {
50
50
if ( position > this . arrayLength ) {
51
51
throw new Error ( 'Position exceeds length' ) ;
52
52
}
53
- if ( value > 2 ** this . elementBitLength ) {
53
+ if ( value >= 2 ** this . elementBitLength ) {
54
54
throw new Error ( 'Value exceeds bit length' ) ;
55
55
}
56
56
const mask = value << ( position * this . elementBitLength ) ;
Original file line number Diff line number Diff line change @@ -32,9 +32,14 @@ describe('NumericArrayInteger', () => {
32
32
expect ( ( ) => integer . clearPos ( 13 ) ) . toThrowError ( 'Position exceeds length' ) ;
33
33
} ) ;
34
34
35
- it ( 'set position throw error for invalid value' , ( ) => {
35
+ it ( 'set position handle boundry and invalid value' , ( ) => {
36
36
const integer = new NumericArrayInteger ( 4 , 10 ) ;
37
- expect ( ( ) => integer . setPos ( 1 , 17 ) ) . toThrowError (
37
+ integer . setPos ( 1 , 2 ** 4 - 1 ) ;
38
+ expect ( integer . getPos ( 1 ) ) . toEqual ( 2 ** 4 - 1 ) ;
39
+ expect ( ( ) => integer . setPos ( 1 , 2 ** 4 + 1 ) ) . toThrowError (
40
+ 'Value exceeds bit length'
41
+ ) ;
42
+ expect ( ( ) => integer . setPos ( 1 , 2 ** 4 ) ) . toThrowError (
38
43
'Value exceeds bit length'
39
44
) ;
40
45
} ) ;
You can’t perform that action at this time.
0 commit comments