public static void Mutable() { var options = new[] { Tuple.Create(Guid.Parse("928aaa46-0d5f-4c07-9cf3-20fb0061f5b9"), "value1"), Tuple.Create(Guid.Parse("db99b72c-1d07-4956-9d4b-33d202234de7"), "value2"), Tuple.Create(Guid.Parse("3fa9e8f9-bf6d-4431-97a5-92b417660192"), "value3") }; var mutableType = ParameterType.Parse("a5417c30-79df-4d5e-9639-b7b088871d47"); MutableEnumeration mutable = new MutableEnumeration(options, mutableType, "3fa9e8f9-bf6d-4431-97a5-92b417660192"); var data = mutable.GetData("anme"); Assert.That(data.TypeId, Is.EqualTo(mutable.TypeId)); Assert.That(data.Name, Is.EqualTo("anme")); Assert.That(data.Elements.Select(e => Tuple.Create(e.Guid, e.Name)), Is.EquivalentTo(options)); Tuple <Guid, string> add = Tuple.Create(Guid.Parse("de6aae1d-d9c3-4f96-93f1-77e5ee23e9e8"), "extra"); mutable.Add(add.Item1, add.Item2); var options2 = options.Concat(add.Only()); Assert.That(mutable.Options, Is.EquivalentTo(options2.Select(o => o.Item1))); foreach (var option in options2) { Assert.That(mutable.GetName(option.Item1), Is.EqualTo(option.Item2)); } Tuple <Guid, string> remove = options[0]; mutable.Remove(remove.Item1); var options3 = options2.Except(remove.Only()); Assert.That(mutable.Options, Is.EquivalentTo(options3.Select(o => o.Item1))); foreach (var option in options3) { Assert.That(mutable.GetName(option.Item1), Is.EqualTo(option.Item2)); } var newOptions = new EnumerationData.Element[] { new EnumerationData.Element("a", Guid.Parse("22094bc3-ea3a-4585-9624-6376379dafa6")), new EnumerationData.Element("b", Guid.Parse("8ff8c0c1-f406-4f69-8cd7-95b90bffc98c")) }; mutable.SetOptions(newOptions); Assert.That(mutable.Options, Is.EquivalentTo(newOptions.Select(o => o.Guid))); foreach (var option in newOptions) { Assert.That(mutable.GetName(option.Guid), Is.EqualTo(option.Name)); } }
private SizedControlSet AddElement(EnumerationData.Element val, int index) { MyTextBox mtb = null; MyButton btn = null; SizedControlSet set = null; Func <RectangleF> textArea = () => { var vertical = ElementArea(m_values.Controls.IndexOf(set)); return(new RectangleF(m_textWidth + 6, vertical.Top, 100, vertical.Height)); }; Func <RectangleF> buttonArea = () => { var vertical = ElementArea(m_values.Controls.IndexOf(set)); return(new RectangleF(m_textWidth + 6 + 100 + 2, vertical.Top, 20, 20)); }; Action callback = () => { m_values.Controls.Remove(set); ResetSize(); drawWindow1.Refresh(); }; mtb = new MyTextBox(drawWindow1, textArea, MyTextBox.InputFormEnum.Text); btn = new MyPlusButton(buttonArea, callback, Colors.ForegroundPen, Colors.BackgroundBrush, false); set = new SizedControlSet(() => mtb.RequestedArea, mtb, btn); m_values.Controls.Insert(index, set); mtb.Text = val.Name; return(set); }