/ test / lightspeed / protocol_codec_test.gleam
protocol_codec_test.gleam
 1  import gleeunit/should
 2  import lightspeed/protocol
 3  
 4  pub fn encode_decode_round_trip_test() {
 5    let frame =
 6      protocol.Event(
 7        ref: "42",
 8        name: "increment",
 9        payload: "{\"pipe\":\"a|b\",\"slash\":\"\\\\\"}",
10      )
11  
12    frame
13    |> protocol.encode
14    |> protocol.decode
15    |> should.equal(Ok(frame))
16  }
17  
18  pub fn hello_with_unsupported_version_is_rejected_test() {
19    "hello|lightspeed|2"
20    |> protocol.decode
21    |> should.equal(Error(protocol.UnsupportedVersion(2)))
22  }
23  
24  pub fn unknown_frame_tag_is_rejected_test() {
25    "wat|x|y"
26    |> protocol.decode
27    |> should.equal(Error(protocol.UnknownFrameTag("wat")))
28  }
29  
30  pub fn bad_arity_is_rejected_test() {
31    "ack|one|two"
32    |> protocol.decode
33    |> should.equal(
34      Error(protocol.BadFieldCount(tag: "ack", expected: 2, actual: 3)),
35    )
36  }