public void import_puts_the_second_set_stuff_in_the_back() { var builder1 = new Mock <ITagBuilderPolicy>().Object; var builder2 = new Mock <ITagBuilderPolicy>().Object; var builder3 = new Mock <ITagBuilderPolicy>().Object; var m1 = new Mock <ITagModifier>().Object; var m2 = new Mock <ITagModifier>().Object; var m3 = new Mock <ITagModifier>().Object; var m4 = new Mock <ITagModifier>().Object; var m5 = new Mock <ITagModifier>().Object; var set1 = new BuilderSet(); set1.Add(builder1); set1.Add(m1); set1.Add(m2); set1.Add(m3); var set2 = new BuilderSet(); set2.Add(builder2); set2.Add(builder3); set2.Add(m4); set2.Add(m5); set1.Import(set2); set1.Policies.ShouldHaveTheSameElementsAs(builder1, builder2, builder3); set1.Modifiers.ShouldHaveTheSameElementsAs(m1, m2, m3, m4, m5); }
public void import_puts_the_second_set_stuff_in_the_back() { var builder1 = MockRepository.GenerateMock <ITagBuilder <FakeSubject> >(); var builder2 = MockRepository.GenerateMock <ITagBuilder <FakeSubject> >(); var builder3 = MockRepository.GenerateMock <ITagBuilder <FakeSubject> >(); var m1 = MockRepository.GenerateMock <ITagModifier <FakeSubject> >(); var m2 = MockRepository.GenerateMock <ITagModifier <FakeSubject> >(); var m3 = MockRepository.GenerateMock <ITagModifier <FakeSubject> >(); var m4 = MockRepository.GenerateMock <ITagModifier <FakeSubject> >(); var m5 = MockRepository.GenerateMock <ITagModifier <FakeSubject> >(); var set1 = new BuilderSet <FakeSubject>(); set1.Add(builder1); set1.Add(m1); set1.Add(m2); set1.Add(m3); var set2 = new BuilderSet <FakeSubject>(); set2.Add(builder2); set2.Add(builder3); set2.Add(m4); set2.Add(m5); set1.Import(set2); set1.Builders.ShouldHaveTheSameElementsAs(builder1, builder2, builder3); set1.Modifiers.ShouldHaveTheSameElementsAs(m1, m2, m3, m4, m5); }
public void SetupReturnHandler() { if (ReturnHandler == null) { ReturnHandler = new ReturnHandler(BuilderSet, Method.Name, (Method.Attributes.Virtual && Method.DoesReturnValue) || Method.MultiplePaths); BuilderSet = BuilderSet.New(ReturnHandler); } }
public void insert_builder() { var builder1 = new Mock <ITagBuilderPolicy>().Object; var builder2 = new Mock <ITagBuilderPolicy>().Object; var builder3 = new Mock <ITagBuilderPolicy>().Object; var set1 = new BuilderSet(); set1.Add(builder2); set1.Add(builder3); set1.InsertFirst(builder1); set1.Policies.ShouldHaveTheSameElementsAs(builder1, builder2, builder3); }
public void insert_builder() { var builder1 = MockRepository.GenerateMock <ITagBuilderPolicy>(); var builder2 = MockRepository.GenerateMock <ITagBuilderPolicy>(); var builder3 = MockRepository.GenerateMock <ITagBuilderPolicy>(); var set1 = new BuilderSet(); set1.Add(builder2); set1.Add(builder3); set1.InsertFirst(builder1); set1.Policies.ShouldHaveTheSameElementsAs(builder1, builder2, builder3); }
private void ParseVirtual() { // Loop through all potential methods. DefinedMethod[] options = Array.ConvertAll(Method.Attributes.AllOverrideOptions(), iMethod => (DefinedMethod)iMethod); // Create the switch that chooses the overload. SwitchBuilder typeSwitch = new SwitchBuilder(BuilderSet); // Parse the current overload. if (Method.Attributes.Virtual) { typeSwitch.AddDefault(); } else { typeSwitch.NextCase(new V_Number(((ClassType)Method.Attributes.ContainingType).Identifier)); } TranslateSegment(BuilderSet, Method); foreach (DefinedMethod option in options) { // The action set for the overload. ActionSet optionSet = BuilderSet.New(BuilderSet.IndexAssigner.CreateContained()); // Add the object variables of the selected method. option.Attributes.ContainingType.AddObjectVariablesToAssigner(optionSet.CurrentObject, optionSet.IndexAssigner); // Go to next case then parse the block. typeSwitch.NextCase(new V_Number(((ClassType)option.Attributes.ContainingType).Identifier)); // Iterate through every type. foreach (CodeType type in BuilderSet.Translate.DeltinScript.Types.AllTypes) { // If 'type' does not equal the current virtual option's containing class... if (option.Attributes.ContainingType != type // ...and 'type' implements the containing class... && type.Implements(option.Attributes.ContainingType) // ...and 'type' does not have their own function implementation... && AutoImplemented(option.Attributes.ContainingType, options.Select(o => o.Attributes.ContainingType).ToArray(), type)) { // ...then add an additional case for 'type's class identifier. typeSwitch.NextCase(new V_Number(((ClassType)type).Identifier)); } } if (option.subroutineInfo == null) { TranslateSegment(optionSet, option); } else { option.SetupSubroutine(); BuilderSet.AddAction(Element.Part <A_StartRule>(option.subroutineInfo.Subroutine, EnumData.GetEnumValue(IfAlreadyExecuting.DoNothing))); if (Method.DoesReturnValue) { ReturnHandler.ReturnValue(option.subroutineInfo.ReturnHandler.GetReturnedValue()); } } if (Method.IsSubroutine) { option.virtualSubroutineAssigned = Method; } } ClassData classData = BuilderSet.Translate.DeltinScript.GetComponent <ClassData>(); // Finish the switch. typeSwitch.Finish(Element.Part <V_ValueInArray>(classData.ClassIndexes.GetVariable(), BuilderSet.CurrentObject)); }
public void BuilderSet(string profile, BuilderSet <ElementRequest> builders) { var policy = new AccessorOverrideElementBuilderPolicy(_rules, _category, profile); builders.InsertFirst(policy); }
public ElementCategoryExpression(BuilderSet <ElementRequest> set) { _set = set; }
public ElementActionExpression(BuilderSet <ElementRequest> set, Func <ElementRequest, bool> filter, string filterDescription) { _set = set; _filter = filter; _filterDescription = filterDescription.IsNotEmpty() ? filterDescription : "User Defined"; }