@@ -18,82 +18,50 @@ describe("Logging utils", () => {
1818 } ) ;
1919
2020 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 ) ;
6655 } ) ;
6756
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 ( ) ;
9261
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 ( ) ;
9765 } ) ;
9866 } ) ;
9967
0 commit comments