using System; using System.IO; using Cosmos.Common.Extensions; using Cosmos.System.FileSystem; using Cosmos.System.FileSystem.VFS; using Cosmos.TestRunner; using Sys = Cosmos.System; namespace Cosmos.Kernel.Tests.Fat { /// /// The kernel implementation. /// /// public class Kernel : Sys.Kernel { private VFSBase mVFS; /// /// Pre-run events /// protected override void BeforeRun() { Console.WriteLine("Cosmos booted successfully, now start testing"); mVFS = new CosmosVFS(); VFSManager.RegisterVFS(mVFS); } /// /// Main kernel loop /// protected override void Run() { try { mDebugger.Send("Run"); TestPath(); TestDirectory(); TestFile(); TestFileStream(); TestController.Completed(); } catch (Exception e) { Console.WriteLine("Exception occurred"); Console.WriteLine(e.Message); mDebugger.Send("Exception occurred: " + e.Message); TestController.Failed(); } } #region System.IO.Path Tests /// /// Tests System.IO.Path plugs. /// private void TestPath() { //Path.ChangeExtension(string, string) mDebugger.Send("START TEST"); string xStringResult = Path.ChangeExtension(@"0:\Kudzu.txt", ".doc"); string xStringExpectedResult = @"0:\Kudzu.doc"; string xMessage = "Path.ChangeExtenstion (no dot) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.ChangeExtension(@"0:\Kudzu.txt", "doc"); xStringExpectedResult = @"0:\Kudzu.doc"; xMessage = "Path.ChangeExtenstion (no dot) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.Combine(string, string) mDebugger.Send("START TEST"); xStringResult = Path.Combine(@"0:\", "test"); xStringExpectedResult = @"0:\test"; xMessage = "Path.Combine (root and directory) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.Combine(@"0:\", "test.txt"); xStringExpectedResult = @"0:\test.txt"; xMessage = "Path.Combine (root and file) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.Combine(@"0:\test", "test2"); xStringExpectedResult = @"0:\test\test2"; xMessage = "Path.Combine (directory and directory) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.Combine(@"0:\test", "test2.txt"); xStringExpectedResult = @"0:\test\test2.txt"; xMessage = "Path.Combine (directory and file) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetDirectoryName(string) mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\"); xMessage = "Path.GetDirectoryName (root) failed."; Assert.IsTrue(xStringResult == null, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\test"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetDirectoryName (directory no trailing directory separator) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\test\"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetDirectoryName (directory with trailing directory separator) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\test\test2"); xStringExpectedResult = @"0:\test"; xMessage = "Path.GetDirectoryName (subdirectory no trailing directory separator) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\test\test2\"); xStringExpectedResult = @"0:\test"; xMessage = "Path.GetDirectoryName (subdirectory with trailing directory separator) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetDirectoryName(@"0:\test\ ."); xStringExpectedResult = @"0:\test"; xMessage = "Path.GetDirectoryName (directory with trailing directory separator and invalid path) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetExtension(string) mDebugger.Send("START TEST"); xStringResult = Path.GetExtension(@"file"); xStringExpectedResult = string.Empty; xMessage = "Path.GetExtension (file no extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetExtension(@"file.txt"); xStringExpectedResult = ".txt"; xMessage = "Path.GetExtension (file with extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetFileName(string aPath) mDebugger.Send("START TEST"); xStringResult = Path.GetFileName(@"0:\"); xStringExpectedResult = string.Empty; xMessage = "Path.GetFileName (root directory) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileName(@"0:\file.txt"); xStringExpectedResult = "file.txt"; xMessage = "Path.GetFileName (file with extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileName(@"0:\test\file"); xStringExpectedResult = "file"; xMessage = "Path.GetFileName (directory and file no extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileName(@"0:\test\file.txt"); xStringExpectedResult = "file.txt"; xMessage = "Path.GetFileName (directory and file with extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileName(@"0:\test\dir\"); xStringExpectedResult = string.Empty; xMessage = "Path.GetFileName (two directories and no file) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetFileNameWithoutExtension(string aPath) mDebugger.Send("START TEST"); xStringResult = Path.GetFileNameWithoutExtension(@"0:\file"); xStringExpectedResult = "file"; xMessage = "Path.GetFileNameWithoutExtension (file no extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileNameWithoutExtension(@"0:\file.txt"); xStringExpectedResult = "file"; xMessage = "Path.GetFileNameWithoutExtension (file with extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileNameWithoutExtension(@"0:\test\file"); xStringExpectedResult = "file"; xMessage = "Path.GetFileNameWithoutExtension (directory and file no extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileNameWithoutExtension(@"0:\test\file.txt"); xStringExpectedResult = "file"; xMessage = "Path.GetFileNameWithoutExtension (directory and file with extension) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetFileNameWithoutExtension(@"0:\test\dir\"); xStringExpectedResult = string.Empty; xMessage = "Path.GetFileNameWithoutExtension (two directories and no file) failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetFullPath(string) // Path.GetInvalidFileNameChars() mDebugger.Send("START TEST"); int xIntResult = Path.GetInvalidFileNameChars().Length; int xIntExpectedResult = 0; xMessage = "Path.GetInvalidFileNameChars failed."; Assert.IsFalse(xIntResult == xIntExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetInvalidPathChars() mDebugger.Send("START TEST"); xIntResult = Path.GetInvalidPathChars().Length; xIntExpectedResult = 0; xMessage = "Path.GetInvalidPathChars failed."; Assert.IsFalse(xIntResult == xIntExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetPathRoot(string) mDebugger.Send("START TEST"); xStringResult = Path.GetPathRoot(@"0:\"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetPathRoot failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetPathRoot(@"0:\test"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetPathRoot failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetPathRoot(@"0:\test.txt"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetPathRoot failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetPathRoot(@"0:\test\test2"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetPathRoot failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xStringResult = Path.GetPathRoot(@"0:\test\test2.txt"); xStringExpectedResult = @"0:\"; xMessage = "Path.GetPathRoot failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetRandomFileName() mDebugger.Send("START TEST"); xStringResult = Path.GetRandomFileName(); xStringExpectedResult = "random.tmp"; xMessage = "Path.GetRandomFileName failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetTempFileName() mDebugger.Send("START TEST"); xStringResult = Path.GetTempFileName(); xStringExpectedResult = "tempfile.tmp"; xMessage = "Path.GetTempFileName failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.GetTempPath(); mDebugger.Send("START TEST"); xStringResult = Path.GetTempPath(); xStringExpectedResult = @"\Temp"; xMessage = "Path.GetTempPath failed."; Assert.IsTrue(xStringResult == xStringExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.HasExtension(string) mDebugger.Send("START TEST"); bool xBooleanResult = Path.HasExtension("test.txt"); bool xBooleanExpectedResult = true; xMessage = "Path.HasExtension failed."; Assert.IsTrue(xBooleanResult == xBooleanExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xBooleanResult = Path.HasExtension("test"); xBooleanExpectedResult = false; xMessage = "Path.HasExtension failed."; Assert.IsTrue(xBooleanResult == xBooleanExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xBooleanResult = Path.HasExtension(@"0:\test.txt"); xBooleanExpectedResult = true; xMessage = "Path.HasExtension failed."; Assert.IsTrue(xBooleanResult == xBooleanExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xBooleanResult = Path.HasExtension(@"0:\test"); xBooleanExpectedResult = false; xMessage = "Path.HasExtension failed."; Assert.IsTrue(xBooleanResult == xBooleanExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); xBooleanResult = Path.HasExtension(@"0:\test\"); xBooleanExpectedResult = false; xMessage = "Path.HasExtension failed."; Assert.IsTrue(xBooleanResult == xBooleanExpectedResult, xMessage); mDebugger.Send("END TEST"); mDebugger.Send(""); // Path.IsPathRooted(string) } #endregion #region System.IO.Directory Tests /// /// Tests System.IO.Directory plugs. /// private void TestDirectory() { mDebugger.Send("START TEST: Get parent:"); var xParent = Directory.GetParent(@"0:\test"); Assert.IsTrue(xParent != null, "Failed to get directory parent."); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("START TEST: Get parent:"); xParent = Directory.GetParent(@"0:\test\"); Assert.IsTrue(xParent != null, "Failed to get directory parent."); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("Get files:"); var xFiles = Directory.GetFiles(@"0:\"); mDebugger.Send("Found " + xFiles.Length + " files."); if (xFiles.Length > 0) { mDebugger.Send("-- File list"); for (int i = 0; i < xFiles.Length; i++) { mDebugger.Send("File: " + xFiles[i]); } } Assert.IsTrue(xFiles.Length > 0, "Failed to get files from the directory."); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("Get directories:"); var xDirectories = Directory.GetDirectories(@"0:\"); mDebugger.Send("Found " + xDirectories.Length + " directories."); if (xDirectories.Length > 0) { mDebugger.Send("-- Directory list"); for (int i = 0; i < xDirectories.Length; i++) { mDebugger.Send("Directory: " + xDirectories[i]); } } Assert.IsTrue(xDirectories.Length > 0, "Failed to get directories from the directory."); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("Directory exist check:"); var xTest = Directory.Exists(@"0:\test"); Assert.IsTrue(xTest, "Folder does not exist!"); mDebugger.Send("END TEST"); mDebugger.Send(""); mDebugger.Send("START TEST"); var xDirectory = Directory.CreateDirectory(@"0:\test2"); Assert.IsTrue(xDirectory != null, "Directory.CreateDirectory failed: Directory is null"); bool xExists = Directory.Exists(@"0:\test2"); Assert.IsTrue(xExists, "Directory.CreateDirectory failed: Directory is doesn't exist after create call"); mDebugger.Send("END TEST"); mDebugger.Send(""); } #endregion #region System.IO.File Tests /// /// Tests System.IO.File plugs. /// private void TestFile() { string xContents; // Moved this test here because if not the test can be executed only a time! mDebugger.Send("Write to file now"); File.WriteAllText(@"0:\Kudzu.txt", "Hello Cosmos"); mDebugger.Send("Text written"); mDebugger.Send("File contents of Kudzu.txt: "); xContents = File.ReadAllText(@"0:\Kudzu.txt"); mDebugger.Send("Contents retrieved"); mDebugger.Send(xContents); Assert.IsTrue(xContents == "Hello Cosmos", "Contents of Kudzu.txt was read incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); // using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Open)) { xFS.SetLength(5); } mDebugger.Send("File made smaller"); xContents = File.ReadAllText(@"0:\Kudzu.txt"); mDebugger.Send("Contents retrieved"); mDebugger.Send(xContents); Assert.IsTrue(xContents == "Hello", "Contents of Kudzu.txt was read incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); // using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Create)) { xFS.SetLength(5); } mDebugger.Send("File made smaller"); xContents = File.ReadAllText(@"0:\Kudzu.txt"); mDebugger.Send("Contents retrieved"); mDebugger.Send(xContents); Assert.IsTrue(xContents == "Hello", "Contents of Kudzu.txt was read incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("Write to file now"); File.WriteAllText(@"0:\Kudzu.txt", "Test FAT write."); mDebugger.Send("Text written"); xContents = File.ReadAllText(@"0:\Kudzu.txt"); mDebugger.Send("Contents retrieved after writing"); mDebugger.Send(xContents); Assert.IsTrue(xContents == "Test FAT write.", "Contents of Kudzu.txt was written incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("START TEST: Create file:"); // Attention! File.Create() returns a FileStream that should be Closed / Disposed on Windows trying to write to the file next gives "File in Use" exception! using (var xFile = File.Create(@"0:\test2.txt")) { Assert.IsTrue(xFile != null, "Failed to create a new file."); bool xFileExists = File.Exists(@"0:\test2.txt"); Assert.IsTrue(xFileExists, "Failed to check existence of the new file."); mDebugger.Send("END TEST"); mDebugger.Send(""); } // Possible issue: writing to another file in the same directory, the data are mixed with the other files mDebugger.Send("Write to another file now"); File.WriteAllText(@"0:\test2.txt", "123"); mDebugger.Send("Text written"); xContents = File.ReadAllText(@"0:\test2.txt"); mDebugger.Send("Contents retrieved after writing"); mDebugger.Send(xContents); Assert.IsTrue(xContents == "123", "Contents of test2.txt was written incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); // Now we write in test3.txt using WriteAllLines() mDebugger.Send("START TEST: WriteAllLines:"); using (var xFile = File.Create(@"0:\test3.txt")) { Assert.IsTrue(xFile != null, "Failed to create a new file."); bool xFileExists = File.Exists(@"0:\test3.txt"); Assert.IsTrue(xFileExists, "Failed to check existence of the new file."); mDebugger.Send("END TEST"); mDebugger.Send(""); } string[] contents = {"One", "Two", "Three"}; File.WriteAllLines(@"0:\test3.txt", contents); mDebugger.Send("Text written"); mDebugger.Send("Now reading with ReadAllLines()"); string[] readLines = File.ReadAllLines(@"0:\test3.txt"); mDebugger.Send("Contents retrieved after writing"); for (int i = 0; i < readLines.Length; i++) { mDebugger.Send(readLines[i]); } Assert.IsTrue(StringArrayAreEquals(contents, readLines), "Contents of test3.txt was written incorrectly!"); #if false // TODO maybe the more correct test is to implement ReadAllLines and then check that two arrays are equals var xContents = File.ReadAllText(@"0:\test3.txt"); mDebugger.Send("Contents retrieved after writing"); mDebugger.Send(xContents); String expectedResult = String.Concat("One", Environment.NewLine, "Two", Environment.NewLine, "Three"); mDebugger.Send("expectedResult: " + expectedResult); Assert.IsTrue(xContents == expectedResult, "Contents of test3.txt was written incorrectly!"); #endif mDebugger.Send("END TEST"); mDebugger.Send(""); // mDebugger.Send("START TEST: Write binary data to file now:"); using (var xFile = File.Create(@"0:\test.dat")) { Assert.IsTrue(xFile != null, "Failed to create a new file."); } byte[] dataWritten = new byte[] {0x01, 0x02, 0x03}; File.WriteAllBytes(@"0:\test.dat", dataWritten); mDebugger.Send("Text written"); byte[] dataRead = File.ReadAllBytes(@"0:\test.dat"); Assert.IsTrue(ByteArrayAreEquals(dataWritten, dataRead), "Failed to write binary data to a file."); mDebugger.Send("END TEST"); mDebugger.Send(""); //This creates a loop? Nothing is printed when VFSManager.CreateStream() method is reached... mDebugger.Send("START TEST: Create a new directory with a file inside (filestream):"); var xDirectory = Directory.CreateDirectory(@"0:\testdir"); Assert.IsTrue(xDirectory != null, "Failed to create a new directory."); using (var xFile2 = File.Create(@"0:\testdir\file.txt")) { string wText = "This a test"; byte[] xWriteBuff = wText.GetUtf8Bytes(0, (uint) wText.Length); xFile2.Write(xWriteBuff, 0, xWriteBuff.Length); mDebugger.Send("---- Data written"); xFile2.Position = 0; byte[] xReadBuff = new byte[xWriteBuff.Length]; xFile2.Read(xReadBuff, 0, xWriteBuff.Length); mDebugger.Send("xWriteBuff=" + xWriteBuff.GetUtf8String(0, (uint) xWriteBuff.Length)); mDebugger.Send("xReadBuff =" + xReadBuff.GetUtf8String(0, (uint) xReadBuff.Length)); string xWriteBuffAsString = xWriteBuff.GetUtf8String(0, (uint) xWriteBuff.Length); string xReadBuffAsString = xReadBuff.GetUtf8String(0, (uint) xReadBuff.Length); mDebugger.Send("xWriteBuffAsString=" + xWriteBuffAsString); mDebugger.Send("xReadBuffAsString =" + xReadBuffAsString); Assert.IsTrue(xWriteBuffAsString == xReadBuffAsString, "Failed to write and read file"); mDebugger.Send("END TEST"); } mDebugger.Send("START TEST: Create a new directory with a file inside (File):"); var xDirectory2 = Directory.CreateDirectory(@"0:\testdir"); Assert.IsTrue(xDirectory2 != null, "Failed to create a new directory."); string WrittenText = "This a test"; File.WriteAllText(@"0:\testdir\file.txt", WrittenText); mDebugger.Send("Text written"); // now read it xContents = File.ReadAllText(@"0:\testdir\file.txt"); mDebugger.Send("Contents retrieved"); Assert.IsTrue(xContents == WrittenText, "Failed to read from file"); mDebugger.Send("START TEST: Append text to file:"); string appendedText = "Yet other text."; File.AppendAllText(@"0:\Kudzu.txt", appendedText); mDebugger.Send("Text appended"); xContents = File.ReadAllText(@"0:\Kudzu.txt"); mDebugger.Send("Contents retrieved after writing"); mDebugger.Send(xContents); // XXX Use String.Concat() with Enviroment.NewLine this not Linux there are is '\n'! Assert.IsTrue(xContents == "Test FAT write.\nYet other text.", "Contents of Kudzu.txt was appended incorrectly!"); mDebugger.Send("END TEST"); mDebugger.Send(""); } #endregion #region System.IO.FileStream Tests /// /// Tests System.IO.FileStream plugs. /// private void TestFileStream() { using (var xFS = new FileStream(@"0:\Kudzu.txt", FileMode.Create)) { mDebugger.Send("START TEST: Filestream:"); mDebugger.Send("Start writing"); var xStr = "Test FAT Write."; byte[] xWriteBuff = xStr.GetUtf8Bytes(0, (uint) xStr.Length); xFS.Write(xWriteBuff, 0, xWriteBuff.Length); mDebugger.Send("---- Data written"); xFS.Position = 0; byte[] xReadBuff = new byte[xWriteBuff.Length]; xFS.Read(xReadBuff, 0, xWriteBuff.Length); mDebugger.Send("xWriteBuff " + xWriteBuff.GetUtf8String(0, (uint) xWriteBuff.Length) + " xReadBuff " + xReadBuff.GetUtf8String(0, (uint) xWriteBuff.Length)); string xWriteBuffAsString = xWriteBuff.GetUtf8String(0, (uint) xWriteBuff.Length); string xReadBuffAsString = xReadBuff.GetUtf8String(0, (uint) xReadBuff.Length); Assert.IsTrue(xWriteBuffAsString == xReadBuffAsString, "Failed to write and read file"); mDebugger.Send("END TEST"); } } #endregion #region Helper Methods /// /// Utility method to test Byte[] equality. /// /// Byte array. /// Byte array. /// True if the elements in the arrays are equal otherwise false. private bool ByteArrayAreEquals(byte[] a1, byte[] a2) { if (ReferenceEquals(a1, a2)) { mDebugger.Send("a1 and a2 are the same Object"); return true; } if (a1 == null || a2 == null) { mDebugger.Send("a1 or a2 is null so are different"); return false; } if (a1.Length != a2.Length) { mDebugger.Send("a1.Length != a2.Length so are different"); return false; } for (int i = 0; i < a1.Length; i++) { if (a1[i] != a2[i]) { mDebugger.Send("In position " + i + " a byte is different"); return false; } } return true; } /// /// Utility method to test string[] equality. /// /// String array. /// String array. /// True if the elements in the arrays are equal otherwise false. private bool StringArrayAreEquals(string[] a1, string[] a2) { if (ReferenceEquals(a1, a2)) { mDebugger.Send("a1 and a2 are the same Object"); return true; } if (a1 == null || a2 == null) { mDebugger.Send("a1 or a2 is null so are different"); return false; } if (a1.Length != a2.Length) { mDebugger.Send("a1.Length != a2.Length so are different"); return false; } for (int i = 0; i < a1.Length; i++) { if (a1[i] != a2[i]) { mDebugger.Send("In position " + i + " a String is different"); return false; } } return true; } #endregion } }