Пример #1
0
        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));
            }
        }
Пример #2
0
        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);
        }