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 ); } }
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); }