diff --git a/trunk/ii02704/task_02/doc/README.md b/trunk/ii02704/task_02/doc/README.md
new file mode 100644
index 000000000..f214b4e21
--- /dev/null
+++ b/trunk/ii02704/task_02/doc/README.md
@@ -0,0 +1,40 @@
+
Министерство образования Республики Беларусь
+Учреждение образования
+“Брестский Государственный технический университет”
+Кафедра ИИТ
+
+Лабораторная работа №2
+По дисциплине “Общая теория интеллектуальных систем”
+Тема: “Написание модульных тестов для программы моделирования температуры”
+
+Выполнил:
+Студент 2 курса
+Группы ИИ-27
+Гридчин А.В.
+Проверил:
+Дворанинович Д.А.
+
+Брест 2025
+
+# Общее задание #
+1. Использовать следующий фреймворк для модульного тестирования - [Google Test](https://google.github.io/googletest/).
+2. Написать модульные тесты для основных функций программы. Разместить тесты в каталоге: **trunk\ii0xxyy\task_02\test**.
+3. Исходный код модифицированной программы разместить в каталоге: **trunk\ii0xxyy\task_02\src**.
+4. В файле `readme.md` отразить количество написанных тестов и процент покрытия кода тестами (использовать любой инструмент для анализа покрытия, например, [gcovr](https://gcovr.com/en/stable/)).
+
+## Задание 2.##
+В ходе выполнения было написано три теста. Было написано три теста для функции linear. Покрытие программы составляет 67%. Замер производился с помощью программы OpenCppCoverage(https://github.com/OpenCppCoverage/OpenCppCoverage/releases).
+[==========] Running 3 tests from 1 test suite.
+[----------] Global test environment set-up.
+[----------] 3 tests from Test
+[ RUN ] Test.linearr
+[ OK ] Test.linearr (0 ms)
+[ RUN ] Test.linearr2
+[ OK ] Test.linearr2 (0 ms)
+[ RUN ] Test.linearr3
+[ OK ] Test.linearr3 (0 ms)
+[----------] 3 tests from Test (2 ms total)
+
+[----------] Global test environment tear-down
+[==========] 3 tests from 1 test suite ran. (4 ms total)
+[ PASSED ] 3 tests.
\ No newline at end of file
diff --git a/trunk/ii02704/task_02/src/CMakeLists.txt b/trunk/ii02704/task_02/src/CMakeLists.txt
new file mode 100644
index 000000000..b50d6d032
--- /dev/null
+++ b/trunk/ii02704/task_02/src/CMakeLists.txt
@@ -0,0 +1,10 @@
+cmake_minimum_required (VERSION 3.5)
+project (task_02_ii02704)
+
+add_library(linear_ii02704
+ linear1.cpp)
+
+add_executable (ii02704_task2
+ otis2.cpp)
+
+target_link_libraries(ii02704_task2 PRIVATE linear_ii02704)
diff --git a/trunk/ii02704/task_02/src/Linear.h b/trunk/ii02704/task_02/src/Linear.h
new file mode 100644
index 000000000..3f0643210
--- /dev/null
+++ b/trunk/ii02704/task_02/src/Linear.h
@@ -0,0 +1,18 @@
+#ifndef LINE_H
+#define LINE_H
+#include
+#include
+
+struct Params
+{
+ int k;
+ std::vector y;
+ std::vector u;
+ double a;
+ double b;
+};
+
+void input(Params &s);
+void linear(Params &s, const int& place);
+
+#endif
diff --git a/trunk/ii02704/task_02/src/linear1.cpp b/trunk/ii02704/task_02/src/linear1.cpp
new file mode 100644
index 000000000..3a47f8943
--- /dev/null
+++ b/trunk/ii02704/task_02/src/linear1.cpp
@@ -0,0 +1,31 @@
+#include "Linear.h"
+#include
+
+using namespace std;
+
+void input(Params &s) {
+ cout << "Enter amount of iterations: ";
+ cin >> s.k;
+ s.u.resize(s.k + 1, 0);
+ s.y.resize(s.k + 1, 0);
+ cout << "\nEnter temperature: ";
+ cin >> s.y.at(0);
+ for (auto& warm : s.u) {
+ cout << "\nEnter warm: ";
+ cin >> warm;
+ }
+
+ cout << "Enter const a: ";
+
+ cin >> s.a;
+
+ cout << "Enter const b: ";
+
+ cin >> s.b;
+
+}
+void linear(Params &s, const int& place) {
+ if(s.k >= 0){
+ s.y.at(place + 1) = s.a * s.y.at(place) + s.b * s.u.at(place);
+ }
+}
diff --git a/trunk/ii02704/task_02/src/otis2.cpp b/trunk/ii02704/task_02/src/otis2.cpp
new file mode 100644
index 000000000..aaa07ae6a
--- /dev/null
+++ b/trunk/ii02704/task_02/src/otis2.cpp
@@ -0,0 +1,19 @@
+#include
+#include
+#include "Linear.h"
+
+using namespace std;
+
+
+int main()
+{
+ Params p;
+ input(p);
+ for (int i = 0; i < p.k; i++) {
+ linear(p,i);
+ }
+ for (auto n : p.y) {
+ cout << n << endl;
+ }
+ return 0;
+}
diff --git a/trunk/ii02704/task_02/test/CMakeLists.txt b/trunk/ii02704/task_02/test/CMakeLists.txt
new file mode 100644
index 000000000..50287834f
--- /dev/null
+++ b/trunk/ii02704/task_02/test/CMakeLists.txt
@@ -0,0 +1,46 @@
+cmake_minimum_required(VERSION 3.5)
+project(task_02_ii02704_test)
+
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
+set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
+
+
+include(FetchContent)
+FetchContent_Declare(
+ googletest
+ URL https://github.com/google/googletest/archive/03597a01ee50ed33e9dfd640b249b4be3799d395.zip
+ DOWNLOAD_EXTRACT_TIMESTAMP TRUE
+)
+# For Windows: Prevent overriding the parent project's compiler/linker settings
+set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
+FetchContent_MakeAvailable(googletest)
+
+enable_testing()
+
+
+add_executable(
+ ${CMAKE_PROJECT_NAME}
+ test.cpp
+
+ ../src/linear1.cpp
+ ../src/Linear.h
+)
+target_link_libraries(
+ ${CMAKE_PROJECT_NAME}
+ PRIVATE
+ gtest
+ gtest_main
+ gmock
+)
+
+
+target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE --coverage -g -O0)
+target_link_options(${CMAKE_PROJECT_NAME} PRIVATE --coverage)
+
+
+include(GoogleTest)
+gtest_discover_tests(${CMAKE_PROJECT_NAME})
diff --git a/trunk/ii02704/task_02/test/test.cpp b/trunk/ii02704/task_02/test/test.cpp
new file mode 100644
index 000000000..f08aefc05
--- /dev/null
+++ b/trunk/ii02704/task_02/test/test.cpp
@@ -0,0 +1,45 @@
+#include "gtest/gtest.h"
+#include "../src/Linear.h"
+TEST(Test, linearr) {
+ double res;
+ Params p;
+ p.y.resize(2, 0);
+ p.u.resize(2, 0);
+ p.k = 2;
+ p.y[0] = 13;
+ p.u[0] = 1.3;
+ p.a = 2.3;
+ p.b = 5.6;
+ linear(p,0);
+ res = p.y[1];
+ EXPECT_NEAR(res, 37.18, 0.01);
+}
+TEST(Test, linearr2) {
+ double res;
+ Params p;
+ p.y.resize(2, 0);
+ p.u.resize(2, 0);
+ p.k = 2;
+ p.y[0] = 2.6;
+ p.u[0] = 3.5;
+ p.a = 14.7;
+ p.b = 5.6;
+ linear(p,0);
+ res = p.y[1];
+ EXPECT_NEAR(res, 57.82, 0.01);
+}
+
+TEST(Test, linearr3) {
+ double res;
+ Params p;
+ p.y.resize(2, 0);
+ p.u.resize(2, 0);
+ p.k = 2;
+ p.y[0] = 0.8;
+ p.u[0] = 9.6;
+ p.a = 12.3;
+ p.b = 7.3;
+ linear(p,0);
+ res = p.y[1];
+ EXPECT_NEAR(res, 79.92, 0.01);
+}