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 Serialize_WithPrimitives_ForAllDataMemberAttributes_Successful()
        {
            var payload = new AllPrimitives
            {
                alpha   = 707070,
                beta    = true,
                gamma   = 1230,
                delta   = "this should be string, still",
                epsilon = "epsilon should not be serialized",
                zeta    = "I myself confused I still need to have this string",
                eta     = "So insecure, I also write something into this field"
            };

            var writer = new StringWriter();

            AwesomeFormat.WriteHeader(writer, MessageType.unknown);
            AwesomeFormat.WritePayload(writer, payload);

            Assert.That(writer.ToString(), Is.EqualTo(
                            "type: unknown\n" +
                            "alpha: 707070\n" +
                            "beta: True\n" +
                            "gamma: 1230\n" +
                            "delta: this should be string, still"));
        }
        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 Serialize_WithAllStringMembers_ForAllDataMemberAttributes_Successful()
        {
            var payload = new AllString
            {
                alpha   = "the content of alpha",
                beta    = "beta content should be something too",
                gamma   = "gamma also needs placeholder string",
                delta   = "I've run out of idea for delta content",
                epsilon = "epsilon should not be serialized",
                zeta    = "I myself confused I still need to have this string",
                eta     = "So insecure, I also write something into this field"
            };

            StringWriter writer = new StringWriter();

            AwesomeFormat.WriteHeader(writer, MessageType.unknown);
            AwesomeFormat.WritePayload(writer, payload);

            Assert.That(writer.ToString(), Is.EqualTo(
                            "type: unknown\n" +
                            "alpha: the content of alpha\n" +
                            "beta: beta content should be something too\n" +
                            "gamma: gamma also needs placeholder string\n" +
                            "delta: I've run out of idea for delta content"));
        }
Ejemplo n.º 5
0
        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 Serialize_WithPrimitivesAndDoubleArrays_Successful()
        {
            var payload = new PrimitivesAndDoubleArrays
            {
                alpha   = 707070,
                beta    = true,
                gamma   = 1230,
                delta   = new[] { 16.125, 2.25, 7.375, 8.00 },
                epsilon = "epsilon should not be serialized",
                zeta    = "I myself confused I still need to have this string",
                eta     = "So insecure, I also write something into this field"
            };

            var writer = new StringWriter();

            AwesomeFormat.WriteHeader(writer, MessageType.unknown);
            AwesomeFormat.WritePayload(writer, payload);

            Assert.That(writer.ToString(), Is.EqualTo(
                            "type: unknown\n" +
                            "alpha: 707070\n" +
                            "beta: True\n" +
                            "gamma: 1230\n" +
                            "delta: [16.125,2.25,7.375,8]"));
        }
        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 Serialize_WithPrimitivesAndDateTime_Successful()
        {
            var payload = new PrimitivesAndDateTime
            {
                alpha   = 707070,
                beta    = true,
                gamma   = 1230,
                delta   = new DateTime(2018, 03, 01, 07, 00, 00, DateTimeKind.Utc),
                epsilon = "epsilon should not be serialized",
                zeta    = "I myself confused I still need to have this string",
                eta     = "So insecure, I also write something into this field"
            };

            var writer = new StringWriter();

            AwesomeFormat.WriteHeader(writer, MessageType.unknown);
            AwesomeFormat.WritePayload(writer, payload);

            Assert.That(writer.ToString(), Is.EqualTo(
                            "type: unknown\n" +
                            "alpha: 707070\n" +
                            "beta: True\n" +
                            "gamma: 1230\n" +
                            "delta: 2018-03-01T07:00:00.0000000Z"));
        }
        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_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"));
        }
Ejemplo n.º 11
0
        private void SendRequest(MessageType requestType, ResultCallback callback)
        {
            long messageId = GenerateId();
            var  writer    = new StringWriter();

            AwesomeFormat.WriteHeader(writer, requestType, messageId);

            this.responseCallbacks[messageId] = (errorCode, response) =>
            {
                Result result = errorCode != ErrorCode.None ? Result.CreateError(errorCode) : Result.CreateOk();

                this.coroutineRunner.Run(() => callback.Try(result));
            };

            this.webSocket.Send(writer.ToString());
        }
        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));
        }
Ejemplo n.º 14
0
        private void SendRequest <T>(MessageType requestType, T requestPayload, ResultCallback callback)
            where T : class, new()
        {
            long messageId = this.GenerateId();
            var  writer    = new StringWriter();

            AwesomeFormat.WriteHeader(writer, requestType, messageId);
            AwesomeFormat.WritePayload(writer, requestPayload);

            this.responseCallbacks[messageId] = (errorCode, response) =>
            {
                var result = errorCode != ErrorCode.None ? Result.CreateError(errorCode) : Result.CreateOk();

                this.coroutineRunner.Run(() => callback(result));
            };

            this.webSocket.SendAsync(writer.ToString(), null);
        }
        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));
        }
Ejemplo n.º 17
0
        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));
            }
        }
Ejemplo n.º 18
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;
            }
        }
Ejemplo n.º 19
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;
            }
        }