public void Test_Detect_WhenFileIsText() { // 指定した文字エンコードのファイルの作成処理 var i = 0; var fileNameBase = MethodBase.GetCurrentMethod().Name; string CreateFile(Encoding encoding) { var fileName = $"{fileNameBase}{i++}"; var filePath = Path.Combine(this.DirectoryPath, fileName); using (var stream = File.Create(filePath)) using (var writer = new StreamWriter(stream, encoding)) { writer.WriteLine("abcdefghijklmnopqrstuvwxyz"); writer.WriteLine("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); writer.WriteLine("0123456789"); writer.Flush(); } return(filePath); } // ファイル生成・文字エンコード検出処理 var detector = new ReadJEncEncodingDetector(); Encoding ForceDetectorToDetect(Encoding encoding) { var filePath = CreateFile(encoding); return(detector.Detect(filePath)); } // テスト対象の実行・検証処理 void Test(Encoding encoding, Encoding alsoExpected = null) { var actual = ForceDetectorToDetect(encoding); Assert.AreEqual((alsoExpected ?? encoding).WebName, actual.WebName); } // 検証の実行 Test(Encoding.ASCII, Encoding.UTF8); // UTF8はASCIIと互換あり Test(Encoding.UTF7, Encoding.UTF8); // ??? Test(Encoding.UTF8); Test(Encoding.UTF32); Test(Encoding.Unicode); Test(Encoding.BigEndianUnicode); }
public void Test_Detect_WhenFileIsBinary() { // テスト用のファイルを用意 var fileName = MethodBase.GetCurrentMethod().Name; var filePath = Path.Combine(this.DirectoryPath, fileName); using (var stream = File.Create(filePath)) { var data = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5, 0x6 }; stream.Write(data, 0, data.Length); stream.Flush(); } // テスト対象の処理を実行 var detector = new ReadJEncEncodingDetector(); var actual = detector.Detect(filePath); // テスト結果を検証 Assert.IsNull(actual); }