Тесты для функции табулирования


import static java.lang.Math.*;

public class Main {

    public static void main(String[] args) {

        Main prog = new Main();
        prog.run();
    }

    public double log2(double N) {
        return (log(N) / log(2));
    }

    public double tabulation(double[] yValues, double[] xValues, double a, double x1, int x2, double step) {

        double x = 0;
        double y = 0;
        int i = 0;

        for (x = x1; x <= x2; x += step) {

            if (x > 1.2) {
                y = log2(x + 1);
                yValuesArrayAdd(yValues, y, i);
                xValuesArrayAdd(xValues, x, i);
                i++;

            }

            if (x <= 1.2) {
                //y = pow(sin(sqrt(a * x)), 2);
                y = (sin(sqrt(a * x))) * (sin(sqrt(a * x)));
                yValuesArrayAdd(yValues, y, i);
                xValuesArrayAdd(xValues, x, i);
                i++;

            }
            System.out.println(y);
        }

        return y;
    }

    public int calculateSteps(double x1, int x2, double step) {

        return (int) ((x2 - x1) / step) + 1;
    }

    public double[] yValuesArrayCreate(double[] yValues, int n) {
        return yValues = new double[n];
    }

    public double[] xValuesArrayCreate(double[] xValues, int n) {
        return xValues = new double[n];
    }

    public void yValuesArrayAdd(double[] yValues, double y, int i) {
        yValues[i] = y;
    }

    public void xValuesArrayAdd(double[] xValues, double x, int i) {
        xValues[i] = x;
    }

  

    public void run() {

        double a = 20.3;
        double x1 = 0.5;
        int x2 = 2;
        double step = 0.005;

        int n = calculateSteps(x1, x2, step);
        double[] yValues = null;
        double[] xValues = null;
        yValues = yValuesArrayCreate(yValues, n);
        xValues = xValuesArrayCreate(xValues, n);

        tabulation(yValues, xValues, a, x1, x2, step);


Всем привет, нужно написать функцию табулирования функции. Вот я вроде бы написал, но прошу подсказок: какие тесты (JUnit 5) можно написать для данной функции? Также если увидите ошибки, скажите мне пожалуйста.


Ответы (1 шт):

Автор решения: Klioda

Пока не могу комментировать, так что ответом, извиняюсь. Но хотел сказать, что стоило бы создать метод, который возвращает результат этой функции для одного x, например:

double calculateFunction(double x, double a) {
    if (x > 1.2) {
        return log2(x + 1);
    } else {
        return (sin(sqrt(a * x))) * (sin(sqrt(a * x)));
    }
}

Лучше, в том числе для тестирования, когда каждый метод отвечает за что-то одно.

→ Ссылка