Skip to content

Commit b18881a

Browse files
committed
fix EvilBeaver#1580.4,6,10: пустой список колонок означает все колонки
1 parent 2a406cd commit b18881a

File tree

2 files changed

+68
-24
lines changed

2 files changed

+68
-24
lines changed

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

Lines changed: 23 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -157,41 +157,39 @@ public ArrayImpl UnloadColumn(IValue column)
157157
return result;
158158
}
159159

160-
private List<ValueTableColumn> GetProcessingColumnList(string ColumnNames, bool EmptyListInCaseOfNull = false)
160+
private List<ValueTableColumn> GetProcessingColumnList(string columnNames, bool emptyListInCaseOfNull = false)
161161
{
162-
List<ValueTableColumn> processing_list = new List<ValueTableColumn>();
163-
if (ColumnNames != null)
164-
{
165-
if (ColumnNames.Trim().Length == 0)
166-
{
167-
// Передали пустую строку вместо списка колонок
168-
return processing_list;
169-
}
162+
var processing_list = new List<ValueTableColumn>();
163+
if (string.IsNullOrEmpty(columnNames)) // Передали пустую строку вместо списка колонок
164+
{
165+
if (!emptyListInCaseOfNull)
166+
{
167+
processing_list.AddRange(Columns);
168+
}
169+
return processing_list;
170+
}
170171

171-
foreach (var column_name in ColumnNames.Split(','))
172-
{
173-
var name = column_name.Trim();
174-
var Column = Columns.FindColumnByName(name);
172+
foreach (var column_name in columnNames.Split(','))
173+
{
174+
var name = column_name.Trim();
175+
var Column = Columns.FindColumnByName(name);
175176

176-
if (Column == null)
177-
throw ColumnException.WrongColumnName(name);
177+
if (Column == null)
178+
throw ColumnException.WrongColumnName(column_name);
178179

179-
if (processing_list.Find( x=> x.Name==name ) == null)
180-
processing_list.Add(Column);
181-
}
182-
}
183-
else if (!EmptyListInCaseOfNull)
184-
{
185-
processing_list.AddRange(Columns);
180+
if (processing_list.Find(x => x.Name == name) == null)
181+
processing_list.Add(Column);
186182
}
183+
187184
return processing_list;
188185
}
189186

190187
/// <summary>
191188
/// Заполнить колонку/колонки указанным значением
192189
/// </summary>
193190
/// <param name="value">Произвольный - Устанавливаемое значение</param>
194-
/// <param name="columnNames">Строка - Список имен колонок для установки значения (разделены запятыми)</param>
191+
/// <param name="columnNames">Строка - Список имен колонок для установки значения (разделены запятыми).
192+
/// Если параметр не указан или передана пустая строка, будут заполнены все колонки</param>
195193
[ContextMethod("ЗаполнитьЗначения", "FillValues")]
196194
public void FillValues(IValue value, string columnNames = null)
197195
{
@@ -517,7 +515,8 @@ public void Move(BslValue row, int offset)
517515
/// <summary>
518516
/// Создает новую таблицу значений с указанными колонками. Данные не копируются.
519517
/// </summary>
520-
/// <param name="columnNames">Строка - Имена колонок для копирования, разделены запятыми</param>
518+
/// <param name="columnNames">Строка - Имена колонок для копирования, разделены запятыми
519+
/// Если параметр не указан или передана пустая строка, будут скопированы все колонки</param>
521520
/// <returns>ТаблицаЗначений</returns>
522521
[ContextMethod("СкопироватьКолонки", "CopyColumns")]
523522
public ValueTable CopyColumns(string columnNames = null)

tests/valuetable.os

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@
5757
ВсеТесты.Добавить("ТестДолжен_ПроверитьИсключениеПриЗагрузкеКолонки");
5858
ВсеТесты.Добавить("ТестДолжен_ПроверитьИсключениеПриНеверномПараметреСортировки");
5959

60+
ВсеТесты.Добавить("ТестДолжен_Проверить_ЗаполнитьЗначения_СПустымСпискомКолонок");
61+
ВсеТесты.Добавить("ТестДолжен_Проверить_Найти_СПустымСпискомКолонок");
62+
ВсеТесты.Добавить("ТестДолжен_Проверить_СкопироватьКолонки_СПустымСпискомКолонок");
63+
ВсеТесты.Добавить("ТестДолжен_Проверить_Скопировать_СПустымСпискомКолонок");
64+
6065
Возврат ВсеТесты;
6166

6267
КонецФункции
@@ -997,3 +1002,43 @@
9971002
ВызватьИсключение "Ожидали исключение, но его не было";
9981003
КонецПроцедуры
9991004

1005+
Процедура ТестДолжен_Проверить_ЗаполнитьЗначения_СПустымСпискомКолонок() Экспорт
1006+
ТЗ = Новый ТаблицаЗначений();
1007+
ТЗ.Колонки.Добавить("Тест");
1008+
ТЗ.Добавить().Тест = 1;
1009+
ТЗ.ЗаполнитьЗначения(3,"");
1010+
1011+
юТест.ПроверитьРавенство(ТЗ[0].Тест, 3);
1012+
КонецПроцедуры
1013+
1014+
Процедура ТестДолжен_Проверить_Найти_СПустымСпискомКолонок() Экспорт
1015+
ТЗ = Новый ТаблицаЗначений();
1016+
ТЗ.Колонки.Добавить("Тест");
1017+
ТЗ.Добавить().Тест = -3;
1018+
ТЗ.Добавить().Тест = 7;
1019+
Рез = ТЗ.Найти(7,"");
1020+
1021+
юТест.ПроверитьНеРавенство(Рез, Неопределено);
1022+
КонецПроцедуры
1023+
1024+
Процедура ТестДолжен_Проверить_СкопироватьКолонки_СПустымСпискомКолонок() Экспорт
1025+
ТЗ = Новый ТаблицаЗначений();
1026+
ТЗ.Колонки.Добавить("Тест");
1027+
ТЗ.Добавить().Тест = 1;
1028+
ТЗ2 = ТЗ.СкопироватьКолонки();
1029+
1030+
юТест.ПроверитьРавенство(ТЗ2.Колонки.Количество(), 1);
1031+
юТест.ПроверитьРавенство(ТЗ2.Колонки[0].Имя, "Тест");
1032+
КонецПроцедуры
1033+
1034+
Процедура ТестДолжен_Проверить_Скопировать_СПустымСпискомКолонок() Экспорт
1035+
ТЗ = Новый ТаблицаЗначений();
1036+
ТЗ.Колонки.Добавить("Тест");
1037+
ТЗ.Добавить().Тест = 1;
1038+
ТЗ.Добавить().Тест = 2;
1039+
ТЗ2 = ТЗ.Скопировать(,"");
1040+
1041+
юТест.ПроверитьРавенство(ТЗ2.Количество(), 2);
1042+
юТест.ПроверитьРавенство(ТЗ2.Колонки.Количество(), 1);
1043+
юТест.ПроверитьРавенство(ТЗ2.Колонки[0].Имя, "Тест");
1044+
КонецПроцедуры

0 commit comments

Comments
 (0)