Skip to content

Commit b5275e7

Browse files
committed
преобразование в строку с учетом пустых элементов; тесты
1 parent 63c558b commit b5275e7

3 files changed

Lines changed: 33 additions & 1 deletion

File tree

src/OneScript.StandardLibrary/Collections/ValueList/ValueListImpl.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -394,6 +394,8 @@ public override IEnumerator<ValueListItem> GetEnumerator()
394394

395395
#endregion
396396

397+
public override string ToString() => string.Join("; ", _items);
398+
397399
[ScriptConstructor]
398400
public static ValueListImpl Constructor()
399401
{

src/OneScript.StandardLibrary/Collections/ValueList/ValueListItem.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ This Source Code Form is subject to the terms of the
77

88
using System;
99
using OneScript.Contexts;
10+
using OneScript.Localization;
11+
using OneScript.Values;
1012
using ScriptEngine.Machine;
1113
using ScriptEngine.Machine.Contexts;
1214

@@ -18,6 +20,8 @@ namespace OneScript.StandardLibrary.Collections.ValueList
1820
[ContextClass("ЭлементСпискаЗначений", "ValueListItem")]
1921
public class ValueListItem : AutoContext<ValueListItem>
2022
{
23+
static readonly BilingualString EMPTY_VALUE_STRING = new("<Пустое значение>", "<Empty value>");
24+
2125
private string _presentationHolder;
2226
private IValue _pictureHolder;
2327

@@ -48,6 +52,8 @@ public IValue Picture
4852
}
4953

5054
public override string ToString()
51-
=> !String.IsNullOrEmpty(_presentationHolder) ? _presentationHolder : Value.ToString();
55+
=> !String.IsNullOrEmpty(_presentationHolder) ? _presentationHolder
56+
: Value is BslUndefinedValue ? EMPTY_VALUE_STRING
57+
: Value.ToString();
5258
}
5359
}

tests/value-list.os

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
ВсеТесты.Добавить("ТестДолжен_ПроверитьСвойствоТипЗначения");
2626
ВсеТесты.Добавить("ТестДолжен_ПроверитьСвойствоДоступныеЗначения_Без_ТипЗначения");
2727
ВсеТесты.Добавить("ТестДолжен_ПроверитьСвойствоДоступныеЗначения_С_ТипЗначения");
28+
ВсеТесты.Добавить("ТестДолжен_ПроверитьПреобразованиеСпискаВСтроку");
2829
Возврат ВсеТесты;
2930

3031
КонецФункции
@@ -431,6 +432,8 @@
431432
СЗ.Добавить(1, "");
432433
СЗ.Добавить(2, Неопределено);
433434
СЗ.Добавить(3, " ");
435+
СЗ.Добавить(Неопределено);
436+
СЗ.Добавить(Неопределено,"(неопр.)");
434437

435438
юТест.ПроверитьРавенство("0", Строка(СЗ[0]), "Строка, без указания");
436439
юТест.ПроверитьРавенство("", СЗ[0].Представление, "Представление, без указания");
@@ -440,6 +443,11 @@
440443
юТест.ПроверитьРавенство("", СЗ[2].Представление, "Представление, Неопределено");
441444
юТест.ПроверитьРавенство(" ", Строка(СЗ[3]), "Строка, пробел");
442445
юТест.ПроверитьРавенство(" ", СЗ[3].Представление, "Представление, пробел");
446+
447+
юТест.ПроверитьРавенство("<Пустое значение>", Строка(СЗ[4]), "Неопределено, без указания");
448+
юТест.ПроверитьРавенство("", СЗ[4].Представление, "Неопределено, без представления");
449+
юТест.ПроверитьРавенство("(неопр.)", Строка(СЗ[5]), "Неопределено, с указанием");
450+
юТест.ПроверитьРавенство("(неопр.)", СЗ[5].Представление, "Неопределено, с представлением");
443451

444452
КонецПроцедуры
445453

@@ -503,3 +511,19 @@
503511
юТест.ПроверитьРавенство( 99, СЗ[3].Значение, "Приведение с переполнением и допустимое значение");
504512
КонецПроцедуры
505513

514+
Процедура ТестДолжен_ПроверитьПреобразованиеСпискаВСтроку() Экспорт
515+
516+
СЗ = Новый СписокЗначений;
517+
СЗ.Добавить(11);
518+
СЗ.Добавить(12,"двенадцать");
519+
СЗ.Добавить("абв");
520+
СЗ.Добавить("фыв","");
521+
СЗ.Добавить("пробел"," ");
522+
СЗ.Добавить("йцу","Йцу!");
523+
СЗ.Добавить(Неопределено);
524+
СЗ.Добавить(Неопределено,"(неопр.)");
525+
526+
Строка = Строка(СЗ);
527+
528+
юТест.ПроверитьРавенство(Строка, "11; двенадцать; абв; фыв; ; Йцу!; <Пустое значение>; (неопр.)");
529+
КонецПроцедуры

0 commit comments

Comments
 (0)