Skip to content

Commit 4b5ccea

Browse files
committed
сортировка значений типа Тип +поправки в тестах
1 parent be9169a commit 4b5ccea

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

src/ScriptEngine/Machine/GenericIValueComparer.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ public class GenericIValueComparer : IEqualityComparer<IValue>, IComparer<IValue
2121

2222
static private readonly List<TypeDescriptor>orderedTypes = new List<TypeDescriptor>
2323
{ BasicTypes.Undefined, BasicTypes.Null, BasicTypes.Boolean,
24-
BasicTypes.Number, BasicTypes.String, BasicTypes.Date, BasicTypes.Type };
24+
BasicTypes.Number, BasicTypes.String, BasicTypes.Date, BasicTypes.Type };
25+
26+
private const int INDEX_OF_TYPE = 6;
2527

2628
public GenericIValueComparer()
2729
{
@@ -73,9 +75,12 @@ private int CompareByTypes(IValue x, IValue y)
7375
var iy = orderedTypes.IndexOf(y.SystemType);
7476

7577
if (ix >= 0)
76-
return (iy >= 0) ? ix-iy : -1;
78+
if (iy >= 0)
79+
return ix - iy;
80+
else
81+
return ix == INDEX_OF_TYPE ? 1 : -1;
7782
else if (iy >= 0)
78-
return 1;
83+
return iy == INDEX_OF_TYPE ? -1 : 1;
7984

8085
return _comparer(x,y);
8186
}

tests/valuetable.os

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -877,17 +877,21 @@
877877
ТЗ.Добавить().Тест = "Стр2";
878878
ТЗ.Добавить().Тест = "СтрЪ";
879879
ТЗ.Добавить().Тест = Новый Структура;
880+
ТЗ.Добавить().Тест = Новый Массив;
880881
ТЗ.Добавить().Тест = null;
881882
ТЗ.Добавить().Тест = Тип("Булево");
883+
ТЗ.Добавить().Тест = Тип("Массив");
882884

883885
ТЗ.Сортировать("Тест"); // не должно упасть
884886

885887
юТест.ПроверитьРавенство(ТЗ[0].Тест, Null);
886-
юТест.ПроверитьРавенство(ТЗ[1].Тест, Тип("Булево"));
887-
юТест.ПроверитьРавенство(ТЗ[2].Тест, "Стр2");
888-
юТест.ПроверитьРавенство(ТЗ[3].Тест, Тип("Строка"));
888+
юТест.ПроверитьРавенство(ТЗ[1].Тест, "Стр2");
889+
юТест.ПроверитьРавенство(ТЗ[2].Тест, "СтрЪ");
890+
юТест.ПроверитьРавенство(ТипЗнч(ТЗ[3].Тест), Тип("Массив"));
889891
юТест.ПроверитьРавенство(ТипЗнч(ТЗ[4].Тест), Тип("Структура"));
890-
юТест.ПроверитьРавенство(ТЗ[5].Тест, "СтрЪ");
892+
юТест.ПроверитьРавенство(ТЗ[5].Тест, Тип("Булево"));
893+
юТест.ПроверитьРавенство(ТЗ[6].Тест, Тип("Массив"));
894+
юТест.ПроверитьРавенство(ТЗ[7].Тест, Тип("Строка"));
891895
КонецПроцедуры
892896

893897
Процедура ТестДолжен_ПроверитьСортировкуПоПредставлению() Экспорт
@@ -921,10 +925,10 @@
921925
ТЗ.Добавить().Тест = КлассИзСтроки1;
922926

923927
ТЗ.Сортировать("Тест");
924-
юТест.ПроверитьРавенство(Строка(ТЗ[0].Тест), "Представление0");
925-
юТест.ПроверитьРавенство(Строка(ТЗ[1].Тест), "Представление1");
926-
юТест.ПроверитьРавенство(ТЗ[2].Тест, "Представление2");
927-
юТест.ПроверитьРавенство(Строка(ТЗ[3].Тест), "Представление3");
928+
юТест.ПроверитьРавенство(ТЗ[0].Тест, "Представление2", "строка");
929+
юТест.ПроверитьРавенство(Строка(ТЗ[1].Тест), "Представление0", "сценарий 0");
930+
юТест.ПроверитьРавенство(Строка(ТЗ[2].Тест), "Представление1", "сценарий 1");
931+
юТест.ПроверитьРавенство(Строка(ТЗ[3].Тест), "Представление3", "сценарий 3");
928932

929933
КонецПроцедуры
930934

0 commit comments

Comments
 (0)