diff --git a/test/packed-fields.pb b/test/packed-fields.pb index 2006d912519687650275a03cbec5c8c964af3990..5d03dc77a9e49271bf5b0255d8d4d4d259540aeb 100644 GIT binary patch literal 48 zcmb1QWRPNJWMWoeQD9YIi)CPBV2I)oV_;y=VqjoMWnf^4{r~^}|5yePi;;nW0RVmh B2P*&o literal 14 Vcmb1QWRPNJWMWoeQD9YI0{{e?0ImQ4 diff --git a/test/packed-fields.protoscope.txt b/test/packed-fields.protoscope.txt index 5e1598b..2287043 100644 --- a/test/packed-fields.protoscope.txt +++ b/test/packed-fields.protoscope.txt @@ -4,3 +4,9 @@ 4: 4 4: 5 4: 6 + +11: 256i32 +11: { 22i32 42i32 101i32 } +11: 4294967295i32 +11: 0i32 +11: 1i32 diff --git a/test/protobuf_decode_gleam_test.gleam b/test/protobuf_decode_gleam_test.gleam index 9eef55e..2a46aba 100644 --- a/test/protobuf_decode_gleam_test.gleam +++ b/test/protobuf_decode_gleam_test.gleam @@ -4,7 +4,7 @@ import gleeunit import simplifile as file import decoders -import protobuf_decode_gleam.{Parsed, read_varint, parse} +import protobuf_decode_gleam.{Parsed, parse, read_fixed, read_varint} pub fn main() -> Nil { gleeunit.main() @@ -191,7 +191,11 @@ pub fn gtfs_test() { } type PackedFields { - PackedFields(packed: List(Int), expanded: List(Int)) + PackedFields( + packed: List(Int), + expanded: List(Int), + mixed_packed_and_expanded: List(Int), + ) } fn packed_fields_decoder() -> Decoder(PackedFields) { @@ -203,7 +207,11 @@ fn packed_fields_decoder() -> Decoder(PackedFields) { 4, decoders.multiple(of: decoders.uint(), using: read_varint), ) - PackedFields(packed:, expanded:) |> decode.success + use mixed_packed_and_expanded <- decode.field( + 11, + decoders.multiple(of: decoders.fixed(32), using: read_fixed(32)), + ) + PackedFields(packed:, expanded:, mixed_packed_and_expanded:) |> decode.success } pub fn packed_fields_test() { @@ -214,8 +222,12 @@ pub fn packed_fields_test() { assert packed_fields == Parsed( - value: PackedFields(packed: [0, 1, 2, 3], expanded: [4, 5, 6]), + value: PackedFields( + packed: [0, 1, 2, 3], + expanded: [4, 5, 6], + mixed_packed_and_expanded: [256, 22, 42, 101, 4_294_967_295, 0, 1], + ), rest: <<>>, - pos: 14, + pos: 48, ) }