mirror of
https://github.com/ldqk/Masuit.Tools.git
synced 2026-10-19 23:30:04 +08:00
67 lines
2.7 KiB
C#
67 lines
2.7 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text;
|
|
using Masuit.Tools.Files;
|
|
using Masuit.Tools.Systems;
|
|
using Xunit;
|
|
|
|
namespace Masuit.Tools.Abstractions.Test.Files;
|
|
|
|
public class TextEncodingDetectorTests
|
|
{
|
|
[Theory]
|
|
[InlineData("Hello, World!", "ASCII")]
|
|
[InlineData("Hello, World!", "UTF-8")]
|
|
[InlineData("Hello, World!", "Unicode")]
|
|
[InlineData("Hello, World!", "UTF-32")]
|
|
public void GetEncoding_ShouldDetectEncodingFromFile(string content, string encodingName)
|
|
{
|
|
string _testFilePath = Path.Combine(Path.GetTempPath(), "testfile1.txt");
|
|
var encoding = Encoding.GetEncoding(encodingName);
|
|
File.WriteAllText(_testFilePath, content, encoding);
|
|
var detectedEncoding = TextEncodingDetector.GetEncoding(_testFilePath);
|
|
Assert.Equal(encoding, detectedEncoding);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("Hello, World!", "ASCII")]
|
|
[InlineData("Hello, World!", "UTF-8")]
|
|
[InlineData("Hello, World!", "Unicode")]
|
|
[InlineData("Hello, World!", "UTF-32")]
|
|
public void GetEncoding_ShouldDetectEncodingFromFileInfo(string content, string encodingName)
|
|
{
|
|
string _testFilePath = Path.Combine(Path.GetTempPath(), "testfile2.txt");
|
|
var encoding = Encoding.GetEncoding(encodingName);
|
|
File.WriteAllText(_testFilePath, content, encoding);
|
|
var fileInfo = new FileInfo(_testFilePath);
|
|
var detectedEncoding = fileInfo.GetEncoding();
|
|
Assert.Equal(encoding, detectedEncoding);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("Hello, World!", "ASCII")]
|
|
[InlineData("Hello, World!", "UTF-8")]
|
|
[InlineData("Hello, World!", "Unicode")]
|
|
[InlineData("Hello, World!", "UTF-32")]
|
|
public void GetEncoding_ShouldDetectEncodingFromStream(string content, string encodingName)
|
|
{
|
|
string _testFilePath = Path.Combine(Path.GetTempPath(), "testfile3.txt");
|
|
var encoding = Encoding.GetEncoding(encodingName);
|
|
File.WriteAllText(_testFilePath, content, encoding);
|
|
using var stream = new FileStream(_testFilePath, FileMode.Open, FileAccess.Read);
|
|
var detectedEncoding = stream.GetEncoding();
|
|
Assert.Equal(encoding, detectedEncoding);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(new byte[] { 255, 254, 0, 0 }, "UTF-32")]
|
|
[InlineData(new byte[] { 0, 0, 254, 255 }, "utf-32BE")]
|
|
[InlineData(new byte[] { 239, 187, 191 }, "UTF-8")]
|
|
[InlineData(new byte[] { 72, 101, 108, 108 }, "ASCII")]
|
|
public void GetEncoding_ShouldDetectEncodingFromBytes(byte[] bytes, string expectedEncodingName)
|
|
{
|
|
var expectedEncoding = Encoding.GetEncoding(expectedEncodingName);
|
|
var detectedEncoding = new PooledMemoryStream(bytes).GetEncoding();
|
|
Assert.Equal(expectedEncoding, detectedEncoding);
|
|
}
|
|
} |