CurtHagenlocher opened a new pull request, #422:
URL: https://github.com/apache/arrow-dotnet/pull/422

   ## What's Changed
   
   Additional test coverage for #420.
   
   #421 fixed `MakeObjectHeader` / `ParseObjectHeader` writing `field_id_size` 
and `offset_size` into each other's bits, and pinned both helpers to literal 
header bytes. That coverage stops at the helper: it says nothing about which 
widths `VariantValueWriter` asks for, or whether the body it emits is laid out 
at the widths the header declares.
   
   `VariantObjectHeaderSizeTests` builds real objects over the matrix of 
reachable widths — the dictionary is padded with names sorting ahead of the 
object's own to drive field IDs into the 2- and 3-byte bands, and the first 
field's value is padded to drive the end offset into them. Each case asserts 
the emitted header byte, decodes the object body with a decoder written from 
the spec rather than through `VariantEncodingHelper`, checks that the widths 
were forced for the reason intended (largest ID, end offset), and reads the 
object back through the library. A second theory covers objects of 300 fields, 
which pack `is_large` into bit 6 alongside the two size fields.
   
   Width 4 is unreachable from a real object: a 4-byte field ID needs a 
dictionary of more than 16,777,216 entries and a 4-byte offset needs more than 
16 MiB of field data, so those cells stay covered at the helper level.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to