@@ -18,82 +18,50 @@ describe("Logging utils", () => {
18
18
} ) ;
19
19
20
20
describe ( "sizeOf" , ( ) => {
21
- describe ( "primitive types" , ( ) => {
22
- it ( "returns 0 for null and undefined" , ( ) => {
23
- expect ( sizeOf ( null ) ) . toBe ( 0 ) ;
24
- expect ( sizeOf ( undefined ) ) . toBe ( 0 ) ;
25
- } ) ;
26
-
27
- it ( "returns fixed size for numbers and booleans" , ( ) => {
28
- // Numbers and booleans typically use 8 bytes
29
- expect ( sizeOf ( 42 ) ) . toBeGreaterThan ( 0 ) ;
30
- expect ( sizeOf ( 3.14 ) ) . toBeGreaterThan ( 0 ) ;
31
- expect ( sizeOf ( true ) ) . toBeGreaterThan ( 0 ) ;
32
- expect ( sizeOf ( false ) ) . toBeGreaterThan ( 0 ) ;
33
-
34
- // They should all be the same size
35
- expect ( sizeOf ( 42 ) ) . toBe ( sizeOf ( 3.14 ) ) ;
36
- expect ( sizeOf ( true ) ) . toBe ( sizeOf ( false ) ) ;
37
- } ) ;
38
-
39
- it ( "calculates byte length for strings" , ( ) => {
40
- expect ( sizeOf ( "hello" ) ) . toBe ( 5 ) ;
41
- expect ( sizeOf ( "" ) ) . toBe ( 0 ) ;
42
- // Unicode characters use multiple bytes
43
- expect ( sizeOf ( "✓" ) ) . toBeGreaterThan ( 1 ) ;
44
- expect ( sizeOf ( "unicode: ✓" ) ) . toBeGreaterThan ( 10 ) ;
45
- } ) ;
46
-
47
- it ( "calculates byte length for bigints" , ( ) => {
48
- expect ( sizeOf ( BigInt ( 12345 ) ) ) . toBe ( 5 ) ;
49
- expect ( sizeOf ( BigInt ( 0 ) ) ) . toBe ( 1 ) ;
50
- } ) ;
51
- } ) ;
52
-
53
- describe ( "buffer types" , ( ) => {
54
- it ( "returns byte length for Buffer" , ( ) => {
55
- expect ( sizeOf ( Buffer . from ( "test" ) ) ) . toBe ( 4 ) ;
56
- expect ( sizeOf ( Buffer . alloc ( 100 ) ) ) . toBe ( 100 ) ;
57
- expect ( sizeOf ( Buffer . from ( [ ] ) ) ) . toBe ( 0 ) ;
58
- } ) ;
59
-
60
- it ( "returns byte length for typed arrays" , ( ) => {
61
- expect ( sizeOf ( new ArrayBuffer ( 50 ) ) ) . toBe ( 50 ) ;
62
- expect ( sizeOf ( new Uint8Array ( [ 1 , 2 , 3 , 4 ] ) ) ) . toBe ( 4 ) ;
63
- expect ( sizeOf ( new Int32Array ( [ 1 , 2 , 3 ] ) ) ) . toBe ( 12 ) ; // 3 * 4 bytes
64
- expect ( sizeOf ( new Float64Array ( [ 1.0 , 2.0 ] ) ) ) . toBe ( 16 ) ; // 2 * 8 bytes
65
- } ) ;
21
+ it . each ( [
22
+ // Primitives return a fixed value
23
+ [ null , 0 ] ,
24
+ [ undefined , 0 ] ,
25
+ [ 42 , 8 ] ,
26
+ [ 3.14 , 8 ] ,
27
+ [ false , 8 ] ,
28
+ // Strings
29
+ [ "hello" , 5 ] ,
30
+ [ "✓" , 3 ] ,
31
+ [ "unicode: ✓" , 12 ] ,
32
+ // Buffers
33
+ [ Buffer . from ( "test" ) , 4 ] ,
34
+ [ BigInt ( 12345 ) , 5 ] ,
35
+ [ BigInt ( 0 ) , 1 ] ,
36
+ [ Buffer . alloc ( 100 ) , 100 ] ,
37
+ [ Buffer . from ( [ ] ) , 0 ] ,
38
+ // Typed-arrays
39
+ [ new ArrayBuffer ( 50 ) , 50 ] ,
40
+ [ new Uint8Array ( [ 1 , 2 , 3 , 4 ] ) , 4 ] ,
41
+ [ new Int32Array ( [ 1 , 2 , 3 ] ) , 12 ] ,
42
+ [ new Float64Array ( [ 1.0 , 2.0 ] ) , 16 ] ,
43
+ // Objects/untyped-arrays return undefined
44
+ [ { size : 1024 } , 1024 ] ,
45
+ [ { size : 0 } , 0 ] ,
46
+ [ { size : "not a number" } , undefined ] ,
47
+ [ [ ] , undefined ] ,
48
+ [ [ 1 , 2 , 3 ] , undefined ] ,
49
+ [ [ "a" , "b" , "c" ] , undefined ] ,
50
+ [ { } , undefined ] ,
51
+ [ { foo : "bar" } , undefined ] ,
52
+ [ { nested : { value : 123 } } , undefined ] ,
53
+ ] ) ( "returns size for %s" , ( data : unknown , bytes : number | undefined ) => {
54
+ expect ( sizeOf ( data ) ) . toBe ( bytes ) ;
66
55
} ) ;
67
56
68
- describe ( "objects and arrays" , ( ) => {
69
- it ( "returns size property if available" , ( ) => {
70
- expect ( sizeOf ( { size : 1024 } ) ) . toBe ( 1024 ) ;
71
- expect ( sizeOf ( { size : 0 } ) ) . toBe ( 0 ) ;
72
- // Only use size if it's a number
73
- expect ( sizeOf ( { size : "not a number" } ) ) . toBeUndefined ( ) ;
74
- } ) ;
75
-
76
- it ( "returns undefined for arrays without size" , ( ) => {
77
- expect ( sizeOf ( [ ] ) ) . toBeUndefined ( ) ;
78
- expect ( sizeOf ( [ 1 , 2 , 3 ] ) ) . toBeUndefined ( ) ;
79
- expect ( sizeOf ( [ "a" , "b" , "c" ] ) ) . toBeUndefined ( ) ;
80
- } ) ;
81
-
82
- it ( "returns undefined for plain objects without size" , ( ) => {
83
- expect ( sizeOf ( { } ) ) . toBeUndefined ( ) ;
84
- expect ( sizeOf ( { foo : "bar" } ) ) . toBeUndefined ( ) ;
85
- expect ( sizeOf ( { nested : { value : 123 } } ) ) . toBeUndefined ( ) ;
86
- } ) ;
87
-
88
- it ( "handles circular references safely" , ( ) => {
89
- const circular : Record < string , unknown > = { a : 1 } ;
90
- circular . self = circular ;
91
- expect ( sizeOf ( circular ) ) . toBeUndefined ( ) ;
57
+ it ( "handles circular references safely" , ( ) => {
58
+ const circular : Record < string , unknown > = { a : 1 } ;
59
+ circular . self = circular ;
60
+ expect ( sizeOf ( circular ) ) . toBeUndefined ( ) ;
92
61
93
- const arr : unknown [ ] = [ 1 , 2 , 3 ] ;
94
- arr . push ( arr ) ;
95
- expect ( sizeOf ( arr ) ) . toBeUndefined ( ) ;
96
- } ) ;
62
+ const arr : unknown [ ] = [ 1 , 2 , 3 ] ;
63
+ arr . push ( arr ) ;
64
+ expect ( sizeOf ( arr ) ) . toBeUndefined ( ) ;
97
65
} ) ;
98
66
} ) ;
99
67
0 commit comments