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]
