Skip to content

Commit

Permalink
к EvilBeaver#1424: ПолучитьТаблицуСвойств для Структур +тесты
Browse files Browse the repository at this point in the history
  • Loading branch information
Mr-Rm committed Jan 3, 2025
1 parent 985c65d commit cd31900
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ This Source Code Form is subject to the terms of the
----------------------------------------------------------*/

using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using OneScript.Contexts;
using OneScript.Exceptions;
using OneScript.Values;
Expand Down Expand Up @@ -57,6 +58,11 @@ public override int GetPropertyNumber(string name)
return _structure.GetPropertyNumber(name);
}

public override int GetPropCount()
{
return _structure.GetPropCount();
}

public override BslMethodInfo GetMethodInfo(int methodNumber)
{
return _methods.GetRuntimeMethod(methodNumber);
Expand Down
12 changes: 12 additions & 0 deletions src/OneScript.StandardLibrary/Collections/StructureImpl.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ This Source Code Form is subject to the terms of the
at http://mozilla.org/MPL/2.0/.
----------------------------------------------------------*/

using System;
using System.Collections.Generic;
using OneScript.Commons;
using OneScript.Contexts;
Expand Down Expand Up @@ -133,6 +134,17 @@ public override string GetPropName(int propNum)
return GetPropertyName(propNum);
}

public override BslPropertyInfo GetPropertyInfo(int propNum)
{
return BslPropertyBuilder.Create()
.Name(GetPropName(propNum))
.CanRead(true)
.CanWrite(true)
.ReturnType(_values[propNum].GetType())
.DeclaringType(GetType())
.Build();
}

public override BslMethodInfo GetMethodInfo(int methodNumber)
{
return _methods.GetRuntimeMethod(methodNumber);
Expand Down
19 changes: 19 additions & 0 deletions tests/reflector.os
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@
ВсеТесты.Добавить("ТестДолжен_ПроверитьРефлексиюВнешнегоПараметра");
ВсеТесты.Добавить("ТестДолжен_ПроверитьРефлексиюВнешнегоПараметраВРежимеПриватных");

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

#Если Windows Тогда
ВсеТесты.Добавить("ТестДолжен_ПроверитьВызовМетодаComОбъекта");
#КонецЕсли
Expand Down Expand Up @@ -928,3 +931,19 @@
юТест.ПроверитьИстину(ТаблицаСвойств[1].Экспорт);

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

Процедура ТестДолжен_ПроверитьПолучитьТаблицуСвойствДляСтруктуры() Экспорт
Рефлектор = Новый Рефлектор;
Структура = Новый Структура("Поле1, Поле2", -1, -2);
Таблица = Рефлектор.ПолучитьТаблицуСвойств(Структура);
юТест.ПроверитьРавенство(2, Таблица.Количество());
юТест.ПроверитьНеРавенство(Неопределено, Таблица.Найти("Поле1"));
КонецПроцедуры

Процедура ТестДолжен_ПроверитьПолучитьТаблицуСвойствДляФиксированнойСтруктуры() Экспорт
Рефлектор = Новый Рефлектор;
ФиксСтруктура = Новый ФиксированнаяСтруктура("Поле1, Поле2", -1, -2);
Таблица = Рефлектор.ПолучитьТаблицуСвойств(ФиксСтруктура);
юТест.ПроверитьРавенство(2, Таблица.Количество());
юТест.ПроверитьНеРавенство(Неопределено, Таблица.Найти("Поле1"));
КонецПроцедуры

0 comments on commit cd31900

Please sign in to comment.