public void Deserialize_WithPrimitivesAndDateTime_Successful() { string input = "type: unknown\n" + "id: 1111\n" + "alpha: 123777\n" + "beta: true\n" + "gamma: 123e+3\n" + "delta: 2018-03-01T07:00:00.0000000Z\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; PrimitivesAndDateTime payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.EqualTo(ErrorCode.None)); Assert.That(payload.alpha, Is.EqualTo(123777)); Assert.That(payload.beta, Is.EqualTo(true)); Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1)); Assert.That(payload.delta, Is.EqualTo(new DateTime(2018, 03, 01, 07, 00, 00, DateTimeKind.Utc))); }
public void Deserialize_WithPrimitivesAndStringArrays_Successful() { string input = "type: unknown\n" + "id: 1111\n" + "alpha: 123777\n" + "beta: true\n" + "gamma: 123e+3\n" + "delta: deserialize, string, arrays,so,this,should, work,\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; PrimitivesAndStringArrays payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.EqualTo(ErrorCode.None)); Assert.That(payload.alpha, Is.EqualTo(123777)); Assert.That(payload.beta, Is.EqualTo(true)); Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1)); Assert.That(payload.delta, Is.EquivalentTo(new [] { "deserialize", " string", " arrays", "so", "this", "should", " work" })); }
public void Deserialize_WithPrimitivesAndDoubleArrays_Successful() { string input = "type: unknown\n" + "id: 1111\n" + "alpha: 123777\n" + "beta: true\n" + "gamma: 123e+3\n" + "delta: 16.125,2.25,7.375,8.000,\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; PrimitivesAndDoubleArrays payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.EqualTo(ErrorCode.None)); Assert.That(payload.alpha, Is.EqualTo(123777)); Assert.That(payload.beta, Is.EqualTo(true)); Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1)); Assert.That(payload.delta, Is.EquivalentTo(new[] { 16.125, 2.25, 7.375, 8 })); }
public void Deserialize_WithPrimitives_ForAllDataMemberAttributes_Successful() { string input = "type: unknown\n" + "id: 1111\n" + "alpha: 123777\n" + "beta: True\n" + "gamma: 123e+3\n" + "delta: isih string iki\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; AllPrimitives payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.EqualTo(ErrorCode.None)); Assert.That(payload.alpha, Is.EqualTo(123777)); Assert.That(payload.beta, Is.EqualTo(true)); Assert.That(payload.gamma, Is.EqualTo(123000).Within(0.1)); Assert.That(payload.delta, Is.EqualTo("isih string iki")); }
public void Deserialize_WithAllStringMembers_ForAllDataMemberAttributes_Successful() { string input = "type: unknown\n" + "id: 1111\n" + "alpha: iki_huruf_alpa\n" + "beta: iki huruf beta\n" + "gamma: iki_hurup_gama\n" + "delta: iki hurop delta\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; AllStringNoTypeName payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.EqualTo(ErrorCode.None)); Assert.That(payload.alpha, Is.EqualTo("iki_huruf_alpa")); Assert.That(payload.beta, Is.EqualTo("iki huruf beta")); Assert.That(payload.gamma, Is.EqualTo("iki_hurup_gama")); Assert.That(payload.delta, Is.EqualTo("iki hurop delta")); }
private void SendRequest <U>(MessageType requestType, ResultCallback <U> callback) where U : class, new() { long messageId = GenerateId(); var writer = new StringWriter(); AwesomeFormat.WriteHeader(writer, requestType, messageId); this.responseCallbacks[messageId] = (errorCode, response) => { Result <U> result; if (errorCode != ErrorCode.None) { result = Result <U> .CreateError(errorCode); } else { U responsePayload; errorCode = AwesomeFormat.ReadPayload(response, out responsePayload); result = errorCode != ErrorCode.None ? Result <U> .CreateError(errorCode) : Result <U> .CreateOk(responsePayload); } this.coroutineRunner.Run(() => callback.Try(result)); }; this.webSocket.Send(writer.ToString()); }
public void Deserialize_WithMissingFields_IsError() { string input = "type: unknown\n" + "id: 1111\n" + "beta: true\n" + "gamma: 123e+3\n" + "delta: 16.125,2.25,7.375,8.000,\n" + "epsilon: iki kudune ra kanggo\n" + "zeta: iki kudune dibuang"; MessageType type; long id; PrimitivesAndDoubleArrays payload; ErrorCode headerErr = AwesomeFormat.ReadHeader(input, out type, out id); ErrorCode payloadErr = AwesomeFormat.ReadPayload(input, out payload); Assert.That(headerErr, Is.EqualTo(ErrorCode.None)); Assert.That(payloadErr, Is.Not.EqualTo(ErrorCode.None)); }
private static void HandleNotification <T>(string message, ResultCallback <T> handler) where T : class, new() { if (handler == null) { return; } T payload; ErrorCode errorCode = AwesomeFormat.ReadPayload(message, out payload); if (errorCode != ErrorCode.None) { handler(Result <T> .CreateError(errorCode)); } else { handler(Result <T> .CreateOk(payload)); } }
private void HandleOnMessage(string message) { Report.GetWebSocketResponse(message); long messageId; MessageType messageType; ErrorCode errorCode = AwesomeFormat.ReadHeader(message, out messageType, out messageId); switch (messageType) { case MessageType.partyGetInvitedNotif: Lobby.HandleNotification(message, this.InvitedToParty); break; case MessageType.partyJoinNotif: Lobby.HandleNotification(message, this.JoinedParty); break; case MessageType.partyKickNotif: Lobby.HandleNotification(message, this.KickedFromParty); break; case MessageType.partyLeaveNotif: Lobby.HandleNotification(message, this.LeaveFromParty); break; case MessageType.personalChatNotif: Lobby.HandleNotification(message, this.PersonalChatReceived); break; case MessageType.partyChatNotif: Lobby.HandleNotification(message, this.PartyChatReceived); break; case MessageType.messageNotif: Lobby.HandleNotification(message, this.OnNotification); break; case MessageType.userStatusNotif: Lobby.HandleNotification(message, this.FriendsStatusChanged); break; case MessageType.matchmakingNotif: Lobby.HandleNotification(message, this.MatchmakingCompleted); break; case MessageType.dsNotif: Lobby.HandleNotification(message, this.DSUpdated); break; case MessageType.acceptFriendsNotif: Lobby.HandleNotification(message, this.FriendRequestAccepted); break; case MessageType.requestFriendsNotif: Lobby.HandleNotification(message, this.OnIncomingFriendRequest); break; case MessageType.setReadyConsentNotif: Lobby.HandleNotification(message, this.ReadyForMatchConfirmed); break; case MessageType.rematchmakingNotif: Lobby.HandleNotification(message, this.RematchmakingNotif); break; case MessageType.channelChatNotif: Lobby.HandleNotification(message, this.ChannelChatReceived); break; case MessageType.connectNotif: AwesomeFormat.ReadPayload(message, out lobbySessionId); break; case MessageType.disconnectNotif: Lobby.HandleNotification(message, this.Disconnecting); break; case MessageType.partyDataUpdateNotif: Lobby.HandleNotification(message, this.PartyDataUpdateNotif); break; case MessageType.partyRejectNotif: Lobby.HandleNotification(message, this.RejectedPartyInvitation); break; case MessageType.blockPlayerNotif: Lobby.HandleNotification(message, this.PlayerBlockedNotif); break; case MessageType.unblockPlayerNotif: Lobby.HandleNotification(message, this.PlayerUnblockedNotif); break; default: Action <ErrorCode, string> handler; if (messageId != -1 && this.responseCallbacks.TryGetValue(messageId, out handler)) { this.responseCallbacks.Remove(messageId); handler(errorCode, message); } break; } }