require 'date' require_relative '../providers/students_list' require_relative '../providers/students_list_txt' require_relative '../student' require_relative '../student_short' def run_tests filename = 'students_test.txt' # Инициализируем список студентов с TXT-стратегией students_list = StudentsList.new(filename, TXTPersistenceStrategy.new) # 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 students_list.load 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