public static void TestDynamicEnumSource() { TypeSet t = new TypeSet(); { DynamicEnumerationData d1 = new DynamicEnumerationData("d1", ParameterType.Parse("ed53be0d-c62a-4c0c-9f6e-e92d996bf3df")); DynamicEnumerationData d2 = new DynamicEnumerationData("d2", ParameterType.Parse("6980f4d7-4ad8-4bc0-bacb-4907d922d4e9")); t.AddDynamicEnum(d1); t.AddDynamicEnum(d2); var doc1 = new object(); var doc2 = new object(); var A1 = t.Make(d1.TypeId, "test1", Id <Parameter> .Parse("f95d62c4-b6c5-4c31-be69-c0cc3a35697e"), "default1", doc1) as IDynamicEnumParameter; var A2 = t.Make(d1.TypeId, "test2", Id <Parameter> .Parse("3ff9251e-bd1f-4543-9719-3b8e5992f8ce"), "default2", doc2) as IDynamicEnumParameter; var B1 = t.Make(d2.TypeId, "test3", Id <Parameter> .Parse("117a01a5-21df-4252-8120-8a11fe601ec6"), "default3", doc1) as IDynamicEnumParameter; A1.SetValueAction("shane").Value.Redo(); B1.SetValueAction("not").Value.Redo(); Assert.That(A1.Options, Is.EquivalentTo(new[] { "shane", "default2" })); Assert.That(A2.Options, Is.EquivalentTo(new[] { "shane", "default2" })); Assert.That(B1.Options, Is.EquivalentTo(new[] { "not" })); } }
private static void CheckDynamicEnums(List <DynamicEnumerationData> dynamicEnums, TypeSet t, Action CheckContents, ref ParameterType modifiedType) { DynamicEnumerationData DE1 = new DynamicEnumerationData("DE1", ParameterType.Parse("89e54648-0572-4de2-82a6-3cdf5ea8aebc")); DynamicEnumerationData DE2 = new DynamicEnumerationData("DE2", ParameterType.Parse("17b8ce6a-da16-459e-ab58-c77f62c5eba4")); DynamicEnumerationData DE3 = new DynamicEnumerationData("DE3", ParameterType.Parse("882d169d-b697-4ff3-8f4d-d0a3b18549c7")); t.AddDynamicEnum(DE1); dynamicEnums.Add(DE1); Assert.That(modifiedType, Is.EqualTo(DE1.TypeId)); modifiedType = null; CheckContents(); t.Remove(DE1.TypeId); dynamicEnums.Remove(DE1); Assert.That(modifiedType, Is.EqualTo(DE1.TypeId)); modifiedType = null; CheckContents(); t.AddDynamicEnum(DE2); dynamicEnums.Add(DE2); Assert.That(modifiedType, Is.EqualTo(DE2.TypeId)); modifiedType = null; CheckContents(); t.AddDynamicEnum(DE3); dynamicEnums.Add(DE3); Assert.That(modifiedType, Is.EqualTo(DE3.TypeId)); modifiedType = null; CheckContents(); DynamicEnumerationData DE3Modified = new DynamicEnumerationData("DE3Modified", ParameterType.Parse("882d169d-b697-4ff3-8f4d-d0a3b18549c7")); t.RenameType(DE3.TypeId, DE3Modified.Name); dynamicEnums[dynamicEnums.IndexOf(DE3)] = DE3Modified; Assert.That(modifiedType, Is.EqualTo(DE3Modified.TypeId)); modifiedType = null; CheckContents(); }
/// <summary> /// Populate a domain's various type data from xml /// </summary> /// <param name="domain">The domain to fill</param> /// <param name="root">The xml root node</param> private static void ReadTypes(DomainData domain, XElement root) { foreach (var a in root.Elements("DynamicEnumeration")) { DynamicEnumerationData typeData = new DynamicEnumerationData(a.Attribute("name").Value, Guid.Parse(a.Attribute("guid").Value)); domain.DynamicEnumerations.Add(typeData); } foreach (var a in root.Elements("Enumeration")) { var name = a.Attribute("name").Value; var guid = Guid.Parse(a.Attribute("guid").Value); var values = a.Elements("Value").Select(value => new EnumerationData.Element(value.Attribute("name").Value, Guid.Parse(value.Attribute("guid").Value))); EnumerationData typeData; if (a.Element("Default") != null) { if (a.Element("Default").Attributes("guid").Any()) { var def = Guid.Parse(a.Element("Default").Attribute("guid").Value); typeData = new EnumerationData(name, guid, values, def); } else if (a.Element("Default").Attributes("name").Any()) { var def = a.Element("Default").Attribute("name").Value; typeData = new EnumerationData(name, guid, values, def); } else { throw new Exception("Enumeration declared with a default node but no recognised default value"); } } else { typeData = new EnumerationData(name, guid, values); } domain.Enumerations.Add(typeData); } foreach (var a in root.Elements("Decimal")) { var aName = a.Attribute("name").Value; var guid = Guid.Parse(a.Attribute("guid").Value); var aMax = a.Attributes("max").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault(); var aMin = a.Attributes("min").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault(); var aDef = a.Attributes("default").Select <XAttribute, decimal?>(b => decimal.Parse(b.Value)).SingleOrDefault(); DecimalData typeData = new DecimalData(aName, guid, aMax, aMin, aDef); domain.Decimals.Add(typeData); } foreach (var a in root.Elements("Integer")) { var aName = a.Attribute("name").Value; var guid = Guid.Parse(a.Attribute("guid").Value); var aMax = a.Attributes("max").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault(); var aMin = a.Attributes("min").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault(); var aDef = a.Attributes("default").Select <XAttribute, int?>(b => int.Parse(b.Value)).SingleOrDefault(); IntegerData typeData = new IntegerData(aName, guid, aMax, aMin, aDef); domain.Integers.Add(typeData); } }