Задание 2. Написание процедуры тестирования для класса Employee
Напишите процедуру, которая считывает данные из файла. Данные, которые вы читаете из файла, будут использоваться для инициализации экземпляров класса Employee. Вы должны написать операторы для тестирования конструктора и каждого метода класса Employee. Используйте оператор message для записи данных в файл.
Создайте новый каталог с именем Test внутри каталога Server/src/Sandbox:
- В Progress Explorer выберите каталог Sandbox.
- Щёлкните по нему правой кнопкой мыши и выберите пункт меню New -> Folder.
- Введите Test в поле для имени каталог.
- Щёлкните по кнопке Finish.
Создайте новую ABL-процедуру с именем TestEmployee.p в каталоге Test:
- Щёлкните правой кнопкой мыши по каталогу Test.
- Выберите пункт меню New -> ABL Procedure.
- Введите имя процедуру TestEmployee.p.
- Щёлкните по кнопке Finish.
В новом процедурном файле вам необходимо определить переменную с типом Employee. Чтобы сделать это необходимо сначала с помощью оператора using в начале секции Definitions перед оператором обработки ошибок указать пакет и имя класса Employee следующим образом:
using Sandbox.TestClass.Employee.
В конце секции Definitions определите переменную с именем Phones как массив из трёх элементов с типом данных character.
define variable Phones as character extent 3 no-undo.
Определите переменную с именем Emp и типом Employee
define variable Emp as Employee no-undo.
Добавьте оператор output to с указанием каталога и имени файла, в который вы хотите выводить сообщения о ходе работы процедуры.
output to value ("C:\OpenEdge\WRK\TestEmployee.txt").
Добавьте оператор для создания экземпляра Employee и присвоения ссылки на этот экземпляр переменной Emp.
Emp = new Employee().
Добавьте оператор assign для присвоения телефонных номеров для каждого элемента массива Phones. Используйте индексные значения 1,2,3 для доступа к каждому элементу массива. Номер телефонов должны быть в кавычках, так как элементы массива имеют тип данных character.
assign Phones[1] = "921 321 15 90" Phones[2] = "921 421 35 30" Phones[3] = "921 758 25 41" .
Добавьте оператор для инициализации только что созданного экземпляра Employee с указанием в качестве параметров постоянных значений соответствующих типам данных, которые ожидает метод Initialize(). Для передачи номеров телефонов используйте переменную Phones.
Emp:Initialize( input 1001, input "Иван", input "Иванов", input "Невский 123", input "02067-2294", input Phones, input 40, input "Торговый представитель").
Добавьте оператор message для записи информации о сотруднике в выходной файл. Для этого используйте метод GetInfo() класса Employee и его экземпляра.
message Emp:GetInfo() skip.
Вы протестировали этот экземпляр Employee. Добавьте оператор delete для его удаления.
delete object Emp.
Теперь создайте ещё один экземпляр Employee и повторно используйте переменную Emp для хранения ссылки на этот экземпляр.
Emp = new Employee().
Добавьте оператор assign для присвоения номеров телефонов массиву Phones.
assign Phones[1] = "931 123 51 09" Phones[2] = "931 124 53 03" Phones[3] = "931 857 52 14" .
Добавьте оператор инициализации экземпляра Employee с новыми значениями параметров и номерами телефонов.
Emp:Initialize( input 1001, input "Пётр", input "Петров", input "Московский 12", input "01458-7589", input Phones, input 40, input "Торговый представитель").
Добавьте оператор вызова метода SetVacation() для экземпляра чтобы установить количество часов отдыха равным 100.
Подсказка: вы можете ввести в строке только имя переменной Emp, которая является в данный момент ссылкой на экземпляр Employee, и последним символом указать двоеточие. В этом случае Developer Studio выдаст вам подсказку со списком из всех свойств и методов класса Employee. Вам останется только выбрать необходимое.
Emp:SetVacationHours(input 100).
Добавьте оператор message для записи информации о новом сотруднике в выходной файл. Для этого используйте метод GetInfo() класса Employee и его экземпляра.
message Emp:GetInfo() skip.
Добавьте оператор delete для его удаления экземпляра Employee.
delete object Emp.
Закройте выходной файл.
output close.
Добавьте оператор выхода из процедуры return.
Сохраните файл и убедитесь в отсутствии ошибок компиляции.
Листинг процедуры TestEmployee.p:
/* *************************** Definitions ************************** */ using Sandbox.TestClass.Employee. block-level on error undo, throw. define variable Phones as character extent 3 no-undo. define variable Emp as Employee no-undo. /* *************************** Main Block *************************** */ output to value ("C:\OpenEdge\WRK\TestEmployee.txt"). Emp = new Employee(). assign Phones[1] = "921 321 15 90" Phones[2] = "921 421 35 30" Phones[3] = "921 758 25 41" . Emp:Initialize( input 1001, input "Иван", input "Иванов", input "Невский 123", input "02067-2294", input Phones, input 40, input "Торговый представитель"). message Emp:GetInfo() skip. delete object Emp. Emp = new Employee(). assign Phones[1] = "931 123 51 09" Phones[2] = "931 124 53 03" Phones[3] = "931 857 52 14" . Emp:Initialize( input 1001, input "Пётр", input "Петров", input "Московский 12", input "01458-7589", input Phones, input 40, input "Торговый представитель"). emp:SetVacationHours(input 100). message Emp:GetInfo() skip. delete object Emp. output close.