public void return_null_object_with_incorrectly_formmated_json_string() { SimCapiMessageType messageType = SimCapiMessageType.ALLOW_INTERNAL_ACCESS; object messageObject = Message.deserialize("INVALID JSON", ref messageType); Assert.AreEqual(null, messageObject); }
public void throw_error_when_message_type_is_not_supported() { SimCapiMessageType messageType = SimCapiMessageType.ALLOW_INTERNAL_ACCESS; // Create mock message with invalid message type int invalidMessageType = 5000; JObject message = new JObject(); message.Add(new JProperty("type", invalidMessageType)); message.Add("handshake", JObject.FromObject(createTestHandshake())); message.Add(new JProperty("values", new JObject( new JProperty("key", "RANDOMDATA"), new JProperty("simId", "RANDOMDATA") ) )); string messageWithInvalidType = message.ToString(Formatting.None); TestDelegate testDelegate = delegate() { Message.deserialize(messageWithInvalidType, ref messageType); }; Assert.Throws <System.Exception>(testDelegate); }
public static OnReady create(string jsonString) { JObject jObject = deserializeJson(jsonString); JProperty type = jObject.Property("type"); JProperty handshake = jObject.Property("handshake"); if (type == null || type.Value == null || type.Value.Type != JTokenType.Integer) { return(null); } // Must have handshake if (handshake == null) { return(null); } SimCapiMessageType messageType = type.ToObject <SimCapiMessageType>(); if (messageType != SimCapiMessageType.ON_READY) { return(null); } OnReady onReady = new OnReady(); onReady.handshake = handshake.Value.ToObject <SimCapiHandshake>(); return(onReady); }
public static HandshakeRequest create(string jsonString) { JObject jObject = deserializeJson(jsonString); JProperty type = jObject.Property("type"); JProperty handshake = jObject.Property("handshake"); if (type == null || type.Value == null || type.Value.Type != JTokenType.Integer) { return(null); } // Must have handshake if (handshake == null) { return(null); } SimCapiMessageType messageType = type.ToObject <SimCapiMessageType>(); if (messageType != SimCapiMessageType.HANDSHAKE_REQUEST) { return(null); } HandshakeRequest handshakeRequest = new HandshakeRequest(); handshakeRequest.handshake = handshake.Value.ToObject <SimCapiHandshake>(); return(handshakeRequest); }
public static SetDataRequest create(string jsonString) { JObject jObject = deserializeJson(jsonString); JProperty type = jObject.Property("type"); JProperty handshake = jObject.Property("handshake"); JProperty values = jObject.Property("values"); if (type == null || type.Value == null || type.Value.Type != JTokenType.Integer) { return(null); } // Must have handshake if (handshake == null) { return(null); } if (values == null) { return(null); } SimCapiMessageType messageType = type.ToObject <SimCapiMessageType>(); if (messageType != SimCapiMessageType.SET_DATA_REQUEST) { return(null); } JToken key = values.Value["key"]; JToken simId = values.Value["simId"]; JToken value = values.Value["value"]; if (key == null && key.Type != JTokenType.String) { return(null); } if (simId == null && simId.Type != JTokenType.String) { return(null); } if (value == null && value.Type != JTokenType.String) { return(null); } SetDataRequest setDataRequest = new SetDataRequest(); setDataRequest.handshake = handshake.Value.ToObject <SimCapiHandshake>(); setDataRequest.key = key.ToObject <string>(); setDataRequest.simId = simId.ToObject <string>(); setDataRequest.value = value.ToObject <string>(); return(setDataRequest); }
public void handleMessage(System.Object message, SimCapiMessageType messageType) { switch (messageType) { case SimCapiMessageType.HANDSHAKE_RESPONSE: handleHandshakeResponse((Message.HandshakeResponse)message); break; case SimCapiMessageType.VALUE_CHANGE: handleValueChangeMessage((Message.ValueChange)message); break; case SimCapiMessageType.CONFIG_CHANGE: handleConfigChangeMessage((Message.ConfigChange)message); break; case SimCapiMessageType.VALUE_CHANGE_REQUEST: handleValueChangeRequestMessage((Message.ValueChangeRequest)message); break; case SimCapiMessageType.CHECK_COMPLETE_RESPONSE: handleCheckCompleteResponse((Message.CheckCompleteResponse)message); break; case SimCapiMessageType.CHECK_START_RESPONSE: handleCheckStartResponse((Message.CheckStartResponse)message); break; case SimCapiMessageType.GET_DATA_RESPONSE: handleGetDataResponse((Message.GetDataResponse)message); break; case SimCapiMessageType.SET_DATA_RESPONSE: handleSetDataResponse((Message.SetDataResponse)message); break; case SimCapiMessageType.API_CALL_RESPONSE: break; case SimCapiMessageType.INITIAL_SETUP_COMPLETE: handleInitialSetupComplete((Message.InitialSetupComplete)message); break; case SimCapiMessageType.RESIZE_PARENT_CONTAINER_RESPONSE: handleResizeParentContainerResponse((Message.ResizeParentContainerResponse)message); break; case SimCapiMessageType.ALLOW_INTERNAL_ACCESS: setDomainToShortform(); break; case SimCapiMessageType.REGISTERED_LOCAL_DATA_CHANGED: handleLocalDataChanged((Message.RegisteredLocalDataChanged)message); break; } }
public static void setUpTransporterInConnectedState(Transporter transporter, TestMessagePipe testMessagePipe) { transporter.notifyOnReady(); Assert.AreEqual(1, testMessagePipe.messageCount()); string handshakeRequestJson = testMessagePipe.sendMessageList[0]; Message.HandshakeRequest handshakeRequest = Message.HandshakeRequest.create(handshakeRequestJson); Assert.AreNotEqual(null, handshakeRequest); handshakeRequest.handshake.authToken = "testToken"; // Create test config SimCapiConfig config = TestHelpers.createTestConfig(); handshakeRequest.handshake.config = config; string handshakeResposeMessage = SimCapiJsonMaker.DebugReciveMessages.create_HANDSHAKE_RESPONSE(handshakeRequest.handshake); transporter.reciveJsonMessage(handshakeResposeMessage); transporter.update(delayToGuaranteeMessageProceed()); Assert.AreEqual(3, testMessagePipe.messageCount()); string onReadyJson = testMessagePipe.sendMessageList[1]; // deserialize first message Message.OnReady onReady = Message.OnReady.create(onReadyJson); // Verify valid OnReady message Assert.AreNotEqual(null, onReady); string valueChangeJson = testMessagePipe.sendMessageList[2]; // deserialize second message SimCapiMessageType messageType = SimCapiMessageType.ALLOW_INTERNAL_ACCESS; object message = Message.deserialize(valueChangeJson, ref messageType); // Verify valid ValueChange message Assert.AreNotEqual(null, message); Assert.AreEqual(typeof(Message.ValueChange), message.GetType()); // Send INITIAL_SETUP_COMPLETE message string initialSetupCompleteJson = SimCapiJsonMaker.DebugReciveMessages.create_INITIAL_SETUP_COMPLETE(transporter.getHandshake()); transporter.reciveJsonMessage(initialSetupCompleteJson); }
public static RegisterLocalDataChangeListener create(string jsonString) { JObject jObject = deserializeJson(jsonString); JProperty type = jObject.Property("type"); JProperty handshake = jObject.Property("handshake"); JProperty values = jObject.Property("values"); if (type == null || type.Value == null || type.Value.Type != JTokenType.Integer) { return(null); } // Must have handshake if (handshake == null) { return(null); } if (values == null) { return(null); } SimCapiMessageType messageType = type.ToObject <SimCapiMessageType>(); if (messageType != SimCapiMessageType.REGISTER_LOCAL_DATA_CHANGE_LISTENER) { return(null); } JToken key = values.Value["key"]; JToken simId = values.Value["simId"]; if (key == null && key.Type != JTokenType.String) { return(null); } if (simId == null && simId.Type != JTokenType.String) { return(null); } RegisterLocalDataChangeListener registerLocalDataChangeListener = new RegisterLocalDataChangeListener(); registerLocalDataChangeListener.handshake = handshake.Value.ToObject <SimCapiHandshake>(); registerLocalDataChangeListener.key = key.ToObject <string>(); registerLocalDataChangeListener.simId = simId.ToObject <string>(); return(registerLocalDataChangeListener); }
public void reciveJsonMessage(string jsonString) { SimCapiMessageType messageType = SimCapiMessageType.ALLOW_INTERNAL_ACCESS; System.Object message = Message.deserialize(jsonString, ref messageType); if (message == null) { return; } handleMessage(message, messageType); }
public static ValueChange createWithJsonString(string jsonString) { JObject jObject = deserializeJson(jsonString); JProperty type = jObject.Property("type"); JProperty handshake = jObject.Property("handshake"); JProperty values = jObject.Property("values"); if (type == null || type.Value == null || type.Value.Type != JTokenType.Integer) { return(null); } if (handshake == null) { return(null); } if (values == null) { return(null); } SimCapiMessageType messageType = type.ToObject <SimCapiMessageType>(); if (messageType != SimCapiMessageType.VALUE_CHANGE) { return(null); } ValueChange valueChange = new ValueChange(); valueChange.handshake = handshake.Value.ToObject <SimCapiHandshake>(); foreach (JProperty property in values.Values()) { SimCapiValue simCapiValue = createUnitySimCapiValue(property); if (simCapiValue != null) { valueChange.values.Add(simCapiValue.key, simCapiValue); } } return(valueChange); }
public static System.Object deserialize(string jsonString, ref SimCapiMessageType messageType) { JObject jObject; try { jObject = JsonConvert.DeserializeObject <JObject>(jsonString); } catch (System.Exception) { return(null); } JProperty type = jObject.Property("type"); if (type == null) { throw new System.Exception("Invalid message structure"); } JToken typeValue = jObject["type"]; if (typeValue.Type != JTokenType.Integer) { throw new System.Exception("type property should be an Integer"); } messageType = typeValue.ToObject <SimCapiMessageType>(); switch (messageType) { case SimCapiMessageType.HANDSHAKE_RESPONSE: return(HandshakeResponse.create(jObject)); case SimCapiMessageType.VALUE_CHANGE: return(ValueChange.create(jObject)); case SimCapiMessageType.CONFIG_CHANGE: return(ConfigChange.create(jObject)); case SimCapiMessageType.VALUE_CHANGE_REQUEST: return(ValueChangeRequest.create(jObject)); case SimCapiMessageType.CHECK_COMPLETE_RESPONSE: return(CheckCompleteResponse.create(jObject)); case SimCapiMessageType.CHECK_START_RESPONSE: return(CheckStartResponse.create(jObject)); case SimCapiMessageType.GET_DATA_RESPONSE: return(GetDataResponse.create(jObject)); case SimCapiMessageType.SET_DATA_RESPONSE: return(SetDataResponse.create(jObject)); case SimCapiMessageType.API_CALL_RESPONSE: return(null); case SimCapiMessageType.INITIAL_SETUP_COMPLETE: return(InitialSetupComplete.create(jObject)); case SimCapiMessageType.RESIZE_PARENT_CONTAINER_RESPONSE: return(ResizeParentContainerResponse.create(jObject)); case SimCapiMessageType.ALLOW_INTERNAL_ACCESS: return(AllowInternalAccess.create(jObject)); case SimCapiMessageType.REGISTERED_LOCAL_DATA_CHANGED: return(RegisteredLocalDataChanged.create(jObject)); } throw new System.Exception("Invalid message type"); }