Лабораторная работа №1
- Функция arccos(x)
- Программный модуль для сортировки массива по алгоритму Шелла
- Описание предметной области:
Артур, нервничая, вошел следом и был ошеломлен, увидев развалившегося в кресле человека, положившего ноги на пульт управления и ковыряющего левой рукой в зубах правой головы. Правая голова, казалось, была всецело занята этим, но зато левая улыбалась широко и непринужденно. Количество вещей, видя которые, Артур не верил своим глазам, все росло. Его челюсть отвисла.
Отчет
Задание 1
Для arccos(x) были выбраны точки x= 0, 0.1, -0.1, 0.5, -0.5, 1, -1, 1.1, -1.1 Тесты для точек 0, 0.1, -0.1, 0.5, -0.5 проходят Для точек 1 и 0 тесты не проходят из-за большой погрешности В точках 1.1 и -1.1 тестируется код на получение ошибки
Пример тестов
@Test fun testFunction1() = assertAll(
{assertEquals(1.5707963267949, _acos(0.0), 0.00001)},
{assertEquals(1.47062891, _acos(0.1), 0.001)},
{assertEquals(1.67096375, _acos(-0.1), 0.001)}
)
Задание 2
Для проверки работы алгоритма Шелла алгоритм был разбит на 2 части:
- основная
- шаг
Тестировались как результаты работы алгоритма, так и промежуточные шаги
Пример тестов
val midTestArr: IntArray = intArrayOf(23, 12, 1, 8, 34, 54, 2, 3)
@Test fun middleTest() = assertAll(
{
val expected: IntArray = intArrayOf(23, 12, 1, 3, 34, 54, 2, 8)
stepShellSort(midTestArr, 4, 8)
Assert.assertArrayEquals(expected, midTestArr)
},{
val expected: IntArray = intArrayOf(1, 3, 2, 8, 23, 12, 34, 54)
stepShellSort(midTestArr, 2, 8)
Assert.assertArrayEquals(expected, midTestArr)
},{
val expected: IntArray = intArrayOf(1, 2, 3, 8, 12, 23, 34, 54)
stepShellSort(midTestArr, 1, 8)
Assert.assertArrayEquals(expected, midTestArr)
}
)
Задание 3
Для тесторивания доменной модели пришлось перехватывать системный поток вывода и менять на свой, после чего проверять выводы работы функций. Так же были особые фунции, которые приходилось тестировать отдельно
Пример теста
@Test fun roomEnterTests() {
val room: Room = Room()
val person: Person = Person("Артур", "Голова Артура", "левая рука Артура", "правая рука Артура", "левая нога Артура", "правая нога Артура")
room.enter(person)
assertTrue(room.persons.contains(person))
}
I use arch btw