private OrmIndexFields CreateOrmIndexFields(TestAttributeValuesType valuesType) { OrmIndexFields originalAttribute = new OrmIndexFields(); bool isValues1 = valuesType == TestAttributeValuesType.Values1; originalAttribute.IncludedFields.Add( new StringTreeNode { DisplayValue = isValues1 ? "Field1" : "RevertedField1", IconIndex = isValues1 ? 1 : 2 }); originalAttribute.IncludedFields.Add( new StringTreeNode { DisplayValue = isValues1 ? "Field2" : "RevertedField2", IconIndex = isValues1 ? 2 : 1 }); originalAttribute.KeyFields.Add( new StringTreeNode { DisplayValue = isValues1 ? "Field3" : "RevertedField3", IconIndex = isValues1 ? 2 : 1 }); originalAttribute.KeyFields.Add( new StringTreeNode { DisplayValue = isValues1 ? "Field4" : "RevertedField4", IconIndex = isValues1 ? 1 : 2 }); return(originalAttribute); }
private void TestSerializationForOrmIndexFields() { const string referentialXml = "<fields><keyFields><item value=\"Field3\" image=\"2\" order=\"0\" /><item value=\"Field4\" image=\"1\" order=\"1\" /></keyFields><includedFields><item value=\"Field1\" image=\"1\" order=\"0\" /><item value=\"Field2\" image=\"2\" order=\"1\" /></includedFields></fields>"; OrmIndexFields originalAttribute = CreateOrmIndexFields(TestAttributeValuesType.Values1); string xml = originalAttribute.SerializeToString(); Assert.IsTrue(Util.StringEqual(xml, referentialXml, true), "Serialized xml form of 'OrmIndexFields' type differs from referential xml."); OrmIndexFields clonedAttribute = null; Action cloneAttribute = () => clonedAttribute = (OrmIndexFields)originalAttribute.Clone(); cloneAttribute(); Assert.IsTrue(originalAttribute.EqualsTo(clonedAttribute)); Action testClonedNotEquals = () => Assert.IsFalse(originalAttribute.EqualsTo(clonedAttribute)); cloneAttribute(); clonedAttribute.KeyFields.RemoveAt(0); testClonedNotEquals(); for (int i = 0; i < 2; i++) { cloneAttribute(); clonedAttribute.KeyFields[i].DisplayValue = Guid.NewGuid().ToString(); testClonedNotEquals(); cloneAttribute(); clonedAttribute.KeyFields[i].IconIndex = 10; testClonedNotEquals(); } cloneAttribute(); clonedAttribute.IncludedFields.RemoveAt(0); testClonedNotEquals(); for (int i = 0; i < 2; i++) { cloneAttribute(); clonedAttribute.IncludedFields[i].DisplayValue = Guid.NewGuid().ToString(); testClonedNotEquals(); cloneAttribute(); clonedAttribute.IncludedFields[i].IconIndex = 99; testClonedNotEquals(); } }
private static void CustomReadPropertiesFromElements(SerializationContext serializationContext, EntityIndex element, XmlReader reader) { while (!serializationContext.Result.Failed && !reader.EOF && reader.NodeType == System.Xml.XmlNodeType.Element) { switch (reader.LocalName) { case "unique": if (reader.IsEmptyElement) { // No serialized value, must be default one. SerializationUtilities.Skip(reader); // Skip this tag. } else { Defaultable <bool> unique = new Defaultable <bool>(); unique.DeserializeFromXml(reader); element.Unique = unique; SerializationUtilities.SkipToNextElement(reader); reader.SkipToNextElementFix(); } break; case "fillFactor": if (reader.IsEmptyElement) { // No serialized value, must be default one. SerializationUtilities.Skip(reader); // Skip this tag. } else { Defaultable <double> fillfactor = new Defaultable <double>(); fillfactor.DeserializeFromXml(reader); element.FillFactor = fillfactor; SerializationUtilities.SkipToNextElement(reader); reader.SkipToNextElementFix(); } break; case "indexName": if (reader.IsEmptyElement) { // No serialized value, must be default one. SerializationUtilities.Skip(reader); // Skip this tag. } else { Defaultable <string> indexName = new Defaultable <string>(); indexName.DeserializeFromXml(reader); element.IndexName = indexName; SerializationUtilities.SkipToNextElement(reader); reader.SkipToNextElementFix(); } break; case "fields": if (reader.IsEmptyElement) { // No serialized value, must be default one. SerializationUtilities.Skip(reader); // Skip this tag. } else { OrmIndexFields fields = new OrmIndexFields(); fields.DeserializeFromXml(reader); element.Fields = fields; SerializationUtilities.SkipToNextElement(reader); reader.SkipToNextElementFix(); } break; default: return; // Don't know this element. } } }