@@ -61,6 +61,22 @@ describe("flattenAttributes", () => {
6161    expect ( unflattenAttributes ( result ) ) . toEqual ( input ) ; 
6262  } ) ; 
6363
64+   it ( "flattens empty array attributes correctly" ,  ( )  =>  { 
65+     const  input : number [ ]  =  [ ] ; 
66+ 
67+     const  result  =  flattenAttributes ( input ) ; 
68+     expect ( result ) . toEqual ( {  "" : "$@empty_array(("  } ) ; 
69+     expect ( unflattenAttributes ( result ) ) . toEqual ( input ) ; 
70+   } ) ; 
71+ 
72+   it ( "flattens empty array child attributes correctly" ,  ( )  =>  { 
73+     const  input : number [ ]  =  [ ] ; 
74+ 
75+     const  result  =  flattenAttributes ( {  input } ) ; 
76+     expect ( result ) . toEqual ( {  input : "$@empty_array(("  } ) ; 
77+     expect ( unflattenAttributes ( result ) ) . toEqual ( {  input } ) ; 
78+   } ) ; 
79+ 
6480  it ( "flattens complex objects correctly" ,  ( )  =>  { 
6581    const  obj  =  { 
6682      level1 : { 
@@ -157,13 +173,13 @@ describe("flattenAttributes", () => {
157173    expect ( flattenAttributes ( obj ,  "retry.byStatus" ) ) . toEqual ( expected ) ; 
158174  } ) ; 
159175
160-     it ( "handles circular references correctly" ,  ( )  =>  { 
176+   it ( "handles circular references correctly" ,  ( )  =>  { 
161177    const  user  =  {  name : "Alice"  } ; 
162178    user [ "blogPosts" ]  =  [ {  title : "Post 1" ,  author : user  } ] ;  // Circular reference 
163179
164180    const  result  =  flattenAttributes ( user ) ; 
165181    expect ( result ) . toEqual ( { 
166-       " name"  : "Alice" , 
182+       name : "Alice" , 
167183      "blogPosts.[0].title" : "Post 1" , 
168184      "blogPosts.[0].author" : "$@circular((" , 
169185    } ) ; 
@@ -175,7 +191,7 @@ describe("flattenAttributes", () => {
175191
176192    const  result  =  flattenAttributes ( user ) ; 
177193    expect ( result ) . toEqual ( { 
178-       " name"  : "Bob" , 
194+       name : "Bob" , 
179195      "friends.[0]" : "$@circular((" , 
180196    } ) ; 
181197  } ) ; 
@@ -246,10 +262,24 @@ describe("unflattenAttributes", () => {
246262    } ; 
247263    expect ( unflattenAttributes ( flattened ) ) . toEqual ( expected ) ; 
248264  } ) ; 
249-   
265+ 
266+   it ( "correctly reconstructs empty arrays" ,  ( )  =>  { 
267+     const  flattened  =  { 
268+       "" : "$@empty_array((" , 
269+       array1 : "$@empty_array((" , 
270+       "array2.[0]" : "$@empty_array((" , 
271+     } ; 
272+     const  expected  =  { 
273+       "" : [ ] , 
274+       array1 : [ ] , 
275+       array2 : [ [ ] ] , 
276+     } ; 
277+     expect ( unflattenAttributes ( flattened ) ) . toEqual ( expected ) ; 
278+   } ) ; 
279+ 
250280  it ( "rehydrates circular references correctly" ,  ( )  =>  { 
251281    const  flattened  =  { 
252-       " name"  : "Alice" , 
282+       name : "Alice" , 
253283      "blogPosts.[0].title" : "Post 1" , 
254284      "blogPosts.[0].author" : "$@circular((" , 
255285    } ; 
0 commit comments