Пример #1
0
        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);
        }
Пример #2
0
        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);
     }
 }
Пример #4
0
        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);
        }
Пример #5
0
        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);
            }
Пример #8
0
 public ElementCategoryExpression(BuilderSet <ElementRequest> set)
 {
     _set = set;
 }
Пример #9
0
 public ElementActionExpression(BuilderSet <ElementRequest> set, Func <ElementRequest, bool> filter, string filterDescription)
 {
     _set               = set;
     _filter            = filter;
     _filterDescription = filterDescription.IsNotEmpty() ? filterDescription : "User Defined";
 }