Skip to content

Commit

Permalink
Merge pull request #1447 from Mr-Rm/v2/fix-1446
Browse files Browse the repository at this point in the history
fix #1446 v2: операции с датой и приводимым к числу значением +тест
  • Loading branch information
EvilBeaver authored Aug 29, 2024
2 parents f9ab0b0 + 7b07c79 commit 723c08d
Show file tree
Hide file tree
Showing 2 changed files with 50 additions and 9 deletions.
18 changes: 9 additions & 9 deletions src/ScriptEngine/Machine/ValueFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ public static IValue Add(IValue op1, IValue op2)
return Create(s + op2.AsString());
}

if (op1 is BslDateValue date && op2.SystemType == BasicTypes.Number)
if (op1 is BslDateValue date)
{
return Create(date + op2.AsNumber());
}
Expand All @@ -117,15 +117,15 @@ public static IValue Sub(IValue op1, IValue op2)
{
return Create(n - op2.AsNumber());
}
if (op1 is BslDateValue date && op2 is BslNumericValue num)
{
var result = date - num;
return Create(result);
}
if (op1 is BslDateValue d1 && op2 is BslDateValue d2)

if (op1 is BslDateValue date)
{
var diff = d1 - d2;
return Create(diff);
if (op2 is BslDateValue d2)
{
return Create(date - d2);
}

return Create(date - op2.AsNumber());
}

// все к числовому типу.
Expand Down
41 changes: 41 additions & 0 deletions tests/engine-behaviors.os
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьСравнениеНаБольшеМеньше");
ВсеТесты.Добавить("ТестДолжен_ПроверитьЧто_ЭтотОбъект_НедоступенДляЗаписи");

ВсеТесты.Добавить("ТестДолжен_ПроверитьОперацииСДатой_Сложение");
ВсеТесты.Добавить("ТестДолжен_ПроверитьОперацииСДатой_Вычитание");
ВсеТесты.Добавить("ТестДолжен_ПроверитьОперацииСДатой_СложениеДат");

Возврат ВсеТесты;

КонецФункции
Expand Down Expand Up @@ -696,3 +700,40 @@
Процедура ТестДолжен_ПроверитьЧто_ЭтотОбъект_НедоступенДляЗаписи() Экспорт
юТест.ПроверитьКодСОшибкой("ЭтотОбъект = 8", "Свойство 'ЭтотОбъект' недоступно для записи");
КонецПроцедуры

Процедура ТестДолжен_ПроверитьОперацииСДатой_Сложение() Экспорт

ТекущееВремя = ТекущаяДата();
Попытка
ЧерезЧас = ТекущееВремя + "3600";
юТест.ПроверитьРавенство(ЧерезЧас,ТекущееВремя+3600);
Исключение
ВызватьИсключение("Не работает сложение даты со строкой");
КонецПопытки;

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

Процедура ТестДолжен_ПроверитьОперацииСДатой_Вычитание() Экспорт

ТекущееВремя = ТекущаяДата();
Попытка
ЧасомРанее = ТекущееВремя - "3600";
юТест.ПроверитьРавенство(ЧасомРанее,ТекущееВремя-3600);
Исключение
ВызватьИсключение("Не работает вычитание даты и строки");
КонецПопытки;

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

Процедура ТестДолжен_ПроверитьОперацииСДатой_СложениеДат() Экспорт

ТекущееВремя = ТекущаяДата();

Попытка
ТекущееВремя = ТекущееВремя + '00010101';
Исключение
Возврат;
КонецПопытки;

ВызватьИсключение "Не должно работать сложение дат";
КонецПроцедуры

0 comments on commit 723c08d

Please sign in to comment.