コード例 #1
0
        public void GetArtifactsReturnsNull()
        {
            MockServiceProvider    mockServiceProvider = new MockServiceProvider();
            IArtifactLinkContainer links = ModelCollector.GetArtifacts(mockServiceProvider);

            Assert.IsNull(links);
        }
コード例 #2
0
        public void AccessibilityRespected_ReturnsPublicOnly()
        {
            var tree = CSharpSyntaxTree.ParseText(@"
                public class A : IController<Controller>
                {
                    const int A_Constant = 0;

                    private string B { get; set }

                    static string C { get; set }

                    public string Included { get; set }

                    public void AMember() 
                    { 
                    }
                }"
                                                  );

            var root = (CompilationUnitSyntax)tree.GetRoot();

            var modelCollector = new ModelCollector();

            modelCollector.VisitClassDeclaration(root.DescendantNodes().OfType <ClassDeclarationSyntax>().First());

            Assert.IsNotNull(modelCollector.Models);
            Assert.IsNotNull(modelCollector.Models.First().Properties);
            Assert.AreEqual(1, modelCollector.Models.First().Properties.Count());
        }
コード例 #3
0
    static void Main(string[] args)
    {
        var code =
            @"              using System; 
                    using System.Collections.Generic; 
                    using System.Linq; 
                    using System.Text; 
    
                    namespace HelloWorld 
                    { 
                        public class MyAwesomeModel
                        {
                            public string MyProperty {get;set;}
                            public int MyProperty1 {get;set;}
                        }
    
                    }";

        var tree = CSharpSyntaxTree.ParseText(code);

        var root           = (CompilationUnitSyntax)tree.GetRoot();
        var modelCollector = new ModelCollector();

        modelCollector.Visit(root);
        Console.WriteLine(JsonConvert.SerializeObject(modelCollector.models));
    }
コード例 #4
0
        public void ObsoleteFields_ShouldBeMarkedObsolete()
        {
            var tree = CSharpSyntaxTree.ParseText(@"
                public class A
                {
                    public int NonObsoleteProperty { get; set; }

                    [Obsolete]
                    public int ObsoleteProperty { get; set; }

                    [Obsolete]
                    public int ObsoleteField;
                }"
                                                  );

            var root           = (CompilationUnitSyntax)tree.GetRoot();
            var modelCollector = new ModelCollector();

            modelCollector.Visit(root);
            var modelProperties = modelCollector.Models.Single().Properties.ToArray();
            var modelFields     = modelCollector.Models.Single().Fields.ToArray();

            Assert.That(modelProperties[0].Identifier, Is.EqualTo("NonObsoleteProperty"));
            Assert.That(modelProperties[0].IsObsolete, Is.False);

            Assert.That(modelProperties[1].Identifier, Is.EqualTo("ObsoleteProperty"));
            Assert.That(modelProperties[1].IsObsolete, Is.True);

            Assert.That(modelFields[0].Identifier, Is.EqualTo("ObsoleteField"));
            Assert.That(modelFields[0].IsObsolete, Is.True);
        }
コード例 #5
0
 public PropertyLocator(string path, ModelCollector collector, Stack <Interpreter.IteratorManager> loopStack)
 {
     Path         = path;
     PathElements = path.Split('.');
     CurrentRoot  = null;
     Collector    = collector;
     LoopStack    = loopStack;
 }
コード例 #6
0
        private void GenerateAllArtifacts()
        {
            HashSet <ModelElement> elementList   = new HashSet <ModelElement>();
            FullDepthElementWalker elementWalker = new FullDepthElementWalker(
                new ModelElementVisitor(elementList), new EmbeddingReferenceVisitorFilter(), false);

            elementWalker.DoTraverse(DomainModelHelper.GetModelElement(this.FocusedSelection));
            IArtifactLinkContainer links = ModelCollector.GetArtifacts(elementList);

            GenerateArtifacts(links);
            elementList.Clear();
        }
コード例 #7
0
        public void DictionaryInheritance_ReturnsIndexAccessor()
        {
            var tree = CSharpSyntaxTree.ParseText(@"public class A : Dictionary<string, string> { }");

            var root = (CompilationUnitSyntax)tree.GetRoot();

            var modelCollector = new ModelCollector();

            modelCollector.VisitClassDeclaration(root.DescendantNodes().OfType <ClassDeclarationSyntax>().First());

            Assert.IsNotNull(modelCollector.Models);
            Assert.IsNotNull(modelCollector.Models.First().BaseClasses);
            Assert.AreEqual(new[] { "Dictionary<string, string>" }, modelCollector.Models.First().BaseClasses);
        }
コード例 #8
0
        protected override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            base.DoValidate(objectToValidate, currentTarget, key, validationResults);
            IArtifactLinkContainer container = objectToValidate as IArtifactLinkContainer;

            if (validationResults.IsValid &&
                ModelCollector.HasValidArtifacts(container) &&
                !ModelCollector.HasRoles(container))
            {
                this.LogValidationResult(validationResults,
                                         ValidatorUtility.ShowFormattedMessage(Resources.ExtenderObjectValidatorMessage, currentTarget),
                                         currentTarget,
                                         key);
            }
        }
コード例 #9
0
 public void OnMenuChangeGenerateCode(object sender, EventArgs e)
 {
     try
     {
         if (IsValidModel())
         {
             IArtifactLinkContainer links = ModelCollector.GetArtifacts(this.ServiceProvider);
             GenerateArtifacts(links);
         }
     }
     catch (Exception error)
     {
         Logger.Write(error);
     }
 }
コード例 #10
0
        public void OnMenuChangeViewGeneratedCode(object sender, EventArgs e)
        {
            IArtifactLinkContainer container = ModelCollector.GetArtifacts(DomainModelHelper.GetSelectedElement(this.ServiceProvider));

            foreach (IArtifactLink link in container.ArtifactLinks)
            {
                string fullPath = GetFullPath(link);
                if (File.Exists(fullPath))
                {
                    EnvDTE.DTE dte = (EnvDTE.DTE) this.ServiceProvider.GetService(typeof(EnvDTE.DTE));
                    if (dte != null)
                    {
                        dte.ItemOperations.OpenFile(fullPath, EnvDTE.Constants.vsViewKindCode);
                    }
                    return;
                }
            }
        }
コード例 #11
0
        public void InterfaceImport_ReturnsSyntaxClassFromInterface()
        {
            var tree = CSharpSyntaxTree.ParseText(@"
                public interface IPhoneNumber {
                    string Label { get; set; }
                    string Number { get; set; }
                    int MyProperty { get; set; }
                }

                public interface IPoint
                {
                   // Property signatures:
                   int x
                   {
                      get;
                      set;
                   }

                   int y
                   {
                      get;
                      set;
                   }
                }


                public class X {
                    public IPhoneNumber test { get; set; }
                    public IPoint test2 { get; set; }
                }"
                                                  );

            var root = (CompilationUnitSyntax)tree.GetRoot();

            var modelCollector = new ModelCollector();

            modelCollector.Visit(root);

            Assert.IsNotNull(modelCollector.Models);
            Assert.AreEqual(3, modelCollector.Models.Count);
            Assert.AreEqual(3, modelCollector.Models.First().Properties.Count());
        }
コード例 #12
0
        public void TypedInheritance_ReturnsInheritance()
        {
            var tree = CSharpSyntaxTree.ParseText(@"
                public class A : IController<Controller>
                {
                    public void AMember()
                    {
                    }
                }"
                                                  );

            var root = (CompilationUnitSyntax)tree.GetRoot();

            var modelCollector = new ModelCollector();

            modelCollector.VisitClassDeclaration(root.DescendantNodes().OfType <ClassDeclarationSyntax>().First());

            Assert.IsNotNull(modelCollector.Models);
            Assert.AreEqual(new[] { "IController<Controller>" }, modelCollector.Models.First().BaseClasses);
        }
コード例 #13
0
        private bool IsValidSelectedContainer()
        {
            IArtifactLinkContainer container = ModelCollector.GetArtifacts(DomainModelHelper.GetSelectedElement(this.ServiceProvider));

            bool isValid = (container != null && container.ArtifactLinks.Count > 0);

            if (isValid)
            {
                foreach (IArtifactLink link in container.ArtifactLinks)
                {
                    if (!File.Exists(GetFullPath(link)))
                    {
                        isValid = false;
                        break;
                    }
                }
            }

            return(isValid);
        }
コード例 #14
0
        public void OnStatusChangeInGenerateCode(object sender, EventArgs e)
        {
            DynamicStatusMenuCommand command = sender as DynamicStatusMenuCommand;
            bool activateCommand             = false;

            if (!this.IsCurrentDiagramEmpty() &&
                this.IsSingleSelection())
            {
                try
                {
                    activateCommand = ModelCollector.HasValidArtifactsAndRoles(this.ServiceProvider);
                }
                catch (Exception error)
                {
                    Logger.Write(error);
                }
            }

            command.Visible = command.Enabled = activateCommand;
        }
コード例 #15
0
        public void BasicInheritance_ReturnsInheritedClass()
        {
            const string baseClasses = "B, C, D";
            var          tree        = CSharpSyntaxTree.ParseText(@"
                public class A : B, C, D
                {
                    public void AMember()
                    {
                    }
                }"
                                                                  );

            var root = (CompilationUnitSyntax)tree.GetRoot();

            var modelCollector = new ModelCollector();

            modelCollector.VisitClassDeclaration(root.DescendantNodes().OfType <ClassDeclarationSyntax>().First());

            Assert.IsNotNull(modelCollector.Models);
            Assert.AreEqual(modelCollector.Models.First().BaseClasses, baseClasses);
        }
コード例 #16
0
        protected override void DoValidate(object objectToValidate, object currentTarget, string key, ValidationResults validationResults)
        {
            //TODO: Fix this call if not working
            if (objectToValidate != null)
            {
                //	Ignore objects than have already been validated.
                //
                if (IsValidated(objectToValidate))
                {
                    return;
                }

                Type targetType = objectToValidate.GetType();

                using (FileConfigurationSource configurationSource = new FileConfigurationSource(TargetConfigurationFile))
                {
                    Validator v = ValidationFactory.CreateValidator(targetType, "Common", configurationSource);
                    v.Validate(objectToValidate, validationResults);

                    v = ValidationFactory.CreateValidator(targetType, targetRuleset, configurationSource);
                    v.Validate(objectToValidate, validationResults);
                }
                Debug.WriteLine(String.Format(CultureInfo.CurrentUICulture, "{0} {1}", objectToValidate.ToString(), validationResults.IsValid ? "Succeeded" : "Failed"));
            }
            //base.DoValidate(objectToValidate, currentTarget, key, validationResults);
            IArtifactLinkContainer container = objectToValidate as IArtifactLinkContainer;

            if (validationResults.IsValid &&
                ModelCollector.HasValidArtifacts(container) &&
                !ModelCollector.HasRoles(container))
            {
                this.LogValidationResult(validationResults,
                                         ValidatorUtility.ShowFormattedMessage(Resources.ExtenderObjectValidatorMessage, currentTarget),
                                         currentTarget,
                                         key);
            }
        }