using System.ComponentModel; using System.Linq; using NUnit.Framework; using OpenTap.Plugins.BasicSteps; namespace OpenTap.UnitTests { public class MenuAnnotationTest { public class CustomTestPlanMenuModel: ITypeMenuModel { object[] source; object[] IMenuModel.Source { get => source; set => source = value; } [Browsable(true)] public void PresetPlan() { foreach (var plan in source.Cast()) { plan.ChildTestSteps.Clear(); plan.ChildTestSteps.Add(new DelayStep()); } } } public class CustomTypeMenuFactory : ITypeMenuModelFactory { ITypeMenuModel ITypeMenuModelFactory.CreateModel(ITypeData type) { if (type.DescendsTo(typeof(TestPlan))) return new CustomTestPlanMenuModel(); return null; } } [Test] public void CustomMenuModelTest() { var plan = new TestPlan(); var a = AnnotationCollection.Annotate(plan); var x = a.Get(); var items = x.MenuItems.ToArray(); var callAnnotation = items.First(x => x.Name == nameof(CustomTestPlanMenuModel.PresetPlan)); var invoke = callAnnotation.Get(); invoke.Invoke(); Assert.IsTrue(plan.ChildTestSteps[0] is DelayStep); var memberMenu = a.Get().Members.First().Get().MenuItems.First(x => x.Name == nameof(CustomTestPlanMenuModel.PresetPlan)); Assert.IsNotNull(memberMenu); //Assert.IsTrue(memberMenu.MenuItems.Any(x => x.GetType() == )); } } }