-
Notifications
You must be signed in to change notification settings - Fork 108
/
Copy pathfile-object.os
308 lines (205 loc) · 16 KB
/
file-object.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
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
Перем юТест;
Функция Версия() Экспорт
Возврат "0.1";
КонецФункции
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСуществованиеФайлаНеКешируетсяПослеУдаления");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСуществованиеФайлаНеКешируетсяПослеСоздания");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСуществованиеКаталогаНеКешируетсяПослеСоздания");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоСуществованиеКаталогаНеКешируетсяПослеУдаления");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоДляДиректорииВозвращаетсяРодитель");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоВозвращаетсяРазмер");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоДляКаталогаВозвращаетсяВремяИзменения");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧтоНесуществующийФайлНельзяПроверитьНаФайлКаталог");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеИмени");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеПолногоИмени");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеРасширения");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеИмениБезРасширения");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеКаталогаВПолномПути");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеКаталогаВКорневомПути");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСвойстваОбъектаИнициированногоПустойСтрокой");
ВсеТесты.Добавить("ТестДолжен_ПроверитьПолучениеДатСозданияИИзменения");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_ПроверитьЧтоСуществованиеФайлаНеКешируетсяПослеУдаления() Экспорт
ВремФайл = ПолучитьИмяВременногоФайла("os");
ЗаписьТекста = Новый ЗаписьТекста(ВремФайл);
ЗаписьТекста.ЗаписатьСтроку("---");
ЗаписьТекста.Закрыть();
Файл = Новый Файл(ВремФайл);
ФайлФактический = Новый Файл(ВремФайл);
юТест.ПроверитьИстину(Файл.Существует());
УдалитьФайлы(Файл.ПолноеИмя);
// проверили, что он реально удален
юТест.ПроверитьЛожь(ФайлФактический.Существует());
юТест.ПроверитьЛожь(Файл.Существует());
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоСуществованиеФайлаНеКешируетсяПослеСоздания() Экспорт
ВремФайл = ПолучитьИмяВременногоФайла("os");
Файл = Новый Файл(ВремФайл);
юТест.ПроверитьЛожь(Файл.Существует());
ЗаписьТекста = Новый ЗаписьТекста(ВремФайл);
ЗаписьТекста.ЗаписатьСтроку("---");
ЗаписьТекста.Закрыть();
юТест.ПроверитьИстину(Файл.Существует());
УдалитьФайлы(Файл.ПолноеИмя);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоСуществованиеКаталогаНеКешируетсяПослеСоздания() Экспорт
ВремФайл = ПолучитьИмяВременногоФайла("os");
Файл = Новый Файл(ВремФайл);
ФайлФактический = Новый Файл(ВремФайл);
юТест.ПроверитьЛожь(Файл.Существует(), "файл существует но не должен");
СоздатьКаталог(ВремФайл);
юТест.ПроверитьИстину(Файл.Существует());
УдалитьФайлы(Файл.ПолноеИмя);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоСуществованиеКаталогаНеКешируетсяПослеУдаления() Экспорт
ВремФайл = ПолучитьИмяВременногоФайла("os");
СоздатьКаталог(ВремФайл);
Файл = Новый Файл(ВремФайл);
юТест.ПроверитьИстину(Файл.Существует());
УдалитьФайлы(Файл.ПолноеИмя);
юТест.ПроверитьЛожь(Файл.Существует());
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоВозвращаетсяРазмер() Экспорт
ФайлТеста = Новый Файл(ТекущийСценарий().Источник);
юТест.ПроверитьНеравенство(0, ФайлТеста.Размер());
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоНесуществующийФайлНельзяПроверитьНаФайлКаталог() Экспорт
Путь = ПолучитьИмяВременногоФайла();
Файл = Новый Файл(Путь);
Попытка
Файл.ЭтоФайл();
Исключение
юТест.ТестПройден();
КонецПопытки;
Попытка
Файл.ЭтоКаталог();
Исключение
юТест.ТестПройден();
Возврат;
КонецПопытки;
юТест.ТестПровален("Ожидаемое исключение не возникло.");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоДляДиректорииВозвращаетсяРодитель() Экспорт
КаталогВФ = КаталогВременныхФайлов();
ВременныйКаталог = ПолучитьИмяВременногоФайла();
СоздатьКаталог(ВременныйКаталог);
Попытка
ФайлПроверка = Новый Файл(ВременныйКаталог);
юТест.ПроверитьРавенство(КаталогВФ, ФайлПроверка.Путь);
юТест.ПроверитьРавенство(ПолучитьРазделительПути(), Прав(ФайлПроверка.Путь,1));
Исключение
УдалитьФайлы(ВременныйКаталог);
ВызватьИсключение;
КонецПопытки;
КонецПроцедуры
Процедура ТестДолжен_ПроверитьЧтоДляКаталогаВозвращаетсяВремяИзменения() Экспорт
Каталог = Новый Файл(ТекущийСценарий().Каталог);
юТест.ПроверитьИстину(Каталог.ПолучитьВремяИзменения() <> Неопределено);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеИмени() Экспорт
Файл = Новый Файл(ТекущийСценарий().Источник);
юТест.ПроверитьРавенство("file-object.os", Файл.Имя);
КаталогСкрипта = Новый Файл(Файл.Путь);
юТест.ПроверитьРавенство("tests", КаталогСкрипта.Имя);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеИмениБезРасширения() Экспорт
Файл = Новый Файл(ТекущийСценарий().Источник);
юТест.ПроверитьРавенство("file-object", Файл.ИмяБезРасширения);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеПолногоИмени() Экспорт
Файл = Новый Файл(ТекущийСценарий().Источник);
юТест.ПроверитьРавенство(ТекущийСценарий().Источник, Файл.ПолноеИмя);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеРасширения() Экспорт
Файл = Новый Файл(ТекущийСценарий().Источник);
юТест.ПроверитьРавенство(".os", Файл.Расширение);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеКаталогаВПолномПути() Экспорт
СтарыйТекущийКаталог = ТекущийКаталог();
ПутьЭталон = КаталогПрограммы();
УстановитьТекущийКаталог(ПутьЭталон);
УстановитьТекущийКаталог("..");
РодительВычисленный = ТекущийКаталог() + ПолучитьРазделительПути();
УстановитьТекущийКаталог(СтарыйТекущийКаталог);
// убедимся, что среда вернула путь без разделителя на конце
юТест.ПроверитьНеРавенство(ПолучитьРазделительПути(), Прав(ПутьЭталон,1));
СтрокаПутиСРазделителемВКонце = ПутьЭталон + ПолучитьРазделительПути();
СтрокаПутиБезРазделителяВКонце = ПутьЭталон;
Файл1 = Новый Файл(СтрокаПутиБезРазделителяВКонце);
Файл2 = Новый Файл(СтрокаПутиСРазделителемВКонце);
юТест.ПроверитьРавенство(Файл1.Путь, Файл2.Путь, "Равенство вариантов с разделителем и без");
юТест.ПроверитьРавенство(РодительВычисленный, Файл1.Путь, "Равенство эталонному значению");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьПолучениеКаталогаВКорневомПути() Экспорт
СИ = Новый СистемнаяИнформация();
Если Найти(СИ.ВерсияОС, "Windows") > 0 Тогда
КореньАбсолютный = "C:\";
Иначе
КореньАбсолютный = "/";
КонецЕсли;
Файл = Новый Файл(КореньАбсолютный);
юТест.ПроверитьРавенство(КореньАбсолютный, Файл.Путь, "Абсолютный корень");
КореньОтносительный = "ЧтоТоГдеТо";
Файл = Новый Файл(КореньОтносительный);
юТест.ПроверитьРавенство("", Файл.Путь, "Относительный корень");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьСвойстваОбъектаИнициированногоПустойСтрокой() Экспорт
Ф = Новый Файл("");
юТест.ПроверитьРавенство(Ф.Имя, "", "Свойство Имя");
юТест.ПроверитьРавенство(Ф.ИмяБезРасширения, "", "Свойство ИмяБезРасширения");
юТест.ПроверитьРавенство(Ф.ПолноеИмя, "", "Свойство ПолноеИмя");
юТест.ПроверитьРавенство(Ф.Путь, "" ,"Свойство Путь");
юТест.ПроверитьРавенство(Ф.Расширение, "", "Свойство Расширение");
юТест.ПроверитьЛожь(Ф.Существует(), "Файл существует");
КонецПроцедуры
Функция ОпределитьДискДляФайла(Знач Путь)
Перем СИ, КорневойКаталог;
СИ = Новый СистемнаяИнформация;
ДискПроверяемогоФайла = Неопределено;
Для Каждого мИмяДиска Из СИ.ИменаЛогическихДисков Цикл
мДиск = Новый ИнформацияОДиске(мИмяДиска);
Если СтрНачинаетсяС(Путь, мДиск.КорневойКаталог.Путь) Тогда
Если (ДискПроверяемогоФайла = Неопределено)
Или (СтрДлина(мДиск.КорневойКаталог.Путь) > СтрДлина(ДискПроверяемогоФайла.КорневойКаталог.Путь)) Тогда
ДискПроверяемогоФайла = мДиск;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Возврат ДискПроверяемогоФайла;
КонецФункции
Функция ФайловаяСистемаПоддерживаетВремяСоздания(Знач ПроверяемоеИмяФайла)
мДиск = ОпределитьДискДляФайла(ПроверяемоеИмяФайла);
Если мДиск = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Возврат мДиск.ИмяФС = "NTFS"
Или мДиск.ИмяФС = "FAT32";
КонецФункции
Процедура ТестДолжен_ПроверитьПолучениеДатСозданияИИзменения() Экспорт
ТекущаяДата = ТекущаяДата();
ВремФайл = ПолучитьИмяВременногоФайла("os");
Если Не ФайловаяСистемаПоддерживаетВремяСоздания(ВремФайл) Тогда
Возврат;
КонецЕсли;
ЗаписьТекста = Новый ЗаписьТекста(ВремФайл);
ЗаписьТекста.ЗаписатьСтроку("---");
ЗаписьТекста.Закрыть();
Файл = Новый Файл(ВремФайл);
ВремяСоздания = Файл.ПолучитьВремяСоздания();
юТест.ПроверитьРавенствоДатСТочностью2Секунды(ТекущаяДата, ВремяСоздания);
Приостановить(3000);
ТекущаяДата = ТекущаяДата();
ЗаписьТекста.Открыть(ВремФайл);
ЗаписьТекста.ЗаписатьСтроку("---");
ЗаписьТекста.Закрыть();
Файл = Новый Файл(ВремФайл);
ВремяСоздания = Файл.ПолучитьВремяСоздания();
ВремяИзменения = Файл.ПолучитьВремяИзменения();
юТест.ПроверитьРавенствоДатСТочностью2Секунды(ТекущаяДата, ВремяИзменения);
юТест.ПроверитьМеньше(ВремяСоздания, ВремяИзменения);
УдалитьФайлы(ВремФайл);
КонецПроцедуры