コード例 #1
0
            public void BasicPageControls()
            {
                CSProjectFile projectFile = new CSProjectFile()
                {
                    ClassList = new List <CSClass>()
                    {
                        new CSClass
                        {
                            ClassFullName = "Test1.TestClass1",
                            FieldList     = new List <CSField>()
                            {
                                new CSField {
                                    FieldName = "form1", ProtectionLevel = EnumProtectionLevel.Protected, TypeFullName = "global::System.Web.UI.HtmlControls.HtmlForm"
                                },
                                new CSField {
                                    FieldName = "_lblTest", ProtectionLevel = EnumProtectionLevel.Protected, TypeFullName = "global::System.Web.UI.WebControls.Label"
                                }
                            }
                        }
                    },
                    WebFormContainers = new List <WebFormContainer>()
                    {
                        new WebFormContainer
                        {
                            ClassFullName  = "Test1.TestClass1",
                            CodeBehindFile = "TestClass.aspx.cs",
                            FilePath       = "C:\\Test\\TestClass.aspx",
                            ContainerType  = EnumWebFormContainerType.WebPage,
                            Controls       = new List <WebFormServerControl>()
                            {
                                new WebFormServerControl {
                                    TagName = "form", ControlID = "form1"
                                },
                                new WebFormServerControl {
                                    TagName = "asp:label", ControlID = "_lblTest"
                                }
                            }
                        }
                    },
                    ClassFileDependencyList = new List <ClassFileDependency>()
                    {
                        new ClassFileDependency {
                            ClassFullName = "Test1.TestClass1", DependentUponFile = "TestClass.aspx"
                        }
                    }
                };
                var parser = new SourceWebModelParser();
                var result = parser.LoadFromProjectFile(projectFile, "C:\\Test\\Test.csproj");

                Assert.AreEqual(1, result.WebPageList.Count);
                Assert.AreEqual("/TestClass.aspx", result.WebPageList[0].PageUrl);
                Assert.AreEqual("Test1.TestClass1", result.WebPageList[0].ClassFullName);

                Assert.AreEqual(2, result.WebPageList[0].Controls.Count);
                Assert.AreEqual("System.Web.UI.HtmlControls.HtmlForm", result.WebPageList[0].Controls[0].ClassFullName);
                Assert.AreEqual("form1", result.WebPageList[0].Controls[0].FieldName);
                Assert.AreEqual("System.Web.UI.WebControls.Label", result.WebPageList[0].Controls[1].ClassFullName);
                Assert.AreEqual("_lblTest", result.WebPageList[0].Controls[1].FieldName);
            }
コード例 #2
0
ファイル: ProjectTests.cs プロジェクト: mmooney/MMDB.UITest
            public void TestWebFormFiles()
            {
                string data =
                    @"<?xml version=""1.0"" encoding=""utf-8""?>
					<Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
						<ItemGroup>
							<Compile Include=""TestClass1.aspx.cs"">
								<DependentUpon>TestClass1.aspx</DependentUpon>
							</Compile>
						</ItemGroup>
						<ItemGroup>
							<Content Include=""TestClass1.aspx"" />
							<Content Include=""TestControl.ascx"" />
							<Content Include=""TestMaster.Master"" />
						</ItemGroup>
					</Project>
				"                ;
                Mock <ClassParser> classParser = new Mock <ClassParser>();
                List <CSClass>     classList   = new List <CSClass>();
                var testClass1 = new CSClass()
                {
                    ClassName     = "TestClass1",
                    NamespaceName = "Test.Test1"
                };

                classList.Add(testClass1);
                classParser.Setup(i => i.ParseFile("C:\\Test\\TestClass1.aspx.cs", It.IsAny <string>(), It.IsAny <IEnumerable <CSClass> >())).Returns(classList);

                Mock <CSWebFormParser> webFormParser = new Mock <CSWebFormParser>();

                webFormParser.Setup(i => i.ParseFile("C:\\Test\\TestClass1.aspx"))
                .Returns(new WebFormContainer {
                    ClassFullName = "Test.Test1.TestClass1", CodeBehindFile = "TestClass1.aspx.cs", ContainerType = EnumWebFormContainerType.WebPage
                });
                webFormParser.Setup(i => i.ParseFile("C:\\Test\\TestControl.ascx"))
                .Returns(new WebFormContainer {
                    ClassFullName = "Test.Test1.TestControl", CodeBehindFile = "TestControl.ascx.cs", ContainerType = EnumWebFormContainerType.UserControl
                });
                webFormParser.Setup(i => i.ParseFile("C:\\Test\\TestMaster.Master"))
                .Returns(new WebFormContainer {
                    ClassFullName = "Test.Test1.TestMaster", CodeBehindFile = "TestMaster.Master.cs", ContainerType = EnumWebFormContainerType.MasterPage
                });

                ProjectParser parser = new ProjectParser(classParser.Object, webFormParser.Object);

                CSProjectFile project = parser.ParseString(data, "C:\\Test\\TestProject.csproj");

                Assert.AreEqual(1, project.ClassList.Count);
                Assert.AreEqual("Test.Test1.TestClass1", project.ClassList[0].ClassFullName);

                Assert.AreEqual(3, project.WebFormContainers.Count);
                Assert.AreEqual("Test.Test1.TestClass1", project.WebFormContainers[0].ClassFullName);
                Assert.AreEqual("Test.Test1.TestControl", project.WebFormContainers[1].ClassFullName);
                Assert.AreEqual("Test.Test1.TestMaster", project.WebFormContainers[2].ClassFullName);
            }
コード例 #3
0
        public SourceWebProject LoadFromProjectFile(CSProjectFile csProject, string projectFilePath)
        {
            SourceWebProject returnValue = new SourceWebProject()
            {
                RootNamespace = csProject.RootNamespace
            };
            var webPageList = csProject.WebFormContainers.Where(i => i.ContainerType == EnumWebFormContainerType.WebPage);

            foreach (var webPage in webPageList)
            {
                var csClass = csProject.ClassList.SingleOrDefault(i => i.ClassFullName == webPage.ClassFullName);
                if (csClass != null)
                {
                    SourceWebPage sourceWebPage = new SourceWebPage()
                    {
                        ClassFullName = webPage.ClassFullName,
                        PageUrl       = ConvertToUrl(webPage.FilePath, projectFilePath),
                        Controls      = LoadControls(webPage, csClass)
                    };
                    returnValue.WebPageList.Add(sourceWebPage);
                }
            }
            var masterPageList = csProject.WebFormContainers.Where(i => i.ContainerType == EnumWebFormContainerType.MasterPage);

            foreach (var masterPage in masterPageList)
            {
                SourceMasterPage sourceMasterPage = new SourceMasterPage()
                {
                    ClassFullName = masterPage.ClassFullName,
                    PageUrl       = ConvertToUrl(masterPage.FilePath, projectFilePath)
                };
                returnValue.MasterPageList.Add(sourceMasterPage);
            }
            var userControlList = csProject.WebFormContainers.Where(i => i.ContainerType == EnumWebFormContainerType.UserControl);

            foreach (var userControl in userControlList)
            {
                var csClass = csProject.ClassList.SingleOrDefault(i => i.ClassFullName == userControl.ClassFullName);
                SourceUserControl sourceUserControl = new SourceUserControl()
                {
                    ClassFullName = userControl.ClassFullName,
                    Controls      = LoadControls(userControl, csClass)
                };
                returnValue.UserControlList.Add(sourceUserControl);
            }
            return(returnValue);
        }
コード例 #4
0
        public TargetProject LoadFromProjectFile(CSProjectFile targetProjectFile, string targetProjectFileName)
        {
            TargetProject returnValue = new TargetProject()
            {
                Directory     = Path.GetDirectoryName(targetProjectFileName),
                FileName      = Path.GetFileName(targetProjectFileName),
                RootNamespace = targetProjectFile.RootNamespace
            };

            foreach (var csClass in targetProjectFile.ClassList)
            {
                var targetClass = this.TargetClassManager.TryLoadTargetClass(csClass);
                if (targetClass != null)
                {
                    returnValue.TargetClassList.Add(targetClass);
                }
            }
            return(returnValue);
        }
コード例 #5
0
ファイル: ProjectTests.cs プロジェクト: mmooney/MMDB.UITest
            public void TestBasicProject()
            {
                string data =
                    @"<?xml version=""1.0"" encoding=""utf-8""?>
					<Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
						<PropertyGroup>
						<Configuration Condition="" '$(Configuration)' == '' "">Debug</Configuration>
							<OutputType>Library</OutputType>
							<AppDesignerFolder>Properties</AppDesignerFolder>
							<RootNamespace>TestRootNamespace</RootNamespace>
							<RestorePackages>true</RestorePackages>
						</PropertyGroup>
						<ItemGroup>
							<Compile Include=""TestClass1.cs"" />
						</ItemGroup>
					</Project>
				"                ;
                Mock <ClassParser> classParser = new Mock <ClassParser>();
                List <CSClass>     classList   = new List <CSClass>();
                var testClass1 = new CSClass()
                {
                    ClassName     = "TestClass1",
                    NamespaceName = "Test.Test1"
                };

                classList.Add(testClass1);
                classParser.Setup(i => i.ParseFile("C:\\Test\\TestClass1.cs", It.IsAny <string>(), It.IsAny <IEnumerable <CSClass> >())).Returns(classList);

                ProjectParser parser = new ProjectParser(classParser.Object);

                CSProjectFile project = parser.ParseString(data, "C:\\Test\\TestProject.csproj");

                Assert.AreEqual("TestRootNamespace", project.RootNamespace);
                Assert.AreEqual(1, project.ClassList.Count);
                Assert.AreEqual("Test.Test1.TestClass1", project.ClassList[0].ClassFullName);
            }
コード例 #6
0
ファイル: ProjectTests.cs プロジェクト: mmooney/MMDB.UITest
            public void TestRelativeDependentUponFilePath()
            {
                string data =
                    @"<?xml version=""1.0"" encoding=""utf-8""?>
					<Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
						<ItemGroup>
							<Compile Include=""TestDirectory\TestClass1.aspx.cs"">
								<DependentUpon>TestClass1.aspx</DependentUpon>
							</Compile>
							<Compile Include=""TestDirectory1\TestDirectory2\TestClass2.aspx.cs"">
								<DependentUpon>TestClass2.aspx</DependentUpon>
							</Compile>
						</ItemGroup>
						<ItemGroup>
							<Content Include=""TestDirectory\TestClass1.aspx"" />
							<Content Include=""TestDirectory1\TestDirectory2\TestClass2.aspx"" />
						</ItemGroup>
					</Project>
				"                ;
                Mock <ClassParser> classParser = new Mock <ClassParser>();
                List <CSClass>     classList   = new List <CSClass>();
                var testClass1 = new CSClass()
                {
                    ClassFullName = "Test.Test1.TestClass1"
                };
                var testClass2 = new CSClass()
                {
                    ClassFullName = "Test.Test2.TestClass2"
                };

                classList.Add(testClass1);
                classParser.Setup(i => i.ParseFile("C:\\Test\\TestDirectory\\TestClass1.aspx.cs", It.IsAny <string>(), It.IsAny <IEnumerable <CSClass> >()))
                .Returns((string filePath, string projectPath, IEnumerable <CSClass> inputClassList) => AppendClassToList(inputClassList, testClass1));
                classParser.Setup(i => i.ParseFile("C:\\Test\\TestDirectory1\\TestDirectory2\\TestClass2.aspx.cs", It.IsAny <string>(), It.IsAny <IEnumerable <CSClass> >()))
                .Returns((string filePath, string projectPath, IEnumerable <CSClass> inputClassList) => AppendClassToList(inputClassList, testClass2));

                Mock <CSWebFormParser> webFormParser = new Mock <CSWebFormParser>();

                webFormParser.Setup(i => i.ParseFile("C:\\Test\\TestDirectory\\TestClass1.aspx"))
                .Returns(new WebFormContainer {
                    ClassFullName = "Test.Test1.TestClass1", CodeBehindFile = "TestClass1.aspx.cs", ContainerType = EnumWebFormContainerType.WebPage
                });
                webFormParser.Setup(i => i.ParseFile("C:\\Test\\TestDirectory1\\TestDirectory2\\TestClass2.aspx"))
                .Returns(new WebFormContainer {
                    ClassFullName = "Test.Test2.TestClass2", CodeBehindFile = "TestClass2.aspx.cs", ContainerType = EnumWebFormContainerType.WebPage
                });

                ProjectParser parser = new ProjectParser(classParser.Object, webFormParser.Object);

                CSProjectFile project = parser.ParseString(data, "C:\\Test\\TestProject.csproj");

                Assert.AreEqual(2, project.ClassList.Count);

                Assert.AreEqual("Test.Test1.TestClass1", project.ClassList[0].ClassFullName);
                Assert.AreEqual("Test.Test2.TestClass2", project.ClassList[1].ClassFullName);

                Assert.AreEqual(2, project.ClassFileDependencyList.Count);
                Assert.AreEqual("Test.Test1.TestClass1", project.ClassFileDependencyList[0].ClassFullName);
                Assert.AreEqual("TestDirectory\\TestClass1.aspx", project.ClassFileDependencyList[0].DependentUponFile);
                Assert.AreEqual("Test.Test2.TestClass2", project.ClassFileDependencyList[1].ClassFullName);
                Assert.AreEqual("TestDirectory1\\TestDirectory2\\TestClass2.aspx", project.ClassFileDependencyList[1].DependentUponFile);

                Assert.AreEqual(2, project.WebFormContainers.Count);

                Assert.AreEqual("Test.Test1.TestClass1", project.WebFormContainers[0].ClassFullName);
                Assert.AreEqual("TestClass1.aspx.cs", project.WebFormContainers[0].CodeBehindFile);
                Assert.AreEqual(EnumWebFormContainerType.WebPage, project.WebFormContainers[0].ContainerType);

                Assert.AreEqual("Test.Test2.TestClass2", project.WebFormContainers[1].ClassFullName);
                Assert.AreEqual("TestClass2.aspx.cs", project.WebFormContainers[1].CodeBehindFile);
                Assert.AreEqual(EnumWebFormContainerType.WebPage, project.WebFormContainers[1].ContainerType);
            }
コード例 #7
0
            public void BasicTest()
            {
                CSProjectFile projectFile = new CSProjectFile()
                {
                    RootNamespace = "Test.Namespace",
                    ClassList     = new List <CSClass>
                    {
                        new CSClass {
                            ClassFullName = "Test1.TestClass1", FileRelativePathList = new List <string> {
                                "TestClass1.aspx"
                            }
                        },
                        new CSClass {
                            ClassFullName = "Test1.TestMaster", FileRelativePathList = new List <string> {
                                "TestMasterPage.Master"
                            }
                        },
                        new CSClass {
                            ClassFullName = "Test1.TestUserControl", FileRelativePathList = new List <string> {
                                "TestUserControl.ascx"
                            }
                        }
                    },
                    WebFormContainers = new List <WebFormContainer>()
                    {
                        new WebFormContainer {
                            ClassFullName = "Test1.TestClass1", CodeBehindFile = "TestClass1.aspx.cs", ContainerType = EnumWebFormContainerType.WebPage, FilePath = "C:\\Test\\TestClass1.aspx"
                        },
                        new WebFormContainer {
                            ClassFullName = "Test1.TestMasterPage", CodeBehindFile = "TestMasterPage.Master.cs", ContainerType = EnumWebFormContainerType.MasterPage, FilePath = "C:\\Test\\TestMasterPage.Master"
                        },
                        new WebFormContainer {
                            ClassFullName = "Test1.TestUserControl", CodeBehindFile = "TestUserControl.ascx.cs", ContainerType = EnumWebFormContainerType.UserControl, FilePath = "C:\\Test\\TestUserControl.ascx"
                        }
                    },
                    ClassFileDependencyList = new List <ClassFileDependency>
                    {
                        new ClassFileDependency {
                            ClassFullName = "Test1.TestClass1", DependentUponFile = "TestClass1.aspx"
                        },
                        new ClassFileDependency {
                            ClassFullName = "Test1.TestMasterPage", DependentUponFile = "TestMasterPage.Master"
                        },
                        new ClassFileDependency {
                            ClassFullName = "Test1.TestUserControl", DependentUponFile = "TestUserControl.ascx"
                        }
                    }
                };
                SourceWebModelParser parser = new SourceWebModelParser();
                SourceWebProject     result = parser.LoadFromProjectFile(projectFile, "C:\\Test\\Test.csproj");

                Assert.IsNotNull(result);
                Assert.AreEqual(projectFile.RootNamespace, result.RootNamespace);

                Assert.AreEqual(1, result.WebPageList.Count);
                Assert.AreEqual("Test1.TestClass1", result.WebPageList[0].ClassFullName);
                Assert.AreEqual("/TestClass1.aspx", result.WebPageList[0].PageUrl);

                Assert.AreEqual(1, result.MasterPageList.Count);
                Assert.AreEqual("Test1.TestMasterPage", result.MasterPageList[0].ClassFullName);
                Assert.AreEqual("/TestMasterPage.Master", result.MasterPageList[0].PageUrl);

                Assert.AreEqual(1, result.UserControlList.Count);
                Assert.AreEqual("Test1.TestUserControl", result.UserControlList[0].ClassFullName);
            }