chr
2026-04-05 fe750b791d5b517cc4e9bc8e99a9a75139a0cfba
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
using NUnit.Framework;
using OpenTap.Plugins.BasicSteps;
 
namespace OpenTap.Engine.UnitTests
{
    [TestFixture]
    public class AllowChildTest
    {
        
        private class BaseAutomationStep : TestStep
        {
            public override void Run()
            {
            }
        }
 
        [AllowAsChildIn(typeof(BaseAutomationStep))]
        private class AutomationStep : BaseAutomationStep
        {
        }
 
        [AllowAsChildIn(typeof(BaseAutomationStep))]
        [AllowAnyChild]
        private class LoopStep : BaseAutomationStep
        {
        }
 
        [Test]
        public void TestAllowChildren()
        {
            LoopStep step = new LoopStep();
            step.ChildTestSteps.Add(new AutomationStep());
        }
 
        [Test]
        public void TestGuid()
        {
            var a = new DelayStep();
            var b = new DelayStep();
            Assert.AreNotEqual(a.Id, b.Id);
        }
 
        public interface IBaseParentStep : ITestStep
        {
            
        }
        
        [AllowChildrenOfType(typeof(DelayStep))]
        private class BaseParentStep : TestStep, IBaseParentStep
        {
            public override void Run() {  }
        }
 
        class InheritedParentStep : BaseParentStep
        {
            
        }
        
        [AllowAsChildIn(typeof(IBaseParentStep))]
        
        public class InsideInterfaceStep : TestStep
        {
            public override void Run() { }
        }
        public class InsideInterfaceStep2 : InsideInterfaceStep
        {
            
        }
 
        [Test]
        public void TestInterfaceParentStep()
        {
            var parent = new InheritedParentStep();
            var child = new InsideInterfaceStep2();
            
            // this should not throw exceptions:
            parent.ChildTestSteps.Add(child);
            parent.ChildTestSteps.Add(new DelayStep());
        }
    }
}