Пример #1
0
        public void IsDispersionLargerThanZero()
        {
            //Объявление параметров, которые поступают на вход маетодам экземплярам классов, которые проходят проверку.
            int    Rows    = 3;
            int    Columns = 5000;
            double A       = 1.621;
            double a       = 0.542;
            double alpha   = 1.732;
            double beta    = 2.903;
            double Sw      = 1.973;
            double tau     = 0.01;
            double ksi     = 11.427;
            double sigma   = 3.464;
            double teta    = 0.286;
            double fi      = 4.414;

            //Объявление экземпляра матрицы коваиаций.
            Practice.Filter.Covariance TestMatrix = new Practice.Filter.Covariance(Rows, Columns, A, a, alpha, beta, Sw, tau, ksi, sigma, teta, fi);
            TestMatrix.CalculateCovarianceMatrix();
            //Объявление экземпляра формирующего фильтра и фильтрация.
            Practice.Filter.FormingFilter TestFormingFilter = new Practice.Filter.FormingFilter(Rows, Columns, tau, ksi, sigma, teta, fi);
            TestFormingFilter.Filter();
            //Объявление экземпляра фильтра калмана и фильтрация.
            Practice.Filter.KalmanFilter TestKalmanFilter = new Practice.Filter.KalmanFilter(Rows, Columns, TestFormingFilter.OutputSignal, TestMatrix);
            TestKalmanFilter.Filter();

            //Коэфициенты для которых считается дисперсия.
            double[] factor = new double[3] {
                0.2, 0.5, 0.8
            };
            for (int i = 0; i < 3; i++)
            {
                //Если дисперсия при всех коэффициентах положительна, то тест пройден.

                //Дисперсия для формирующего фильтра.
                Assert.IsFalse(Practice.StatisticalCharacteristics.Variance((byte)factor[i], TestFormingFilter.OutputSignal) < 0);

                //Дисперсия для  фильтра калмана.
                Assert.IsFalse(Practice.StatisticalCharacteristics.Variance((byte)factor[i], TestKalmanFilter.E) < 0);
            }
        }
        public void UnitTestCalculateNextValues()
        {
            //Посчитанные вручную значения.
            double analyticallycalculate1 = 1.621;
            double analyticallycalculate2 = 11.479;
            double analyticallycalculate3 = -0.2553;

            //Создание экземпляра матрицы и расчёт её значений(первых).
            Practice.Filter.Covariance TestMatrix = new Practice.Filter.Covariance(Rows, Columns, A, a, alpha, beta, Sw, tau, ksi, sigma, teta, fi);
            TestMatrix.CalculateCovarianceMatrix();

            //Точность округления значений.
            int accuracy = 3;

            //Если значения не совпали с подсчитанными вручную, то тест не пройден.
            Assert.IsFalse
            (
                Math.Round(TestMatrix.CovarianceMatrix[0][0, 1], accuracy) != Math.Round(analyticallycalculate1, accuracy) &&
                Math.Round(TestMatrix.CovarianceMatrix[1][0, 1], accuracy) != Math.Round(analyticallycalculate2, accuracy) &&
                Math.Round(TestMatrix.CovarianceMatrix[2][0, 1], accuracy) != Math.Round(analyticallycalculate3, accuracy) &&
                Math.Round(TestMatrix.CovarianceMatrix[3][0, 1], accuracy) != Math.Round(analyticallycalculate3, accuracy)
            );
        }
        public void UnitTestCalculateInitialConditions()
        {
            //Посчитанные вручную значения.
            double analyticallycalculate1 = 1.621;
            double analyticallycalculate2 = 11.479575;
            double analyticallycalculate3 = -0.25704;

            //Создание экземпляра матрицы и расчёт её значений(начальных).
            Practice.Filter.Covariance TestMatrix = new Practice.Filter.Covariance(Rows, Columns, A, a, alpha, beta, Sw, tau, ksi, sigma, teta, fi);
            TestMatrix.CalculateCovarianceMatrix();

            //Если значения не совпали с подсчитанными вручную, то тест не пройден.
            for (int j = 0; j < Rows; j++)
            {
                Assert.IsFalse
                (
                    TestMatrix.CovarianceMatrix[0][j, 0] != analyticallycalculate1 &&
                    TestMatrix.CovarianceMatrix[1][j, 0] != analyticallycalculate2 &&
                    TestMatrix.CovarianceMatrix[2][j, 0] != analyticallycalculate3 &&
                    TestMatrix.CovarianceMatrix[3][j, 0] != analyticallycalculate3
                );
            }
        }
Пример #4
0
        public void TestWrongInputData()
        {
            //Переменная, в которой отмечается, пройден ли тест.
            //Тест содержит такие параметры, при которых программа упадет.
            bool ItsOK = true;
            //Объявление параметров, которые поступают на вход маетодам экземплярам классов, которые проходят проверку.
            int    Rows    = -1;
            int    Columns = 5000;
            double A       = 1.621;
            double a       = 0.542;
            double alpha   = 1.732;
            double beta    = 2.903;
            double Sw      = 1.973;
            double tau     = 0.01;
            double ksi     = 11.427;
            double sigma   = 3.464;
            double teta    = 0.286;
            double fi      = 4.414;

            //Объявление экземпляра формирующего фильтра.
            Practice.Filter.FormingFilter TestFormingFilter = null;

            //Попытка инициализации этого экземплряра и запуск метода с данными параметрами.
            try
            {
                TestFormingFilter = new Practice.Filter.FormingFilter(Rows, Columns, tau, ksi, sigma, teta, fi);
                TestFormingFilter.Filter();
            }
            catch (System.Exception e)
            {
                ItsOK = false;
            }

            //Объявление экземпляра матрицы коваиаций.
            Practice.Filter.Covariance TestMatrix = null;

            //Попытка инициализации этого экземплряра и запуск метода с данными параметрами.
            try
            {
                TestMatrix = new Practice.Filter.Covariance(Rows, Columns, A, a, alpha, beta, Sw, tau, ksi, sigma, teta, fi);
                TestMatrix.CalculateCovarianceMatrix();
            }
            catch (System.Exception e)
            {
                ItsOK = false;
            }

            //Объявление экземпляра фильтра калмана.
            Practice.Filter.KalmanFilter TestKalmanFilter = null;

            //Попытка инициализации этого экземплряра и запуск метода с данными параметрами.
            try
            {
                TestKalmanFilter = new Practice.Filter.KalmanFilter(Rows, Columns, TestFormingFilter.OutputSignal, TestMatrix);
                TestKalmanFilter.Filter();
            }
            catch (System.Exception e)
            {
                ItsOK = false;
            }

            //Если при данных параметрах во время создания экземпляра или в ходе работы метода будет ошибка, то тест будет пройден.
            Assert.IsFalse(ItsOK);
        }