protected void runTestButton_Click(object sender, EventArgs e)
        {
            #region [.set controls state.]
            runTestButton.Visible         = false;
            testFileUpload1.Visible       = false;
            testFileUpload2.Visible       = false;
            showOnlyErrorCheckBox.Visible = false;
            ruleCategoryDropDownList
            .Visible = false;
            againHyperLink1.Visible = true; againHyperLink1.NavigateUrl = NAVIGATE_URL.FormatEx(RuleCategory.ToString(), ShowOnlyError);
            againHyperLink2.Visible = true; againHyperLink2.NavigateUrl = NAVIGATE_URL.FormatEx(RuleCategory.ToString(), ShowOnlyError);
            //repeatLinkButton1    .Visible = true;
            //repeatLinkButton2    .Visible = true;
            backHyperLink2.Visible = true;
            #endregion

            #region [.read text-file.]
            var testXmlFile = new TestXmlFile(TestFileContent, RuleCategory);
            #endregion

            resultDiv.Controls.Add(new Label()
            {
                Text = ruleCategoryDropDownList.SelectedItem.Text.InBrackets()
            });
            resultDiv.Controls.AddHr();

            #region [.test.]
            var errorCount = 0;
            foreach (var rule in testXmlFile.TestRules)
            {
                try
                {
                    var result = GetOpinionMiningOutputResult(rule);

                    #region [.check.]
                    if (result.OperateRulesNames == null)
                    {
                        throw (new TestException(rule.Text.ToHtmlBold().InSingleQuotes() +
                                                 "<br/> - не сработало ни одно правило" +
                                                 ", должно " + rule.Id.ToHtmlBold()));
                    }
                    else if (result.OperateRulesNames.Count != 1)
                    {
                        throw (new TestException(rule.Text.ToHtmlBold().InSingleQuotes() +
                                                 "<br/> - должно &nbsp;&nbsp;&nbsp; " + rule.Id.ToHtmlBold().InSingleQuotes() +
                                                 "<br/>,  сработало " + result.OperateRulesNames.Count + " правил(а): " + result.OperateRulesNames.ToHtml()));
                    }
                    else if (!rule.Id.Equals(result.OperateRulesNames.First(), StringComparison.InvariantCultureIgnoreCase))
                    {
                        throw (new TestException(rule.Text.ToHtmlBold().InSingleQuotes() +
                                                 "<br/> - должно &nbsp;&nbsp;&nbsp; " + rule.Id.ToHtmlBold() +
                                                 "<br/>,  сработало " + result.OperateRulesNames.First().ToString().ToHtmlBold()));
                    }
                    #endregion

                    if (ShowOnlyError)
                    {
                        continue;
                    }

                    resultDiv.Controls.AddDiv4OkMessage(rule);
                }
                catch (Exception ex)
                {
                    #region
                    errorCount++;

                    resultDiv.Controls.AddDiv4ExceptionMessage(ex, rule);

                    if (ex is CommunicationException)
                    {
                        resultDiv.Controls.AddDiv("....выполниение теста прервано....");
                        return;
                    }
                    #endregion
                }
                resultDiv.Controls.AddHr();
            }

            resultDiv.Controls.AddDiv4FinalMessage(testXmlFile, errorCount);
            #endregion
        }
 public static void AddDiv4FinalMessage(this ControlCollection controls, TestXmlFile testXmlFile, int errorCount)
 {
     controls.AddDiv("<br/>&nbsp;&nbsp;&nbsp;&nbsp;(Всего: " + testXmlFile.TestRules.Count + " штук, &nbsp;" + ((errorCount == 0) ? "Ошибок НЕТ)" : "Ошибок: " + errorCount + " штук)"));
 }