Skip to content

Commit

Permalink
fix EvilBeaver#1441 v2: функциональный вариант Новый с ФиксированнымМ…
Browse files Browse the repository at this point in the history
…ассивом +тест
  • Loading branch information
Mr-Rm committed Aug 13, 2024
1 parent 9f407ff commit 080a854
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 5 deletions.
12 changes: 10 additions & 2 deletions src/OneScript.Core/Exceptions/RuntimeException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -119,8 +119,16 @@ public static RuntimeException DivideByZero()

public static RuntimeException ConstructorNotFound(string typeName)
{
return new RuntimeException(new BilingualString($"ru = 'Конструктор не найден ({typeName})';",
$"en = 'Constructor not found ({typeName})'"));
return new RuntimeException(new BilingualString(
$"Конструктор не найден ({typeName})",
$"Constructor not found ({typeName})"));
}

public static RuntimeException TypeIsNotDefined(string typeName)
{
return new RuntimeException(new BilingualString(
$"Тип не определен. Конструктор не найден ({typeName})",
$"Type is not defined ({typeName})"));
}

public static RuntimeException InvalidEncoding(string encoding)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This Source Code Form is subject to the terms of the
namespace OneScript.StandardLibrary.Collections
{
[ContextClass("ФиксированныйМассив", "FixedArray")]
public class FixedArrayImpl : AutoCollectionContext<FixedArrayImpl, IValue>
public class FixedArrayImpl : AutoCollectionContext<FixedArrayImpl, IValue>, IValueArray
{
private readonly ArrayImpl _array;

Expand Down
4 changes: 2 additions & 2 deletions src/ScriptEngine/Machine/MachineInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1150,7 +1150,7 @@ private void NewInstance(int argCount)
var typeName = _operationStack.Pop().AsString();
if (!TypeManager.TryGetType(typeName, out var type))
{
throw RuntimeException.ConstructorNotFound(typeName);
throw RuntimeException.TypeIsNotDefined(typeName);
}

// TODO убрать cast после рефакторинга ITypeFactory
Expand Down Expand Up @@ -2345,7 +2345,7 @@ private void NewFunc(int argCount)
var typeName = _operationStack.Pop().AsString();
if (!TypeManager.TryGetType(typeName, out var type))
{
throw RuntimeException.ConstructorNotFound(typeName);
throw RuntimeException.TypeIsNotDefined(typeName);
}

// TODO убрать cast после рефакторинга ITypeFactory
Expand Down
10 changes: 10 additions & 0 deletions tests/global-new.os
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеМассиваЧерезФункциюНовый");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеЧерезФункциюНовыйИПустойМассивАргументов");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеЧерезФункциюНовыйИМассивАргументов");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеЧерезФункциюНовыйИФиксированныйМассивАргументов");

ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеОбъектаПоПараметруИмениКласса");
ВсеТесты.Добавить("ТестДолжен_ПроверитьСозданиеОбъектаПоПараметруИмениКлассаЧерезФункциюНовый");
Expand Down Expand Up @@ -51,6 +52,15 @@
юТест.ПроверитьРавенство(Объект.ПолноеИмя, ТекущийСценарий().Источник);
КонецПроцедуры

Процедура ТестДолжен_ПроверитьСозданиеЧерезФункциюНовыйИФиксированныйМассивАргументов() Экспорт
Массив = Новый Массив;
Массив.Добавить(20);
МассивАрг = Новый ФиксированныйМассив(Массив);
Объект = Новый("Массив", МассивАрг);
юТест.ПроверитьРавенство(Объект.Количество(), 20);
КонецПроцедуры


Процедура ТестДолжен_ПроверитьСозданиеОбъектаИзСценария() Экспорт
ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь;
ПодключитьСценарий(ТекПуть+"example-test.os", "Пример_example_test");
Expand Down

0 comments on commit 080a854

Please sign in to comment.