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"));
        }
        public void Deserialize_FriendStatusResponse_CorrectNaming()
        {
            string input =
                "type: friendsStatusResponse" + "\n" +
                "id: 1" + "\n" +
                "code: 0" + "\n" +
                "friendsId: [966f80fdd4fc4b57b6b4ba18a79da3e5,9a9a769fd97248fc883174f4602ff7b0,ada9bb9853554f1d89693837e0877159,7def7f4e5edb4c30bdbd6b11a292e3ad,befa1ca938c6471095b3d79f68d04534,c86bd5dfb3634f4c80a867c6047f0a68,d31e2f9ff23b46d98dc1a5fd6bfd906e,101e5e76984b4c3bbddf1da657e972f4,236bf24904b348f8ac7eba47782f077e,f587612d078740f193b71efb838e390f,f613541fcb6f4f8f89547cf99ee366bb,8f4a31dc230e42c7854686eebde1ccf2,b5d83773f47e4a05bbea8ea41d356330,cdeb6625dfe84bff8575ee235c74d03a,cec1cee7e1784f5db7fa542fc35119f8,11af2264745041a4972b2b62f39b57ca,ce6481353e9e43acb874528e30cd87b1,027dc74e7ad5460db441e00e07fb8163,a9e08943ff8a4d6c85aada75786bf4de,da2cd86e322c4f19a1e86bde0cdebb1d,133d6b5b3ca0456e842b73c8274951a7,0b360bd09f3140a58345b604661f265b,f9de8861dc994456b650238269031ca5,602a3a628bed474c8a583b83b340d430,0895bf646c84439087203d0eb0bb0ca2,514abb596ae645b497190f4171a41ff8,40d7f57c4b3540ecb5a55014aed720c9,85a8ea9c83af4b8f98b7f4efe389a130,]" + "\n" +
                "availability: [0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,]" + "\n" +
                "activity: [nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,random activity,nil,nil,random activity,nil,nil,nil,nil,nil,random activity,nil,nil,nil,nil,nil,nil,]" + "\n" +
                "lastSeenAt: [2018-12-18T03:33:35Z,2018-12-18T03:33:36Z,2018-12-18T03:21:26Z,2018-12-18T03:26:51Z,2018-12-18T03:18:10Z,2018-12-18T02:58:09Z,2018-12-18T02:55:04Z,2018-12-18T03:33:35Z,2018-12-18T03:33:36Z,2018-12-18T02:58:35Z,2018-12-18T02:54:48Z,2018-12-18T03:26:32Z,2018-12-18T03:44:19Z,2018-12-18T03:26:42Z,2018-12-18T03:21:26Z,2018-12-18T03:44:20Z,2018-12-18T03:33:35Z,2018-12-18T03:26:32Z,2018-12-18T03:19:17Z,2018-12-18T03:00:43Z,2018-12-18T03:26:43Z,2018-12-18T03:44:19Z,2018-12-18T03:18:10Z,2018-12-18T03:13:25Z,2018-12-18T02:54:48Z,2018-12-18T03:19:17Z,2018-12-18T03:13:25Z,2018-12-18T03:07:16Z,]";

            MessageType type;
            long        id;
            ErrorCode   headerErrorCode = AwesomeFormat.ReadHeader(input, out type, out id);

            Assert.That(headerErrorCode, Is.EqualTo(ErrorCode.None));
        }
        public void Deserialize_WithNoType_IsError()
        {
            string input =
                "alpha: 707070\n" +
                "id: 1111\n" +
                "beta: \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;
            ErrorCode   headerErr = AwesomeFormat.ReadHeader(input, out type, out id);

            Assert.That(headerErr, Is.Not.EqualTo(ErrorCode.None));
        }
        public void Deserialize_WithNonNumericCode_IsError()
        {
            string input =
                "type: unknown\n" +
                "id: 1111\n" +
                "code: 400welgeduwel\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;
            ErrorCode   headerErr = AwesomeFormat.ReadHeader(input, out type, out id);

            Assert.That(headerErr, Is.Not.EqualTo(ErrorCode.None));
        }
        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));
        }
예제 #10
0
        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;
            }
        }
예제 #11
0
        private void HandleMessages(object sender, MessageEventArgs eventArgs)
        {
            Debug.Log("HandleMessage: " + eventArgs.Data.ToString());
            long        messageId;
            MessageType messageType;
            ErrorCode   errorCode = AwesomeFormat.ReadHeader(eventArgs.Data, out messageType, out messageId);

            switch (messageType)
            {
            case MessageType.partyGetInvitedNotif:
                Lobby.HandleNotification(eventArgs.Data, this.InvitedToParty);

                break;

            case MessageType.partyJoinNotif:
                Lobby.HandleNotification(eventArgs.Data, this.JoinedParty);

                break;

            case MessageType.partyKickNotif:
                Lobby.HandleNotification(eventArgs.Data, this.KickedFromParty);

                break;

            case MessageType.personalChatNotif:
                Lobby.HandleNotification(eventArgs.Data, this.PersonalChatReceived);

                break;

            case MessageType.partyChatNotif:
                Lobby.HandleNotification(eventArgs.Data, this.PartyChatReceived);

                break;

            case MessageType.messageNotif:
                Lobby.HandleNotification(eventArgs.Data, this.OnNotification);

                break;

            case MessageType.userStatusNotif:
                Lobby.HandleNotification(eventArgs.Data, this.UserStatusNotification);

                break;

            case MessageType.matchmakingNotif:
                Lobby.HandleNotification(eventArgs.Data, this.MatchmakingNotification);

                break;

            case MessageType.acceptFriendsNotif:
                Lobby.HandleNotification(eventArgs.Data, this.OnFriendRequestAccepted);

                break;

            case MessageType.requestFriendsNotif:
                Lobby.HandleNotification(eventArgs.Data, this.OnIncomingFriendRequest);

                break;

            case MessageType.connectNotif:
                this.Connected = true;

                break;

            default:
                Action <ErrorCode, string> handler;

                if (messageId != -1 && this.responseCallbacks.TryGetValue(messageId, out handler))
                {
                    this.responseCallbacks.Remove(messageId);
                    handler(errorCode, eventArgs.Data);
                }

                break;
            }
        }