Example #1
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var ofd = new OpenFileDialog();

            ofd.Filter      = "Файлы xml|*.xml";
            ofd.Multiselect = false;


            var dialogResult = ofd.ShowDialog();

            if (dialogResult == DialogResult.OK)
            {
                using (var stream = ofd.OpenFile())
                {
                    var result = ProblemConditionsHelper.ReadConditionsFromXmlStream(stream);

                    if (!result.Success)
                    {
                        MessageBox.Show("Во время загрузки задачи возникли непредвиденные ошибки", "Ошибка",
                                        MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }

                    _variables.Clear();
                    _variables.AddRange(result.Data.Variables);

                    _rules.Clear();
                    _rules.AddRange(result.Data.Rules);

                    inputDataTextBox.Text = "";

                    RefreshVariablesListView();
                    RefreshRulesListView();
                }
            }
        }
        public void ReadConditionsFromXmlStreamTest()
        {
            using (var mem = new MemoryStream())
            {
                var str    = Resources.input;
                var buffer = Encoding.UTF8.GetBytes(str);
                mem.Write(buffer, 0, buffer.Length);
                mem.Seek(0, SeekOrigin.Begin);

                var result = ProblemConditionsHelper.ReadConditionsFromXmlStream(mem);
                Assert.IsTrue(result.Success);
                Assert.IsNotNull(result.Data);

                Assert.AreEqual(result.Data.Variables.Count, 3);
                Assert.AreEqual(result.Data.Rules.Count, 12);

                Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1"));
                Assert.IsTrue(result.Data.Variables.Any(x => x.Name == "X1" && x.Terms.Any(t => t.Name == "низкий")));

                Assert.IsTrue(result.Data.Rules.All(x => x.Conditions.Any(c => c.FuzzyVariable.Name == "X1") &&
                                                    x.Conditions.Any(c => c.FuzzyVariable.Name == "X2") &&
                                                    x.Conclusion.FuzzyVariable.Name == "Y"));
            }
        }