FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
OneScript/tests/console.os at develop · dmpas/OneScript · GitHub
dmpas
/
OneScript
Public
forked from
EvilBeaver/OneScript
Notifications
You must be signed in to change notification settings
Fork
0
Star
3
Code
Pull requests
0
Actions
Projects
Wiki
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Wiki
Security and quality
Insights
Expand file tree
Breadcrumbs
OneScript
/
tests
/
console.os
Copy path
More file actions
More file actions
Latest commit
History
History
History
157 lines (111 loc) · 7.92 KB
Breadcrumbs
OneScript
/
tests
/
console.os
Copy path
File metadata and controls
157 lines (111 loc) · 7.92 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
Перем
юТест
;
Функция
ПолучитьСписокТестов
(
ЮнитТестирование
)
Экспорт
юТест
=
ЮнитТестирование
;
ВсеТесты
=
Новый
Массив
;
ВсеТесты.Добавить(
"ТестДолжен_ПроверитьЧтоСтандартныйПотокВводаЭтоПоток"
)
;
ВсеТесты.Добавить(
"ТестДолжен_ПроверитьТаймаутЧтенияСтандартногоПотокВвода"
)
;
#Если Не Linux Тогда
// TODO: https://github.com/EvilBeaver/OneScript/issues/1255
ВсеТесты.Добавить(
"ТестДолжен_ПроверитьПередачуДанныхВСкриптЧерезСтандартныйПотокВвода"
)
;
#КонецЕсли
ВсеТесты.Добавить(
"ТестДолжен_ПроверитьПеренаправлениеВывода"
)
;
ВсеТесты.Добавить(
"ТестДолжен_ПроверитЦветКонсоли"
)
;
Возврат
ВсеТесты
;
КонецФункции
Процедура
ТестДолжен_ПроверитьЧтоСтандартныйПотокВводаЭтоПоток
()
Экспорт
ПотокВвода
=
Консоль.ОткрытьСтандартныйПотокВвода()
;
юТест.ПроверитьРавенство(
Тип
(
"Поток"
)
,
ТипЗнч
(ПотокВвода)
,
"Ошибка открытия стандартного потока ввода"
)
;
КонецПроцедуры
Процедура
ТестДолжен_ПроверитьТаймаутЧтенияСтандартногоПотокВвода
()
Экспорт
ПутьКОскрипт
=
ОбъединитьПути(
КаталогПрограммы
()
,
"oscript.dll"
)
;
КодСкрипта
=
"ВходящийПоток = Консоль.ОткрытьСтандартныйПотокВвода();
|ВходящийПоток.ТаймаутЧтения = 100;
|Чтение = Новый ЧтениеТекста();
|Чтение.Открыть(ВходящийПоток);
|Попытка
| Сообщить(СокрЛП(Чтение.Прочитать()));
|Исключение
| Сообщить(ИнформацияобОшибке().ПодробноеОписаниеОшибки());
| ВызватьИсключение;
|КонецПопытки;"
;
ТекстСкрипта
=
Новый
ТекстовыйДокумент()
;
ТекстСкрипта.УстановитьТекст(КодСкрипта)
;
ВремФайл
=
ПолучитьИмяВременногоФайла
(
"os"
)
;
ТекстСкрипта.Записать(ВремФайл)
;
ТестовыеДанные
=
""
;
ИсполняемаяКоманда
=
СтрШаблон
(
"dotnet
""
%1
""
""
%2
""
"
,
ПутьКОскрипт
,
ВремФайл)
;
#Если Windows Тогда
СтрокаЗапуска
=
СтрШаблон
(
"cmd /c
""
%1
""
"
,
ИсполняемаяКоманда)
;
#Иначе
СтрокаЗапуска
=
СтрШаблон
(
"sh -c '%1'"
,
ИсполняемаяКоманда)
;
#КонецЕсли
Процесс
=
СоздатьПроцесс(СтрокаЗапуска
,
,
Истина
)
;
Процесс.Запустить()
;
МаксимумОжидания
=
1000
;
ИнтервалОжидания
=
100
;
ВсегоОжидание
=
0
;
Пока
НЕ
Процесс.Завершен
Цикл
Приостановить(ИнтервалОжидания)
;
ВсегоОжидание
=
ВсегоОжидание
+
ИнтервалОжидания
;
Если
ВсегоОжидание
>=
МаксимумОжидания
Тогда
Процесс.Завершить()
;
юТест.ТестПровален(
"Ошибка чтения пустого стандартного потока ввода. Истекло время ожидания."
)
;
КонецЕсли
;
КонецЦикла
;
ВыводКоманды
=
СокрЛП
(Процесс.ПотокВывода.Прочитать())
;
УдалитьФайлы
(ВремФайл)
;
Сообщить
(ВыводКоманды)
;
юТест.ПроверитьРавенство(ВыводКоманды
,
ТестовыеДанные
,
"Ошибка чтения пустого стандартного потока ввода."
)
;
КонецПроцедуры
Процедура
ТестДолжен_ПроверитьПередачуДанныхВСкриптЧерезСтандартныйПотокВвода
()
Экспорт
ПутьКОскрипт
=
ОбъединитьПути(
КаталогПрограммы
()
,
"oscript.dll"
)
;
КодСкрипта
=
"Чтение = Новый ЧтениеТекста();
|Чтение.Открыть(Консоль.ОткрытьСтандартныйПотокВвода());
|Сообщить(СокрЛП(Чтение.Прочитать()));
|"
;
ТекстСкрипта
=
Новый
ТекстовыйДокумент()
;
ТекстСкрипта.УстановитьТекст(КодСкрипта)
;
ВремФайл
=
ПолучитьИмяВременногоФайла
(
"os"
)
;
ТекстСкрипта.Записать(ВремФайл)
;
ТестовыеДанные
=
"12346"
;
ИсполняемаяКоманда
=
СтрШаблон
(
"echo %1 | dotnet %2 %3"
,
ТестовыеДанные
,
ПутьКОскрипт
,
ВремФайл)
;
#Если Windows Тогда
СтрокаЗапуска
=
СтрШаблон
(
"cmd /c
""
%1
""
"
,
ИсполняемаяКоманда)
;
#Иначе
СтрокаЗапуска
=
СтрШаблон
(
"sh -c '%1'"
,
ИсполняемаяКоманда)
;
#КонецЕсли
Процесс
=
СоздатьПроцесс(СтрокаЗапуска
,
,
Истина
)
;
Процесс.Запустить()
;
Пока
НЕ
Процесс.Завершен
Цикл
Приостановить(
100
)
;
КонецЦикла
;
ВыводКоманды
=
СокрЛП
(Процесс.ПотокВывода.Прочитать())
;
УдалитьФайлы
(ВремФайл)
;
юТест.ПроверитьРавенство(ВыводКоманды
,
ТестовыеДанные
,
"Ошибка чтения стандартного потока ввода."
)
;
КонецПроцедуры
Процедура
ТестДолжен_ПроверитьПеренаправлениеВывода
()
Экспорт
ВФ
=
ПолучитьИмяВременногоФайла
()
;
Поток
=
ФайловыеПотоки
.ОткрытьДляЗаписи(ВФ)
;
Консоль.УстановитьПотокВывода(Поток)
;
Попытка
Сообщить
(
"Привет мир!"
)
;
Исключение
// что-то пошло не так
Консоль.УстановитьПотокВывода(Консоль.ОткрытьСтандартныйПотокВывода())
;
ВызватьИсключение
;
КонецПопытки
;
Поток.Закрыть()
;
Консоль.УстановитьПотокВывода(Консоль.ОткрытьСтандартныйПотокВывода())
;
Чтение
=
Новый
ЧтениеТекста(ВФ
,
Консоль.КодировкаВыходногоПотока)
;
Текст
=
Чтение.Прочитать()
;
Чтение.Закрыть()
;
УдалитьФайлы
(ВФ)
;
юТест.ПроверитьРавенство(
"Привет мир!"
,
СокрЛП
(Текст))
;
КонецПроцедуры
Процедура
ТестДолжен_ПроверитЦветКонсоли
()
Экспорт
// Получение цвета не должно упасть
ЦветТекста
=
Консоль.ЦветТекста
;
ЦветФона
=
Консоль.ЦветФона
;
юТест.ПроверитьТип(ЦветТекста
,
"ЦветКонсоли"
)
;
юТест.ПроверитьТип(ЦветФона
,
"ЦветКонсоли"
)
;
КонецПроцедуры
Back
|
FazBrowse Home
|
New Git URL