-
Notifications
You must be signed in to change notification settings - Fork 108
/
Copy pathfixed-array.os
164 lines (110 loc) · 7.1 KB
/
fixed-array.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
#Использовать asserts
///////////////////////////////////////////////////////////////////////
// Тест класса ФиксированныйМассив
///////////////////////////////////////////////////////////////////////
Перем юТест;
////////////////////////////////////////////////////////////////////
// Программный интерфейс
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_СоздатьФиксированныйМассивПоМассиву");
ВсеТесты.Добавить("ТестДолжен_СоздатьМассивПоФиксированномуМассиву");
ВсеТесты.Добавить("ТестДолжен_ПроверитьНеизменностьФиксированногоМассива");
ВсеТесты.Добавить("ТестДолжен_ПроверитьОтсутствиеНенужныхМетодов");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_СоздатьМассивПоФиксированномуМассиву() Экспорт
Массив = Новый Массив;
юТест.ПодробныеОписанияОшибок(Истина);
Количество = 10;
Пока Количество > 0 Цикл
Массив.Добавить(Количество);
Количество = Количество - 1;
КонецЦикла;
ФиксированныйМассив = Новый ФиксированныйМассив(Массив);
НовыйМассив = Новый Массив(ФиксированныйМассив);
Ожидаем.Что(ТипЗнч(НовыйМассив)).Равно(Тип("Массив"));
Ожидаем.Что(НовыйМассив.Количество(), "количество элементов исходной и полученной структуры совпадут").Равно(Массив.Количество());
Ожидаем.Что(НовыйМассив.ВГраница(), "верхние границы массивов совпадут").Равно(Массив.ВГраница());
Для Инд = 0 По НовыйМассив.ВГраница() Цикл
Ожидаем.Что(НовыйМассив[Инд], "каждый элемент массив совпадает").Равно(Массив[Инд]);
КонецЦикла;
КонецПроцедуры
Процедура ТестДолжен_СоздатьФиксированныйМассивПоМассиву() Экспорт
Массив = Новый Массив;
Количество = 10;
Пока Количество > 0 Цикл
Массив.Добавить(Количество);
Количество = Количество - 1;
КонецЦикла;
ФиксированныйМассив = Новый ФиксированныйМассив(Массив);
Ожидаем.Что(ТипЗнч(ФиксированныйМассив)).Равно(Тип("ФиксированныйМассив"));
Ожидаем.Что(ФиксированныйМассив.Количество(), "количество элементов исходной и полученной структуры совпадут").Равно(Массив.Количество());
Ожидаем.Что(ФиксированныйМассив.ВГраница(), "верхние границы массивов совпадут").Равно(Массив.ВГраница());
Для Инд = 0 По ФиксированныйМассив.ВГраница() Цикл
Ожидаем.Что(ФиксированныйМассив[Инд], "каждый элемент массив совпадает").Равно(Массив[Инд]);
КонецЦикла;
КонецПроцедуры
Процедура ТестДолжен_ПроверитьНеизменностьФиксированногоМассива() Экспорт
Массив = Новый Массив;
Количество = 10;
Пока Количество > 0 Цикл
Массив.Добавить(Количество);
Количество = Количество - 1;
КонецЦикла;
ФиксированныйМассив = Новый ФиксированныйМассив(Массив);
Массив[0] = 0;
Ожидаем.Что(ФиксированныйМассив[0], "не изменился элемент массива").Равно(10);
Массив.Очистить();
Ожидаем.Что(ФиксированныйМассив.Количество(), "не изменился размер массива").Равно(10);
Попытка
ФиксированныйМассив[0] = 5;
Исключение
Ожидаем.Что(ФиксированныйМассив[0], "не изменился элемент массива").Равно(10);
Если Не ИнформацияОбОшибке().Описание = "Индексированное значение доступно только для чтения" Тогда
ВызватьИсключение;
КонецЕсли;
Возврат;
КонецПопытки;
ВызватьИсключение "Значение в фиксированный массив было установлено";
КонецПроцедуры
Процедура ТестДолжен_ПроверитьОтсутствиеНенужныхМетодов() Экспорт
ФиксированныйМассив = Новый ФиксированныйМассив(Новый Массив);
Попытка
ФиксированныйМассив.Добавить(0);
Обнаружен = Истина;
Исключение
Обнаружен = Ложь;
КонецПопытки;
Если Обнаружен Тогда
ВызватьИсключение "Обнаружен метод Добавить!";
КонецЕсли;
Попытка
ФиксированныйМассив.Вставить(0, 0);
Обнаружен = Истина;
Исключение
Обнаружен = Ложь;
КонецПопытки;
Если Обнаружен Тогда
ВызватьИсключение "Обнаружен метод Вставить!";
КонецЕсли;
Попытка
ФиксированныйМассив.Удалить(0);
Обнаружен = Истина;
Исключение
Обнаружен = Ложь;
КонецПопытки;
Если Обнаружен Тогда
ВызватьИсключение "Обнаружен метод Удалить!";
КонецЕсли;
Попытка
ФиксированныйМассив.Очистить();
Обнаружен = Истина;
Исключение
Обнаружен = Ложь;
КонецПопытки;
Если Обнаружен Тогда
ВызватьИсключение "Обнаружен метод Очистить!";
КонецЕсли;
КонецПроцедуры