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); }
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); }
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); }
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); }
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); }
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); }
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); }