|
|
@ -0,0 +1,71 @@
|
|
|
|
|
|
|
|
require 'date'
|
|
|
|
|
|
|
|
require_relative 'students_list_txt'
|
|
|
|
|
|
|
|
require_relative 'student'
|
|
|
|
|
|
|
|
require_relative 'student_short'
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def run_tests
|
|
|
|
|
|
|
|
filename = 'students_test.txt'
|
|
|
|
|
|
|
|
students_list = Students_list_txt.new(filename)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 1. Добавление студентов. Передаём временный ID '0', который будет заменён.
|
|
|
|
|
|
|
|
student1 = Student.new(
|
|
|
|
|
|
|
|
id: '0', git: 'gituser1', surname: 'Иванов', name: 'Иван', patronymic: 'Иванович',
|
|
|
|
|
|
|
|
birth_date: Date.new(2000, 5, 14), phone: '1234567890', telegram: '@ivanov', email: 'ivanov@example.com'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
student2 = Student.new(
|
|
|
|
|
|
|
|
id: '0', git: 'gituser2', surname: 'Петров', name: 'Петр', patronymic: 'Петрович',
|
|
|
|
|
|
|
|
birth_date: Date.new(1999, 8, 22), phone: '0987654321', telegram: '@petrov', email: 'petrov@example.com'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
students_list.add_student(student1)
|
|
|
|
|
|
|
|
students_list.add_student(student2)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
puts "Добавленные студенты:\n#{students_list.students.map(&:to_s).join("\n")}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 2. Сохранение и загрузка из файла
|
|
|
|
|
|
|
|
students_list.save_to_file
|
|
|
|
|
|
|
|
students_list.load_from_file
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
puts "\nЗагруженные студенты из файла:\n#{students_list.students.map(&:to_s).join("\n")}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 3. Получение студента по ID
|
|
|
|
|
|
|
|
student = students_list.get_student_by_id(1)
|
|
|
|
|
|
|
|
puts "\nНайден студент по ID 1: #{student}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 4. Получение "страничного" списка StudentShort (1 элемент на страницу, 1-я страница)
|
|
|
|
|
|
|
|
short_list = students_list.get_k_n_student_short_list(1, 1)
|
|
|
|
|
|
|
|
puts "\nПервая страница списка StudentShort:"
|
|
|
|
|
|
|
|
short_list.get_data.rows_count.times do |row|
|
|
|
|
|
|
|
|
puts short_list.get_data.item(row, 1) # выводим Фамилия и инициалы
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 5. Обновление студента
|
|
|
|
|
|
|
|
updated_student = Student.new(
|
|
|
|
|
|
|
|
id: '0', git: 'gituser1_updated', surname: 'Иванов', name: 'Иван', patronymic: 'Иванович',
|
|
|
|
|
|
|
|
birth_date: Date.new(2000, 5, 14), phone: '1112223333', telegram: '@ivanov_updated', email: 'ivanov@newmail.com'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
students_list.update_student_by_id(1, updated_student)
|
|
|
|
|
|
|
|
puts "\nОбновленный студент с ID 1: #{students_list.get_student_by_id(1)}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 6. Удаление студента
|
|
|
|
|
|
|
|
students_list.delete_student_by_id(2)
|
|
|
|
|
|
|
|
puts "\nСтуденты после удаления студента с ID 2:\n#{students_list.students.map(&:to_s).join("\n")}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 7. Проверка сортировки
|
|
|
|
|
|
|
|
student3 = Student.new(
|
|
|
|
|
|
|
|
id: '0', git: 'gituser3', surname: 'Алексеев', name: 'Алексей', patronymic: 'Алексеевич',
|
|
|
|
|
|
|
|
birth_date: Date.new(2001, 12, 5), phone: '2223334444', telegram: '@alekseev', email: 'alekseev@example.com'
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
students_list.add_student(student3)
|
|
|
|
|
|
|
|
students_list.sort_students!
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
puts "\nСписок студентов после сортировки:"
|
|
|
|
|
|
|
|
students_list.students.each do |st|
|
|
|
|
|
|
|
|
puts st.to_s
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 8. Количество студентов
|
|
|
|
|
|
|
|
puts "\nОбщее количество студентов: #{students_list.get_student_short_count}"
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
run_tests
|