|
| 1 | +import "package:collection/collection.dart"; |
| 2 | +import "package:pinenacl/encoding.dart"; |
| 3 | +import "package:test/test.dart"; |
| 4 | + |
| 5 | +import "package:wampproto/messages.dart"; |
| 6 | +import "package:wampproto/serializers.dart"; |
| 7 | + |
| 8 | +import "../helper.dart"; |
| 9 | + |
| 10 | +void main() { |
| 11 | + group("Call", () { |
| 12 | + const equality = DeepCollectionEquality(); |
| 13 | + const testProcedure = "io.xconn.test"; |
| 14 | + |
| 15 | + bool isEqual(Call msg1, Call msg2) => |
| 16 | + msg1.requestID == msg2.requestID && |
| 17 | + msg1.uri == msg2.uri && |
| 18 | + equality.equals(msg1.options, msg2.options) && |
| 19 | + equality.equals(msg1.args, msg2.args) && |
| 20 | + equality.equals(msg1.kwargs, msg2.kwargs); |
| 21 | + |
| 22 | + test("JSONSerializer", () async { |
| 23 | + var callMessage = Call(1, testProcedure); |
| 24 | + var command = "message call ${callMessage.requestID} ${callMessage.uri} --serializer json"; |
| 25 | + |
| 26 | + var output = await runCommand(command); |
| 27 | + |
| 28 | + var jsonSerializer = JSONSerializer(); |
| 29 | + var message = jsonSerializer.deserialize(output) as Call; |
| 30 | + expect(isEqual(message, callMessage), true); |
| 31 | + }); |
| 32 | + |
| 33 | + test("CBORSerializer", () async { |
| 34 | + var callMessage = Call(1, testProcedure, args: ["abc"]); |
| 35 | + var command = "message call ${callMessage.requestID} ${callMessage.uri} abc --serializer cbor --output hex"; |
| 36 | + |
| 37 | + var output = await runCommand(command); |
| 38 | + var outputBytes = Base16Encoder.instance.decode(output.trim()); |
| 39 | + |
| 40 | + var cborSerializer = CBORSerializer(); |
| 41 | + var message = cborSerializer.deserialize(outputBytes) as Call; |
| 42 | + expect(isEqual(message, callMessage), true); |
| 43 | + }); |
| 44 | + |
| 45 | + test("MsgPackSerializer", () async { |
| 46 | + var callMessage = Call(1, testProcedure, args: ["abc"], kwargs: {"a": 1}); |
| 47 | + var command = |
| 48 | + "message call ${callMessage.requestID} ${callMessage.uri} abc -k a=1 --serializer msgpack --output hex"; |
| 49 | + |
| 50 | + var output = await runCommand(command); |
| 51 | + var outputBytes = Base16Encoder.instance.decode(output.trim()); |
| 52 | + |
| 53 | + var msgPackSerializer = MsgPackSerializer(); |
| 54 | + var message = msgPackSerializer.deserialize(outputBytes) as Call; |
| 55 | + expect(isEqual(message, callMessage), true); |
| 56 | + }); |
| 57 | + }); |
| 58 | +} |
0 commit comments