/src/AddIns/Misc/PackageManagement/Test/Src/DependentFileNameTests.cs

https://github.com/ajadex/SharpDevelop · C# · 186 lines · 133 code · 36 blank · 17 comment · 0 complexity · e57137c0682c09d6021383915c6df98f MD5 · raw file

  1. // Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
  2. //
  3. // Permission is hereby granted, free of charge, to any person obtaining a copy of this
  4. // software and associated documentation files (the "Software"), to deal in the Software
  5. // without restriction, including without limitation the rights to use, copy, modify, merge,
  6. // publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
  7. // to whom the Software is furnished to do so, subject to the following conditions:
  8. //
  9. // The above copyright notice and this permission notice shall be included in all copies or
  10. // substantial portions of the Software.
  11. //
  12. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
  13. // INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  14. // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
  15. // FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  16. // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  17. // DEALINGS IN THE SOFTWARE.
  18. using System;
  19. using ICSharpCode.Core;
  20. using ICSharpCode.PackageManagement;
  21. using ICSharpCode.SharpDevelop;
  22. using ICSharpCode.SharpDevelop.Project;
  23. using NUnit.Framework;
  24. using PackageManagement.Tests.Helpers;
  25. namespace PackageManagement.Tests
  26. {
  27. [TestFixture]
  28. public class DependentFileTests
  29. {
  30. TestableProject project;
  31. DependentFile dependentFile;
  32. void CreateCSharpProject(string projectFileName)
  33. {
  34. project = ProjectHelper.CreateTestProject();
  35. project.FileName = new FileName(projectFileName);
  36. }
  37. FileProjectItem AddFileToProject(string include)
  38. {
  39. return project.AddFile(include);
  40. }
  41. void CreateDependentFile()
  42. {
  43. dependentFile = new DependentFile(project);
  44. }
  45. [SetUp]
  46. public void Init()
  47. {
  48. SD.InitializeForUnitTests();
  49. }
  50. [Test]
  51. public void GetParentFileProjectItem_ResxFileNameAndCSharpParentFileExistsInProject_ReturnsParentFileProjectItem()
  52. {
  53. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  54. FileProjectItem expectedProjectItem = AddFileToProject("test.cs");
  55. CreateDependentFile();
  56. string fileName = @"d:\projects\MyProject\test.resx";
  57. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  58. Assert.AreEqual(expectedProjectItem, projectItem);
  59. }
  60. [Test]
  61. public void GetParentFileProjectItem_ResxFileNameAndProjectHasNoFiles_ReturnsNull()
  62. {
  63. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  64. CreateDependentFile();
  65. string fileName = @"d:\projects\MyProject\test.resx";
  66. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  67. Assert.IsNull(projectItem);
  68. }
  69. [Test]
  70. public void GetParentFileProjectItem_ResxFileNameAndProjectHasOneCSharpFileWithDifferentFileNameToResxFile_ReturnsNull()
  71. {
  72. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  73. AddFileToProject(@"d:\projects\MyProject\program.cs");
  74. CreateDependentFile();
  75. string fileName = @"d:\projects\MyProject\test.resx";
  76. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  77. Assert.IsNull(projectItem);
  78. }
  79. [Test]
  80. public void GetParentFileProjectItem_ResxFileNameAndVisualBasicParentFileExistsInProject_ReturnsParentFileProjectItem()
  81. {
  82. CreateCSharpProject(@"d:\projects\MyProject\MyProject.vbproj");
  83. FileProjectItem expectedProjectItem = AddFileToProject("test.vb");
  84. CreateDependentFile();
  85. string fileName = @"d:\projects\MyProject\test.resx";
  86. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  87. Assert.AreEqual(expectedProjectItem, projectItem);
  88. }
  89. [Test]
  90. public void GetParentFileProjectItem_ResxFileNameAndVisualBasicParentFileExistsInProjectWhenProjectFileExtensionIsInUpperCase_ReturnsParentFileProjectItem()
  91. {
  92. CreateCSharpProject(@"d:\projects\MyProject\MyProject.VBPROJ");
  93. FileProjectItem expectedProjectItem = AddFileToProject("test.vb");
  94. CreateDependentFile();
  95. string fileName = @"d:\projects\MyProject\test.resx";
  96. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  97. Assert.AreEqual(expectedProjectItem, projectItem);
  98. }
  99. [Test]
  100. public void GetParentFileProjectItem_DesignerFileNameAndCSharpParentFileExistsInProject_ReturnsParentFileProjectItem()
  101. {
  102. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  103. FileProjectItem expectedProjectItem = AddFileToProject("test.cs");
  104. CreateDependentFile();
  105. string fileName = @"d:\projects\MyProject\test.Designer.cs";
  106. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  107. Assert.AreEqual(expectedProjectItem, projectItem);
  108. }
  109. [Test]
  110. public void GetParentFileProjectItem_DesignerFileNameInLowerCaseAndCSharpParentFileExistsInProject_ReturnsParentFileProjectItem()
  111. {
  112. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  113. FileProjectItem expectedProjectItem = AddFileToProject("test.cs");
  114. CreateDependentFile();
  115. string fileName = @"d:\projects\MyProject\test.designer.cs";
  116. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  117. Assert.AreEqual(expectedProjectItem, projectItem);
  118. }
  119. [Test]
  120. public void GetParentFileProjectItem_DesignerInFileNameButMissingDot_ReturnsNull()
  121. {
  122. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  123. AddFileToProject("abc.cs");
  124. CreateDependentFile();
  125. string fileName = @"d:\projects\MyProject\abc2Designer.cs";
  126. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  127. Assert.IsNull(projectItem);
  128. }
  129. [Test]
  130. public void GetParentFileProjectItem_DesignerInFolderName_ReturnsNull()
  131. {
  132. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  133. AddFileToProject("abc.cs");
  134. CreateDependentFile();
  135. string fileName = @"d:\projects\MyProject\abc.Designer\foo.cs";
  136. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  137. Assert.IsNull(projectItem);
  138. }
  139. [Test]
  140. public void GetParentFileProjectItem_DesignerInFolderNameAndInFileName_ReturnsMatchingParentProjectItem()
  141. {
  142. CreateCSharpProject(@"d:\projects\MyProject\MyProject.csproj");
  143. FileProjectItem expectedProjectItem = AddFileToProject(@"Form.Designer\abc.cs");
  144. CreateDependentFile();
  145. string fileName = @"d:\projects\MyProject\Form.Designer\abc.Designer.cs";
  146. FileProjectItem projectItem = dependentFile.GetParentFileProjectItem(fileName);
  147. Assert.AreEqual(expectedProjectItem, projectItem);
  148. }
  149. }
  150. }