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
82
83
84
85
using System.ComponentModel;
using NUnit.Framework;
namespace OpenTap.UnitTests
{
    [TestFixture]
    public class TestStepListTest
    {
        
        public class ReplaceMyselfStep : TestStep
        {
            [Display("Replaced Times")]
            public int ReplacedTimes { get; set; }
 
            [Browsable(true)]
            public void ReplaceMe2()
            {
                ReplaceMe();
            }
            
            
            public ReplaceMyselfStep ReplaceMe()
            {
                var newStep = new ReplaceMyselfStep()
                {
                    Name = this.Name,
                    ReplacedTimes = ReplacedTimes + 1,
                    Id = Id,
                    Parent = Parent
                
                };
                var parent = Parent;
                var idx = parent.ChildTestSteps.IndexOf(this);
                parent.ChildTestSteps[idx] = newStep;
                return newStep;
            }
        
            public override void Run()
            {
            
            }
        }
        
        [Test]
        public void TestEvents()
        {
            var plan = new TestPlan();
            var step = new ReplaceMyselfStep();
            plan.ChildTestSteps.Add(step);
            var step2 = new ReplaceMyselfStep();
            plan.ChildTestSteps.Add(step2);
 
            plan.ChildTestSteps.ChildStepsChanged += ChildTestStepsOnChildStepsChanged;
            bool stepsChanged = false;
            void ChildTestStepsOnChildStepsChanged(TestStepList senderlist, TestStepList.ChildStepsChangedAction action, ITestStep testStep, int index)
            {
                Assert.AreEqual(plan.ChildTestSteps, senderlist);
                stepsChanged = true;
                Assert.AreEqual(TestStepList.ChildStepsChangedAction.SetStep, action);
                Assert.AreEqual(1, index);
                Assert.IsTrue(testStep == senderlist[index]);
            }
            step2 = step2.ReplaceMe();
 
            Assert.IsTrue(stepsChanged);
            plan.ChildTestSteps.ChildStepsChanged -= ChildTestStepsOnChildStepsChanged;
            
            plan.ChildTestSteps.ChildStepsChanged += ChildTestStepsOnChildStepsChanged2;
            
            bool stepsChanged2 = false;
            void ChildTestStepsOnChildStepsChanged2(TestStepList senderlist, TestStepList.ChildStepsChangedAction action, ITestStep testStep, int index)
            {
                Assert.AreEqual(plan.ChildTestSteps, senderlist);
                stepsChanged2 = true;
                Assert.AreEqual(TestStepList.ChildStepsChangedAction.MovedStep, action);
                Assert.AreEqual(1, index);
                Assert.IsTrue(testStep == senderlist[index]);
                Assert.IsTrue(step2 == senderlist[0]);
                Assert.IsTrue(step == senderlist[1]);
            }
            plan.ChildTestSteps.Move(0,1);
            Assert.IsTrue(stepsChanged2);
        }
        
    }
}