Browse Source

FileUtility.IsValidPath(...) and additional directory tests (patch by Frederick Kautz)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4374 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 16 years ago
parent
commit
3a0fe2b1b2
  1. 8
      src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs
  2. 1
      src/Main/Core/Test/ICSharpCode.Core.Tests.csproj
  3. 216
      src/Main/Core/Test/InvalidDirectoryNameTests.cs
  4. 76
      src/Main/Core/Test/ValidDirectoryNameTests.cs

8
src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs

@ -372,6 +372,14 @@ namespace ICSharpCode.Core @@ -372,6 +372,14 @@ namespace ICSharpCode.Core
return false;
}
if(fileName[fileName.Length-1] == ' ') {
return false;
}
if(fileName[fileName.Length-1] == '.') {
return false;
}
// platform dependend : Check for invalid file names (DOS)
// this routine checks for follwing bad file names :
// CON, PRN, AUX, NUL, COM1-9 and LPT1-9

1
src/Main/Core/Test/ICSharpCode.Core.Tests.csproj

@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
<Compile Include="AddInTreeTests\AddInTreeLoadingTests.cs" />
<Compile Include="AddInTreeTests\ExtPathTests.cs" />
<Compile Include="InvalidDirectoryNameTests.cs" />
<Compile Include="ValidDirectoryNameTests.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Project\ICSharpCode.Core.csproj">

216
src/Main/Core/Test/InvalidDirectoryNameTests.cs

@ -36,5 +36,221 @@ namespace ICSharpCode.Core.Tests @@ -36,5 +36,221 @@ namespace ICSharpCode.Core.Tests
{
Assert.IsFalse(FileUtility.IsValidDirectoryName(" "));
}
[Test]
public void ContainsLessThan()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project<test"));
}
[Test]
public void ContainsGreaterThan()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project>test"));
}
[Test]
public void ContainsColon()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project:test"));
}
[Test]
public void ContainsDoubleQuote()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName(@"project""test"));
}
[Test]
public void ContainsPipe()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project|test"));
}
[Test]
public void ContainsQuestionMark()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project?test"));
}
[Test]
public void ContainsStar()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("project*test"));
}
[Test]
public void IntegerRepresentationBetween0And31()
{
for(int i=0; i<32; i++)
{
char testChar = (char)i;
string testString = string.Format("project{0}test", testChar);
Assert.IsFalse(FileUtility.IsValidDirectoryName(testString));
}
}
[Test]
public void ReservedDeviceNameCON()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("CON"));
}
[Test]
public void ReservedDeviceNamePRN()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("PRN"));
}
[Test]
public void ReservedDeviceNameAUX()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("AUX"));
}
[Test]
public void ReservedDeviceNameNUL()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("NUL"));
}
[Test]
public void ReservedDeviceNameCOM1()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM1"));
}
[Test]
public void ReservedDeviceNameCOM2()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM2"));
}
[Test]
public void ReservedDeviceNameCOM3()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM3"));
}
[Test]
public void ReservedDeviceNameCOM4()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM4"));
}
[Test]
public void ReservedDeviceNameCOM5()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM5"));
}
[Test]
public void ReservedDeviceNameCOM6()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM6"));
}
[Test]
public void ReservedDeviceNameCOM7()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM7"));
}
[Test]
public void ReservedDeviceNameCOM8()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM8"));
}
[Test]
public void ReservedDeviceNameCOM9()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("COM9"));
}
[Test]
public void ReservedDeviceNameLPT1()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT1"));
}
[Test]
public void ReservedDeviceNameLPT2()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT2"));
}
[Test]
public void ReservedDeviceNameLPT3()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT3"));
}
[Test]
public void ReservedDeviceNameLPT4()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT4"));
}
[Test]
public void ReservedDeviceNameLPT5()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT5"));
}
[Test]
public void ReservedDeviceNameLPT6()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT6"));
}
[Test]
public void ReservedDeviceNameLPT7()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT7"));
}
[Test]
public void ReservedDeviceNameLPT8()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT8"));
}
[Test]
public void ReservedDeviceNameLPT9()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("LPT9"));
}
[Test]
public void EndWithSpace()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("projecttest "));
}
[Test]
public void EndWithPeriod()
{
Assert.IsFalse(FileUtility.IsValidDirectoryName("projecttest."));
}
/// <summary>
/// Windows API defines the maximum length of a path to 260 characters.
/// However, Unicode extended-length path may have a limit of approximately 32,767
/// characters. See Maximum Path Length for more information at
/// http://msdn.microsoft.com/en-us/library/aa365247(VS.85).aspx
/// </summary>
[Test]
public void NameTooLong()
{
int MAX_LENGTH = 260;
System.Text.StringBuilder tempString = new System.Text.StringBuilder("");
for(int i=0; i < MAX_LENGTH; i++)
{
tempString.Append('a');
}
Assert.IsTrue(tempString.Length == MAX_LENGTH, "Failed to build a test directory string of {0} length.", MAX_LENGTH);
Assert.IsFalse(FileUtility.IsValidDirectoryName(tempString.ToString()));
}
}
}

76
src/Main/Core/Test/ValidDirectoryNameTests.cs

@ -0,0 +1,76 @@ @@ -0,0 +1,76 @@
using NUnit.Framework;
using System;
namespace ICSharpCode.Core.Tests
{
[TestFixture]
public class ValidDirectoryNameTests
{
[Test]
public void ValidDirectoryNameProjectTest()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("projecttest"));
}
[Test]
public void ValidDirectoryNameWithPeriod()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("project.test"));
}
[Test]
public void ValidDirectoryNameWithTwoPeriodAtStart()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("..projecttest"));
}
[Test]
public void ValidDirectoryNameCOM()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("COM"));
}
[Test]
public void ValidDirectoryNameCOM10()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("COM10"));
}
[Test]
public void ValidDirectoryNameLPT()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("LPT"));
}
[Test]
public void ValidDirectoryNameLPT10()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("LPT10"));
}
[Test]
public void ValidEightThreeDirectoryName()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("projec~1.est"));
}
[Test]
public void SmallestDirectoryNameLength()
{
Assert.IsTrue(FileUtility.IsValidDirectoryName("a"));
}
[Test]
public void LongestDirectoryNameLength()
{
// TODO: Determine what maximum length of directory should be.
int MAX_LENGTH = 259;
System.Text.StringBuilder tempString = new System.Text.StringBuilder("");
for(int i=0; i < MAX_LENGTH; i++)
{
tempString.Append('a');
}
Assert.IsTrue(FileUtility.IsValidDirectoryName(tempString.ToString()));
}
}
}
Loading…
Cancel
Save