public void Test_SetAdminValues()
        {
            #region Проверка переключения режимов работы
            try {
                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY | AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                //??? на практике исключение этого флага не потребуется
                //panel.ModeGetRDGValues &= ~AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                //Assert.IsTrue ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                //Assert.IsFalse ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                panel.ModeGetRDGValues  = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
            } catch (InvalidOperationException ioe) {
                Assert.IsTrue(string.Equals(ioe.Message, "PanelAdmin.ModeGetRDGValues::set - взаимоисключающие значения..."));
            }
            #endregion

            // проверка наличия необходимых "статических" форм
            Assert.IsNotNull(FormMain.formGraphicsSettings);

            string mesDebug = string.Empty;

            FormChangeMode.KeyDevice prevKey = FormChangeMode.KeyTECComponentEmpty
            , nextKey = FormChangeMode.KeyTECComponentEmpty;
            Action onEventUnitTestSetDataGridViewAdminCompleted;
            PanelAdmin.DelegateUnitTestNextIndexSetValuesRequest delegateNextIndexSetValuesRequest;
            Task taskPerformButtonSetClick
            , taskPerformComboBoxTECComponentSelectedIndex;
            TaskStatus taskStatusPerformButtonSetClick
            , taskStatusPerformComboBoxTECComponentSelectedIndex;
            CancellationTokenSource cancelTokenSource;

            onEventUnitTestSetDataGridViewAdminCompleted = null;

            taskPerformButtonSetClick =
                taskPerformComboBoxTECComponentSelectedIndex =
                    null;

            cancelTokenSource = new CancellationTokenSource();
            // вызывается при ретрансляции панелью события имитации отправления запроса на обновление значений
            delegateNextIndexSetValuesRequest = delegate(FormChangeMode.KeyDevice next_key, TECComponent comp, DateTime date, CONN_SETT_TYPE type, IEnumerable <int> list_id_rec, string [] queries) {
                Assert.IsNotNull(list_id_rec);
                Assert.IsFalse(list_id_rec.ToArray().Length < 24);
                //TODO: проверка значений массива на истинность (сравнить с идентификаторами из таблицы БД)

                nextKey = next_key;

                mesDebug = $"ТЭЦ={comp.tec.name_shr}; комп.={comp.name_shr};{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT.ToString()}]: [{queries[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT]}])"
                           + $"{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE.ToString()}]: [{queries[(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE]}]"
                           + $"{Environment.NewLine}(идентификаторы: [{string.Join(";", list_id_rec.Select(id => id.ToString()).ToArray())}]";

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);
            };
            // вызывается при завершении заполнения 'DatagridView' значениями
            onEventUnitTestSetDataGridViewAdminCompleted = delegate() {
                mesDebug = "Handler On 'EventUnitTestSetDataGridViewAdminCompleted'...";

                Logging.Logg().Debug(mesDebug, Logging.INDEX_MESSAGE.NOT_SET);
                System.Diagnostics.Debug.WriteLine(mesDebug);

                if (prevKey.Equals(nextKey) == true)
                {
                    // старт задачи сохранения значений
                    taskPerformButtonSetClick = Task.Factory.StartNew(delegate() {
                        panel.PerformButtonSetClick(delegateNextIndexSetValuesRequest);
                    });
                }
                else
                if (!(nextKey.Id < 0))
                {
                    taskPerformComboBoxTECComponentSelectedIndex = Task.Factory.StartNew(delegate() {
                        // установить новый индекс (назначить новый компонент-объект)
                        panel.PerformComboBoxTECComponentSelectedKey(prevKey = nextKey);
                    });
                }
                else
                {
                    ;
                }
            };

            try {
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.EventUnitTestSetDataGridViewAdminCompleted += onEventUnitTestSetDataGridViewAdminCompleted;

                //task.ContinueWith (t => {
                //}
                //, cancelTokenSource.Token);

                int cnt   = 0
                , cnt_max = 26;
                // исходные состояния задач
                taskStatusPerformButtonSetClick =
                    Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status : TaskStatus.WaitingForActivation;
                taskStatusPerformComboBoxTECComponentSelectedIndex =
                    Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status : TaskStatus.WaitingForActivation;

                while ((cnt++ < cnt_max) &&
                       (!(nextKey == FormChangeMode.KeyTECComponentEmpty)))
                {
                    // ожидать
                    Thread.Sleep(1000);
                    // сообщение для индикации ожидания
                    System.Diagnostics.Debug.WriteLine($"Ожидание: счетчик <{cnt}> из <{cnt_max}>...");
                }

                // состояния задач по завершению цикла
                taskStatusPerformButtonSetClick =
                    Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status : taskStatusPerformButtonSetClick;
                taskStatusPerformComboBoxTECComponentSelectedIndex =
                    Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status : TaskStatus.WaitingForActivation;
                System.Diagnostics.Debug.WriteLine(string.Format("Окончание ожидания <{0}>, задача-Click is <{1}>, задача-Selected is <{2}>, nextIndex={3}..."
                                                                 , cnt
                                                                 , Equals(taskPerformButtonSetClick, null) == false ? taskPerformButtonSetClick.Status.ToString() : "не создана"
                                                                 , Equals(taskPerformComboBoxTECComponentSelectedIndex, null) == false ? taskPerformComboBoxTECComponentSelectedIndex.Status.ToString() : "не создана"
                                                                 , nextKey));
            } catch (Exception e) {
                System.Diagnostics.Debug.WriteLine(e.Message);

                Assert.Fail(e.Message);
            }
        }
Пример #2
0
        public void Test_SaveGTP_REC()
        {
            #region Проверка переключения режимов работы
            try {
                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY | AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                //??? на практике исключение этого флага не потребуется
                //panel.ModeGetRDGValues &= ~AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                //Assert.IsTrue ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                //Assert.IsFalse ((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.EXPORT;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);

                panel.ModeGetRDGValues = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);

                panel.ModeGetRDGValues |= AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST;
                panel.ModeGetRDGValues  = AdminTS.MODE_GET_RDG_VALUES.DISPLAY;
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);
                Assert.IsFalse((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.EXPORT) == AdminTS.MODE_GET_RDG_VALUES.EXPORT);
            } catch (InvalidOperationException ioe) {
                Assert.IsTrue(string.Equals(ioe.Message, "PanelAdmin.ModeGetRDGValues::set - взаимоисключающие значения..."));
            }
            #endregion

            Action onEventUnitTestSetDataGridViewAdminCompleted
            , taskPerformButtonSetClick;
            Task       task;
            TaskStatus taskStatus;
            CancellationTokenSource cancelTokenSource;

            onEventUnitTestSetDataGridViewAdminCompleted = null;
            taskPerformButtonSetClick = null;

            task = null;

            cancelTokenSource = new CancellationTokenSource();

            taskPerformButtonSetClick = delegate() {
                panel.PerformButtonSetClick((TEC t, TECComponent comp, DateTime date, string [] query) => {
                    Assert.IsNotNull(query);

                    System.Diagnostics.Debug.WriteLine($"ТЭЦ={t.name_shr}; комп.={comp.name_shr};{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT.ToString ()}]: [{query [(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.INSERT]}])"
                                                       + $"{Environment.NewLine}([{ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE.ToString ()}]: [{query [(int)ASUTP.Database.DbTSQLInterface.QUERY_TYPE.UPDATE]}]");
                });
            };

            onEventUnitTestSetDataGridViewAdminCompleted = delegate() {
                System.Diagnostics.Debug.WriteLine("Handler On 'EventUnitTestSetDataGridViewAdminCompleted'...");
                // отменить регистрацию, чтобы исключить повторный вызов
                // повторный вызов произойдет при обновлении информации на панели, который обязательно произойдет при сохранении значений
                if (Equals(onEventUnitTestSetDataGridViewAdminCompleted, null) == false)
                {
                    panel.EventUnitTestSetDataGridViewAdminCompleted -= onEventUnitTestSetDataGridViewAdminCompleted;
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("Обработчик события 'Panel::EventUnitTestSetDataGridViewAdminCompleted' не определен..."));
                }

                if (Equals(task, null) == true)
                {
                    task = Task.Factory.StartNew(taskPerformButtonSetClick);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine(string.Format("Пропустить старт задачи..."));
                }
            };

            try {
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.DISPLAY) == AdminTS.MODE_GET_RDG_VALUES.DISPLAY);
                Assert.IsTrue((panel.ModeGetRDGValues & AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST) == AdminTS.MODE_GET_RDG_VALUES.UNIT_TEST);

                panel.EventUnitTestSetDataGridViewAdminCompleted += onEventUnitTestSetDataGridViewAdminCompleted;

                //task.ContinueWith (t => {
                //}
                //, cancelTokenSource.Token);

                int cnt   = 0
                , cnt_max = 26;
                taskStatus = Equals(task, null) == false ? task.Status : TaskStatus.WaitingForActivation;
                while ((cnt++ < cnt_max) &&
                       ((!(taskStatus == TaskStatus.Canceled)) &&
                        (!(taskStatus == TaskStatus.Faulted)) &&
                        (!(taskStatus == TaskStatus.RanToCompletion))))
                {
                    Thread.Sleep(1000);
                    taskStatus = Equals(task, null) == false ? task.Status : taskStatus;
                    System.Diagnostics.Debug.WriteLine($"Ожидание: счетчик <{cnt}> из <{cnt_max}>...");
                }
                System.Diagnostics.Debug.WriteLine(string.Format("Окончание ожидания <{0}>, задача <{1}>..."
                                                                 , cnt
                                                                 , Equals(task, null) == false ? task.Status.ToString() : "не создана"));
            } catch (Exception e) {
                System.Diagnostics.Debug.WriteLine(e.Message);

                Assert.IsTrue(false);
            }
        }