101 lines
5.1 KiB
C#
101 lines
5.1 KiB
C#
// Copyright (C) 2024 Michael Becker <alcexhim@gmail.com>
|
|
//
|
|
// This file is part of Mocha.NET.
|
|
//
|
|
// Mocha.NET is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// Mocha.NET is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Mocha.NET. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
using Mocha.Core.Oop;
|
|
using Mocha.Core.Oop.Methods;
|
|
|
|
namespace Mocha.Core.Tests.MethodTests;
|
|
|
|
public class SelectFromInstanceSetMethodTests : MethodTestsBase
|
|
{
|
|
|
|
[Test]
|
|
public void Access_Modifier__get__Most_Restrictive_from_Set()
|
|
{
|
|
InstanceHandle c_AccessModifier = Oms.GetInstance(KnownInstanceGuids.Classes.AccessModifier);
|
|
// MethodReturningInstanceSet m_Access_Modifier__get__Most_Restrictive_from_Set = (MethodReturningInstanceSet) Oms.GetMethod(c_AccessModifier, "get", "Most Restrictive from Set");
|
|
|
|
InstanceHandle a_Order = Oms.GetInstance(KnownAttributeGuids.Text.Order);
|
|
|
|
WorkSet ws_Access_Modifier__Nonsingular = Oms.CreateWorkSet("Access Modifier [Nonsingular]", false);
|
|
WorkSet ws_Access_Modifier__Singular = Oms.CreateWorkSet("Access Modifier [Singular]", true);
|
|
|
|
OmsMethodBuilder methodBuilder = new OmsMethodBuilder(Oms);
|
|
GetAttributeMethod get_Order = methodBuilder.CreateGetAttributeMethod(c_AccessModifier, "get", "Order", a_Order);
|
|
|
|
SelectFromInstanceSetMethod m_Access_Modifier__get__Most_Restrictive_from_Set = methodBuilder.CreateSelectFromInstanceSetMethod(c_AccessModifier, "get", "Most Restrictive from Set", AccessModifier.Public, true, ws_Access_Modifier__Singular, ws_Access_Modifier__Nonsingular, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.Minimum), get_Order.GetHandle());
|
|
|
|
if (m_Access_Modifier__get__Most_Restrictive_from_Set != null)
|
|
{
|
|
ReturnInstanceSetMethodBinding rsmb = m_Access_Modifier__get__Most_Restrictive_from_Set.CreateMethodBinding(Oms);
|
|
|
|
OmsContext context = Oms.CreateContext();
|
|
context.SetWorkData(ws_Access_Modifier__Nonsingular, new InstanceWrapper[]
|
|
{
|
|
AccessModifier.Private,
|
|
AccessModifier.Protected,
|
|
AccessModifier.Public,
|
|
AccessModifier.RootA2
|
|
});
|
|
|
|
InstanceHandle workData = Oms.Execute(context, rsmb);
|
|
object? value = context.GetWorkData(workData);
|
|
|
|
Assert.That(value is InstanceHandle);
|
|
Assert.That((InstanceHandle?)value, Is.EqualTo(AccessModifier.Private.GetHandle()));
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void Element__get__First_Element_Content()
|
|
{
|
|
Class c_Element = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.Element);
|
|
Class c_ElementContent = Oms.GetInstance<Class>(KnownInstanceGuids.Classes.ElementContent);
|
|
|
|
GetRelationshipMethod m_Element__get__Element_Contents = Oms.MethodBuilder.CreateGetRelationshipMethod(c_Element, "get", "Element Contents", AccessModifier.Public, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content));
|
|
ReturnInstanceSetMethodBinding Element__get__Element_Contents = m_Element__get__Element_Contents.CreateMethodBinding(Oms);
|
|
|
|
GetAttributeMethod m_getOrder = Oms.MethodBuilder.CreateGetAttributeMethod(c_ElementContent, "get", "Order", Oms.GetInstance(KnownAttributeGuids.Text.Order));
|
|
ReturnAttributeMethodBinding Element_Content__get__Order = m_getOrder.CreateMethodBinding(Oms);
|
|
|
|
WorkSet wsE = Oms.CreateWorkSet("Returned Element Content [Singular]");
|
|
Oms.SetAttributeValue(wsE, Oms.GetInstance(KnownAttributeGuids.Boolean.Singular), true);
|
|
|
|
SelectFromInstanceSetMethod m_getFirstElementContent = Oms.MethodBuilder.CreateSelectFromInstanceSetMethod(c_Element, "get", "First Element Content", AccessModifier.Public, false, wsE, Element__get__Element_Contents, null, Oms.GetInstance(KnownInstanceGuids.SelectionFunctions.First), Element_Content__get__Order);
|
|
ReturnInstanceSetMethodBinding getFirstElementContent = m_getFirstElementContent.CreateMethodBinding(Oms);
|
|
|
|
InstanceHandle element = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.Element));
|
|
|
|
InstanceHandle ec1 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
|
|
InstanceHandle ec2 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
|
|
InstanceHandle ec3 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
|
|
InstanceHandle ec4 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
|
|
InstanceHandle ec5 = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.ElementContent));
|
|
|
|
Oms.AssignRelationship(element, Oms.GetInstance(KnownRelationshipGuids.Element__has__Element_Content), new InstanceHandle[]
|
|
{
|
|
ec1, ec2, ec3, ec4, ec5
|
|
});
|
|
|
|
OmsContext context = Oms.CreateContext();
|
|
context.SetWorkData(c_Element, element);
|
|
InstanceHandle ws = Oms.Execute(context, getFirstElementContent);
|
|
object? obj = context.GetWorkData(ws);
|
|
|
|
Assert.That(obj, Is.EqualTo(ec1));
|
|
}
|
|
} |