-
Notifications
You must be signed in to change notification settings - Fork 119
Expand file tree
/
Copy pathmanaged-com.os
More file actions
192 lines (133 loc) · 11.8 KB
/
Copy pathmanaged-com.os
File metadata and controls
192 lines (133 loc) · 11.8 KB
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
Перем юТест;
Функция Версия() Экспорт
Возврат "0.1";
КонецФункции
Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
юТест = ЮнитТестирование;
ВсеТесты = Новый Массив;
СИ = Новый СистемнаяИнформация;
Если (Найти(СИ.ВерсияОС, "Windows") > 0) И Не (ПеременныеСреды().Получить("APPVEYOR") = "True") Тогда
ВсеТесты.Добавить("ТестДолжен_ПроверитьУстановкуЧисловыхСвойств");
ВсеТесты.Добавить("ТестДолжен_ПроверитьВызовСОпциональнымиПараметрами");
ВсеТесты.Добавить("ПроверитьВыходныеПараметрыComОбъекта");
КонецЕсли;
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеClrОбъекта");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеClrКоллекции");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеClrКоллекцииШаблона");
ВсеТесты.Добавить("ТестДолжен_ПроверитьТипыClrОбъектов");
ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуGetType");
ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуGetTypeДляЭлементовСписка");
ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуGetTypeДляCLRКоллекции");
ВсеТесты.Добавить("ТестДолжен_ПроверитьРаботуТипаНеИзЯдра");
Возврат ВсеТесты;
КонецФункции
Процедура ТестДолжен_ПроверитьУстановкуЧисловыхСвойств() Экспорт
conn = Новый ComObject("ADODB.Connection");
conn.ConnectionString = "Driver={MySQL ODBC 3.51 Driver}; Server=obr-mdb-01; Port=3306; UID=v8; PWD=G0bl1n76; database=db1cprod; option=3;";
conn.CommandTimeOut= 30;
КонецПроцедуры
Процедура ТестДолжен_ПроверитьВызовСОпциональнымиПараметрами() Экспорт
conn = Новый ComObject("ADODB.Connection");
conn.ConnectionString = "Driver={fake driver}; Server=obr-mdb-01; Port=3306; UID=v8; PWD=G0bl1n76; database=db1cprod; option=3;";
conn.CommandTimeOut= 30;
Попытка
conn.Open(,,);
Исключение
Инфо = ИнформацияОбОшибке().Причина;
Если Инфо = Неопределено Тогда
Инфо = ИнформацияОбОшибке();
КонецЕсли;
юТест.ПроверитьИстину(Найти(Инфо.Описание,"[Microsoft]") > 0, Инфо.Описание);
КонецПопытки;
КонецПроцедуры
Процедура ТестДолжен_ПроверитьСозданиеClrОбъекта() Экспорт
РоднойОбъект = Новый COMОбъект("System.Random");
РоднойОбъект.Next();
РоднойОбъект.Next(10);
РоднойОбъект.Next(10, 20);
РоднойОбъект.NextDouble();
КонецПроцедуры
Процедура ТестДолжен_ПроверитьСозданиеClrКоллекции() Экспорт
РоднаяКоллекцияНеШаблон = Новый COMОбъект("System.Collections.ArrayList");
РоднаяКоллекцияНеШаблон.Add(1);
РоднаяКоллекцияНеШаблон.Add("string");
РоднаяКоллекцияНеШаблон.Add('20170808');
юТест.ПроверитьРавенство(РоднаяКоллекцияНеШаблон.Count, 3);
юТест.ПроверитьРавенство(РоднаяКоллекцияНеШаблон[0], 1);
юТест.ПроверитьРавенство(РоднаяКоллекцияНеШаблон[1], "string");
юТест.ПроверитьРавенство(РоднаяКоллекцияНеШаблон[2], '20170808');
КонецПроцедуры
Процедура ТестДолжен_ПроверитьСозданиеClrКоллекцииШаблона() Экспорт
РоднаяКоллекцияШаблон = Новый COMОбъект("System.Collections.Generic.List`1");
РоднаяКоллекцияШаблон.Add(1);
РоднаяКоллекцияШаблон.Add("string");
РоднаяКоллекцияШаблон.Add('20170808');
юТест.ПроверитьРавенство(РоднаяКоллекцияШаблон.Count, 3);
юТест.ПроверитьРавенство(РоднаяКоллекцияШаблон[0], 1);
юТест.ПроверитьРавенство(РоднаяКоллекцияШаблон[1], "string");
юТест.ПроверитьРавенство(РоднаяКоллекцияШаблон[2], '20170808');
КонецПроцедуры
Процедура ТестДолжен_ПроверитьТипыClrОбъектов() Экспорт
РодноеСоответствие = Новый ComОбъект("System.Collections.Generic.Dictionary`2");
РодноеСоответствие.Add("str", 123);
юТест.ПроверитьРавенство (ТипЗнч(РодноеСоответствие), Тип("COMОбъект"), "CLR-тип как COM-объект");
Для Каждого мКлючЗначение Из РодноеСоответствие Цикл
юТест.ПроверитьРавенство(ТипЗнч(мКлючЗначение), Тип("COMОбъект"), "CLR-тип как COM-объект");
КонецЦикла;
КонецПроцедуры
Процедура ПроверитьРаботуGetTypeДляОдногоТипа(ИмяПроверяемогоТипаИлиОбъект, ПространствоИмен, Имя, ЭтоОбъект = Ложь) Экспорт
Если ТипЗнч(ИмяПроверяемогоТипаИлиОбъект) = Тип("Строка") И НЕ ЭтоОбъект Тогда
ИмяПроверяемогоТипа = ИмяПроверяемогоТипаИлиОбъект;
Объект = Новый COMОбъект(ИмяПроверяемогоТипа);
Иначе
Объект = ИмяПроверяемогоТипаИлиОбъект;
юТест.ПроверитьРавенство(ТипЗнч(Объект), Тип("COMОбъект"), "Объект как COM-объект");
КонецЕсли;
Рефлектор = Новый Рефлектор;
юТест.ПроверитьИстину(Рефлектор.МетодСуществует(Объект, "GetType"), "Существует метод `GetType()`, Имя типа " + ИмяПроверяемогоТипа);
ТипОбъекта = Объект.GetType();
юТест.ПроверитьРавенство(ТипЗнч(ТипОбъекта), Тип("COMОбъект"), "Тип - COM-объект " + ИмяПроверяемогоТипа);
юТест.ПроверитьРавенство(ВРЕГ(ПространствоИмен), ВРЕГ(ТипОбъекта.Namespace), "Получили тот тип, который просили " + ИмяПроверяемогоТипа);
юТест.ПроверитьРавенство(ВРЕГ(Имя), ВРЕГ(ТипОбъекта.Name), "Получили тот тип, который просили " + ИмяПроверяемогоТипа);
КонецПроцедуры
Процедура ТестДолжен_ПроверитьРаботуGetType() Экспорт
ПроверитьРаботуGetTypeДляОдногоТипа("System.Random", "System", "Random");
ПроверитьРаботуGetTypeДляОдногоТипа("System.Collections.ArrayList", "System.Collections", "ArrayList");
ПроверитьРаботуGetTypeДляОдногоТипа("System.Collections.Generic.List`1", "System.Collections.Generic", "List`1");
ПроверитьРаботуGetTypeДляОдногоТипа("System.Collections.Generic.Dictionary`2", "System.Collections.Generic", "Dictionary`2");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьРаботуGetTypeДляЭлементовСписка() Экспорт
РоднаяКоллекция = Новый COMОбъект("System.Collections.ArrayList");
РоднаяКоллекция.Add(1);
РоднаяКоллекция.Add("string");
РоднаяКоллекция.Add('20170808');
РоднаяКоллекция.Add(Новый COMОбъект("System.Random"));
юТест.ПроверитьРавенство(ТипЗнч(РоднаяКоллекция[0]), Тип("Число"), "Элемент [0] - это число");
юТест.ПроверитьРавенство(ТипЗнч(РоднаяКоллекция[1]), Тип("Строка"), "Элемент [1] - это строка");
юТест.ПроверитьРавенство(ТипЗнч(РоднаяКоллекция[2]), Тип("Дата"), "Элемент [2] - это дата");
ПроверитьРаботуGetTypeДляОдногоТипа(РоднаяКоллекция[3], "System", "Random");
КонецПроцедуры
Процедура ТестДолжен_ПроверитьРаботуGetTypeДляCLRКоллекции() Экспорт
РоднаяКоллекция = Новый ComОбъект("System.Collections.Generic.Dictionary`2");
РоднаяКоллекция.Add("str", 123);
Для Каждого мКлючЗначение Из РоднаяКоллекция Цикл
юТест.ПроверитьРавенство(ТипЗнч(мКлючЗначение), Тип("COMОбъект"), "CLR-тип как COM-объект");
ПроверитьРаботуGetTypeДляОдногоТипа(мКлючЗначение, "System.Collections.Generic", "KEYVALUEPAIR`2");
юТест.ПроверитьРавенство(ТипЗнч(мКлючЗначение.Key), Тип("Строка"), "мКлючЗначение.Key - это строка");
юТест.ПроверитьРавенство(ТипЗнч(мКлючЗначение.Value), Тип("Число"), "мКлючЗначение.Value - это число");
КонецЦикла;
КонецПроцедуры
Процедура ТестДолжен_ПроверитьРаботуТипаНеИзЯдра() Экспорт
Ури = Новый COMОбъект("System.Uri", "file:///some/file.txt"); // тип НЕ из mscorlib.dll. Должен просто создаться и не упасть
юТест.ПроверитьРавенство(Ури.IsFile, Истина);
ПроверитьРаботуGetTypeДляОдногоТипа(Ури, "System", "Uri");
КонецПроцедуры
Процедура ПроверитьВыходныеПараметрыComОбъекта() Экспорт
// Проверяем, что выходной параметр установился, а также то, что попытки записи во входной параметр не было.
Рег = Новый ФиксированнаяСтруктура("HKEY_LOCAL_MACHINE", "2147483650");
ИмяФайлаКласса = "";
РеестрОС = ПолучитьCOMОбъект("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv");
Рез=РеестрОС.GetStringValue(Рег.HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion","DevicePath", ИмяФайлаКласса);
юТест.ПроверитьРавенство(0, Рез);
юТест.ПроверитьНеравенство("", ИмяФайлаКласса);
КонецПроцедуры