From 5ab013bda3223184ab2631537dfc91236f74d38f Mon Sep 17 00:00:00 2001 From: JohannesFinsveen Date: Fri, 4 Sep 2026 13:38:58 +0200 Subject: [PATCH 1/2] Fix PXFileParser encoding detection and update tests - Updated PCAxis.Core.Tests.csproj to always copy Alias_en.txt as content and removed it as a None item. - Added Alias_en.txt test file with "Environment" content. - Added GetEncoding_ShouldReadAliasFile test to verify encoding detection. - Fixed PXFileParser.GetEncoding to return detected encoding. - Replaced And with AndAlso in PXFileParser.vb for safer logic. --- PCAxis.Core.Tests/PCAxis.Core.Tests.csproj | 10 ++++++++++ PCAxis.Core.Tests/PXFileParserTests.cs | 14 ++++++++++++++ PCAxis.Core.Tests/Test_files/Alias_en.txt | 1 + PCAxis.Core/Parsers/PXFileParser.vb | 6 +++--- 4 files changed, 28 insertions(+), 3 deletions(-) create mode 100644 PCAxis.Core.Tests/Test_files/Alias_en.txt diff --git a/PCAxis.Core.Tests/PCAxis.Core.Tests.csproj b/PCAxis.Core.Tests/PCAxis.Core.Tests.csproj index fe7af06..913d9d6 100644 --- a/PCAxis.Core.Tests/PCAxis.Core.Tests.csproj +++ b/PCAxis.Core.Tests/PCAxis.Core.Tests.csproj @@ -15,6 +15,16 @@ true + + + + + + + Always + + + diff --git a/PCAxis.Core.Tests/PXFileParserTests.cs b/PCAxis.Core.Tests/PXFileParserTests.cs index 0ef453e..877f190 100644 --- a/PCAxis.Core.Tests/PXFileParserTests.cs +++ b/PCAxis.Core.Tests/PXFileParserTests.cs @@ -1,4 +1,5 @@ using PCAxis.Paxiom.Parsers; +using System.IO; namespace PCAxis.Core.Tests; @@ -19,4 +20,17 @@ public void ShouldReturnDescription() Assert.AreEqual("this is the default plugin which reads a classical pc-axis file", description); } + + [TestMethod] + public void GetEncoding_ShouldReadAliasFile() + { + // Arrange + var fixturePath = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "Test_files", "Alias_en.txt")); + + // Act + var encoding = PXFileParser.GetEncoding(fixturePath); + + // Assert + Assert.IsNotNull(encoding); + } } diff --git a/PCAxis.Core.Tests/Test_files/Alias_en.txt b/PCAxis.Core.Tests/Test_files/Alias_en.txt new file mode 100644 index 0000000..0a27bed --- /dev/null +++ b/PCAxis.Core.Tests/Test_files/Alias_en.txt @@ -0,0 +1 @@ +Environment \ No newline at end of file diff --git a/PCAxis.Core/Parsers/PXFileParser.vb b/PCAxis.Core/Parsers/PXFileParser.vb index 58891ca..814b3ce 100644 --- a/PCAxis.Core/Parsers/PXFileParser.vb +++ b/PCAxis.Core/Parsers/PXFileParser.vb @@ -58,7 +58,7 @@ Namespace PCAxis.Paxiom.Parsers Dim encoding As System.Text.Encoding = GetEncodingFromCodePage(GetStream()) If encoding Is Nothing Then - GetEncodingFromUde(GetStream, 16000) + encoding = GetEncodingFromUde(GetStream, 16000) End If Return encoding @@ -68,7 +68,7 @@ Namespace PCAxis.Paxiom.Parsers Dim encoding As System.Text.Encoding = GetEncodingFromCodePage(New System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read)) If encoding Is Nothing Then - GetEncodingFromUde(New System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read), Convert.ToInt32(New System.IO.FileInfo(path).Length)) + encoding = GetEncodingFromUde(New System.IO.FileStream(path, System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read), Convert.ToInt32(New System.IO.FileInfo(path).Length)) End If Return encoding @@ -81,7 +81,7 @@ Namespace PCAxis.Paxiom.Parsers Dim lineCount = 1 Dim nextLine As String = tr.ReadLine() - While lineCount <= 100 And nextLine IsNot Nothing And Not nextLine.ToUpper().StartsWith("DATA=") + While lineCount <= 100 AndAlso nextLine IsNot Nothing AndAlso Not nextLine.ToUpper().StartsWith("DATA=") If nextLine.ToUpper().StartsWith("CODEPAGE=") Then nextLine = nextLine.Substring(nextLine.IndexOf("""") + 1) nextLine = nextLine.Substring(0, nextLine.LastIndexOf("""")) From 2e0205fadf55f748bc7b711c3b782438c51458fa Mon Sep 17 00:00:00 2001 From: JohannesFinsveen Date: Fri, 4 Sep 2026 14:21:01 +0200 Subject: [PATCH 2/2] Simplify test file path and add encoding assertion Updated GetEncoding_ShouldReadAliasFile to use Path.Combine with AppContext.BaseDirectory for test file path construction. Added assertion to verify PXFileParser.GetEncoding returns Encoding.Default. --- PCAxis.Core.Tests/PXFileParserTests.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PCAxis.Core.Tests/PXFileParserTests.cs b/PCAxis.Core.Tests/PXFileParserTests.cs index 877f190..8d18c95 100644 --- a/PCAxis.Core.Tests/PXFileParserTests.cs +++ b/PCAxis.Core.Tests/PXFileParserTests.cs @@ -1,5 +1,6 @@ using PCAxis.Paxiom.Parsers; using System.IO; +using System.Text; namespace PCAxis.Core.Tests; @@ -25,12 +26,13 @@ public void ShouldReturnDescription() public void GetEncoding_ShouldReadAliasFile() { // Arrange - var fixturePath = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "Test_files", "Alias_en.txt")); + var fixturePath = Path.Combine(AppContext.BaseDirectory, "Test_files", "Alias_en.txt"); // Act var encoding = PXFileParser.GetEncoding(fixturePath); // Assert Assert.IsNotNull(encoding); + Assert.AreEqual(Encoding.Default, encoding); } }