Skip to content

Commit f91053c

Browse files
committed
fix EvilBeaver#1626.1: проверка корректности имени добавляемой колонки
1 parent 140223e commit f91053c

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/OneScript.StandardLibrary/Collections/ValueTable/ValueTableColumnCollection.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,10 @@ public ValueTableColumnCollection(ValueTable owner)
4646
/// <returns>КолонкаТаблицыЗначений</returns>
4747
[ContextMethod("Добавить", "Add")]
4848
public ValueTableColumn Add(string name, TypeDescription type = null, string title = null, int width = 0)
49-
{
49+
{
50+
if (!Utils.IsValidIdentifier(name))
51+
throw ColumnException.WrongColumnName(name);
52+
5053
if (FindColumnByName(name) != null)
5154
throw ColumnException.DuplicatedColumnName(name);
5255

@@ -68,6 +71,9 @@ public ValueTableColumn Add(string name, TypeDescription type = null, string tit
6871
[ContextMethod("Вставить", "Insert")]
6972
public ValueTableColumn Insert(int index, string name, TypeDescription type = null, string title = null, int width = 0)
7073
{
74+
if (!Utils.IsValidIdentifier(name))
75+
throw ColumnException.WrongColumnName(name);
76+
7177
if (FindColumnByName(name) != null)
7278
throw ColumnException.DuplicatedColumnName(name);
7379

tests/valuetable.os

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@
5252
ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуНеупорядочиваемыхТипов");
5353
ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуРазныхТипов");
5454
ВсеТесты.Добавить("ТестДолжен_ПроверитьСортировкуПоПредставлению");
55+
56+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриДобавленииКолонкиСНевернымИменем");
57+
ВсеТесты.Добавить("ТестДолжен_ВызватьИсключениеПриВставкеКолонкиСНевернымИменем");
58+
59+
5560
Возврат ВсеТесты;
5661

5762
КонецФункции
@@ -951,3 +956,25 @@
951956
юТест.ПроверитьРавенство(КодСимвола(ТЗ[3].Тест,1), 917, "greek");
952957
юТест.ПроверитьРавенство(КодСимвола(ТЗ[4].Тест,1), 1045, "cyrillic");
953958
КонецПроцедуры
959+
960+
Процедура ТестДолжен_ВызватьИсключениеПриДобавленииКолонкиСНевернымИменем() Экспорт
961+
ТЗ = Новый ТаблицаЗначений();
962+
Попытка
963+
ТЗ.Колонки.Добавить("!@#");
964+
Исключение
965+
Возврат;
966+
КонецПопытки;
967+
968+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
969+
КонецПроцедуры
970+
971+
Процедура ТестДолжен_ВызватьИсключениеПриВставкеКолонкиСНевернымИменем() Экспорт
972+
ТЗ = Новый ТаблицаЗначений();
973+
Попытка
974+
ТЗ.Колонки.Вставить(0,"!@#");
975+
Исключение
976+
Возврат;
977+
КонецПопытки;
978+
979+
ВызватьИсключение "Должно было быть выдано исключение, но его не было";
980+
КонецПроцедуры

0 commit comments

Comments
 (0)