public static void CheckLegacyLoad <T>(TypedValue expectedValue, string legacyXml) where T : IComparable { const string namespaces = @"xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns=""http://enterprisedata.com.au/readinow/v2/query/2.0"""; string legacyXml2 = legacyXml.Replace("<TypedValue", "<TypedValue " + namespaces); TypedValue actualValue = TypedValueHelper.FromXml(legacyXml2); T expectedData = (T)expectedValue.Value; T actualData = (T)actualValue.Value; Assert.AreEqual(expectedValue.Type.GetType(), actualValue.Type.GetType(), "Check type"); Assert.IsTrue(expectedData.CompareTo(actualData) == 0, "Check Data"); Assert.AreEqual(expectedValue.SourceEntityTypeId, actualValue.SourceEntityTypeId, "Check SourceEntityTypeId"); }
public static void CheckRoundTrip <T>(TypedValue expectedValue, string expectedXml) where T : IComparable { // Verify serialize string actualXml = TypedValueHelper.ToXml(expectedValue); string actualXml2 = RemoveNamespaces(actualXml); Assert.AreEqual(expectedXml, actualXml2, "Check XML"); // Attempt deserialize TypedValue actualValue = TypedValueHelper.FromXml(actualXml); // Verify type Assert.AreEqual(expectedValue.Type.GetType(), actualValue.Type.GetType(), "Check type"); // Verify data if (expectedValue.Value == null) { Assert.IsNull(actualValue.Value, "Check null data"); } else { T expectedData = (T)expectedValue.Value; T actualData = (T)actualValue.Value; Assert.IsTrue(expectedData.CompareTo(actualData) == 0, "Check Data"); } Assert.AreEqual(expectedValue.SourceEntityTypeId, actualValue.SourceEntityTypeId, "Check SourceEntityTypeId"); // Attempt alternate deserialize XmlDocument doc = new XmlDocument(); doc.LoadXml(actualXml); TypedValue actualValue2 = TypedValueHelper.FromXml(doc.DocumentElement); // Verify type2 Assert.AreEqual(expectedValue.Type.GetType(), actualValue2.Type.GetType(), "Check type2"); // Verify data2 if (expectedValue.Value == null) { Assert.IsNull(actualValue2.Value, "Check null data2"); } else { T expectedData = (T)expectedValue.Value; T actualData = (T)actualValue2.Value; Assert.IsTrue(expectedData.CompareTo(actualData) == 0, "Check Data2"); } Assert.AreEqual(expectedValue.SourceEntityTypeId, actualValue2.SourceEntityTypeId, "Check SourceEntityTypeId2"); }
/// <summary> /// Reconstructs the condition object from the specified XML node and XML element name. /// </summary> /// <param name="node">The XML node containing the condition XML.</param> /// <param name="elementName">The name of the XML element containing the condition data.</param> /// <returns>The condition object.</returns> public static Condition ReadConditionXml(XmlNode node, string elementName) { if (node == null) { throw new ArgumentNullException("node"); } if (string.IsNullOrEmpty(elementName)) { throw new ArgumentNullException("elementName"); } var condition = new Condition(); if (XmlHelper.EvaluateSingleNode(node, elementName)) { XmlNode conditionNode = XmlHelper.SelectSingleNode(node, elementName); condition.Operator = (ConditionType)XmlHelper.ReadElementEnum(conditionNode, "operator", typeof(ConditionType), ConditionType.Unspecified); condition.ColumnName = XmlHelper.ReadElementString(conditionNode, "columnName", string.Empty); //database type condition.ColumnType = DatabaseType.UnknownType; if (XmlHelper.EvaluateSingleNode(conditionNode, "type")) { XmlNode typeNode = XmlHelper.SelectSingleNode(conditionNode, "type"); condition.ColumnType = DatabaseType.FromXml(typeNode); } if (DatabaseTypeHelper.IsTypeRelationshipField(condition.ColumnType)) { XmlNode argumentsNode = XmlHelper.SelectSingleNode(conditionNode, "arguments"); foreach (XmlNode argumentNode in argumentsNode.ChildNodes) { TypedValue argument = TypedValueHelper.FromXml(argumentNode); if (argument != null) { condition.Arguments.Add(argument); if (argument.Value != null) { string strArgumentValue = argument.Value.ToString(); long longArgumentValue; if (long.TryParse(strArgumentValue, out longArgumentValue)) { Resource resource = Model.Entity.Get <Resource>(new EntityRef(longArgumentValue)); ConvertArgumentValue(strArgumentValue, resource == null ? "Missing" : resource.Name); } } } } } else { XmlNodeList argumentNodes = XmlHelper.SelectNodes(conditionNode, "arguments"); foreach (TypedValue argument in argumentNodes.Cast <XmlNode>().Select(argumentNode => TypedValueHelper.ReadTypedValueXml(argumentNode, "argument")).Where(argument => argument != null)) { condition.Arguments.Add(argument); } } } return(condition); }