diff --git a/test/gtfs-short.pb b/test/gtfs-short.pb new file mode 100644 index 0000000..76d337f --- /dev/null +++ b/test/gtfs-short.pb @@ -0,0 +1,12 @@ + +{ +1.0�����>m +1.0 +1���� +2���� +3���� +4���� +5���� +6���� +7���� +S���� \ No newline at end of file diff --git a/test/protobuf_decode_gleam_test.gleam b/test/protobuf_decode_gleam_test.gleam index 9858708..3d58e9f 100644 --- a/test/protobuf_decode_gleam_test.gleam +++ b/test/protobuf_decode_gleam_test.gleam @@ -86,3 +86,40 @@ pub fn two_ints_test() { let assert Ok(data) = decode(from: bits, using: two_ints_decoder()) assert data == Test(id: 150, age: 80_150) } + +type Gtfs { + Gtfs(header: FeedHeader) +} + +fn gtfs_decoder() -> Decoder(Gtfs) { + use header <- decode.field( + 1, + decoder( + using: feed_header_decoder, + named: "FeedHeader", + default: feed_header_default, + ), + ) + decode.success(Gtfs(header:)) +} + +type FeedHeader { + FeedHeader(version: String) +} + +const feed_header_default = FeedHeader(version: "0.0") + +fn feed_header_decoder() -> Decoder(FeedHeader) { + use version <- decode.field(1, decode_string()) + decode.success(FeedHeader(version:)) +} + +pub fn gtfs_test() { + let path = "./test/gtfs-short.pb" + let assert Ok(bits) = file.read_bits(from: path) + let assert Ok(gtfs) = decode(from: bits, using: gtfs_decoder()) + + echo gtfs + + Nil +}