Skip to content

Commit

Permalink
nuget 5.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
FolkerKinzel committed Jul 15, 2023
1 parent d751e08 commit 9f78b7a
Show file tree
Hide file tree
Showing 20 changed files with 543 additions and 24 deletions.
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion src/FolkerKinzel.Strings.Tests/CodeCoverage.bat
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=./reports/ /p:ExcludeByAttribute=\"Obsolete,GeneratedCode,CompilerGenerated\" /p:SkipAutoProps=true /p:DoesNotReturnAttribute="DoesNotReturnAttribute"
reportgenerator -reports:./reports/coverage.netcoreapp2.1.cobertura.xml -targetdir:./reports/html/
reportgenerator -reports:./reports/coverage.cobertura.xml -targetdir:./reports/html/
cd reports/html/
index.htm
41 changes: 41 additions & 0 deletions src/FolkerKinzel.Strings.Tests/DecoderValidationFallbackTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using FolkerKinzel.Strings;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace FolkerKinzel.Strings.Tests;

[TestClass()]
public class DecoderValidationFallbackTests
{
[TestMethod()]
public void ResetTest()
{
var fb = new DecoderValidationFallback();
Assert.IsFalse(fb.HasError);

var enc = Encoding.GetEncoding("UTF-8", EncoderFallback.ReplacementFallback, fb);
using var stream = new MemoryStream(new byte[] { 129, 142, 210, 184});
using var reader = new StreamReader(stream, enc, false);
string s = reader.ReadToEnd();
Assert.IsTrue(fb.HasError);
fb.Reset();
Assert.IsFalse(fb.HasError);
}

[TestMethod()]
public void CreateFallbackBufferTest()
{
var fb = new DecoderValidationFallback();
DecoderFallbackBuffer buf1 = fb.CreateFallbackBuffer();
DecoderFallbackBuffer buf2 = fb.CreateFallbackBuffer();
Assert.AreSame(buf1, buf2);

buf1.Reset();
Assert.AreEqual(0, buf1.Remaining);
Assert.IsFalse(buf1.MovePrevious());
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp2.1</TargetFramework>
<TargetFramework>net7.0</TargetFramework>
<!--
<TargetFrameworks>net48;net5.0;net6.0;net7.0;netcoreapp3.1;netcoreapp2.1;net45</TargetFrameworks>
-->
<LangVersion>10.0</LangVersion>
<LangVersion>11.0</LangVersion>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<IsPackable>false</IsPackable>
Expand Down
89 changes: 89 additions & 0 deletions src/FolkerKinzel.Strings.Tests/StreamExtensionTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace FolkerKinzel.Strings.Tests;

[TestClass]
public class StreamExtensionTests
{
private readonly byte[] _validUtf8 = new byte[] { 17, 4, 42 };
private readonly byte[] _noUtf8 = new byte[] { 129, 142, 210, 184 };
private readonly byte[] _bom = new byte[] { 0xEF, 0xBB, 0xBF };


[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void IsUtf8Test1()
{
Stream? str = null;
str!.IsUtf8();
}


[TestMethod]
public void IsUtf8Test2()
{
using var str = new MemoryStream();
Assert.IsFalse(str.IsUtf8(count: 0));
}

[TestMethod]
public void IsUtf8Test3()
{
using var str = new MemoryStream(_validUtf8.Concat(_validUtf8).ToArray());
Assert.IsFalse(str.IsUtf8(count: 0, leaveOpen: true));
str.Position = 0;
Assert.IsTrue(str.IsUtf8());
}

[TestMethod]
public void IsUtf8Test4()
{

using (var str1 = new MemoryStream(_noUtf8))
{
Assert.IsFalse(str1.IsUtf8());
}

using (var str2 = new MemoryStream(_bom))
{
Assert.IsTrue(str2.IsUtf8Valid());
}

var concat = new List<byte>(_bom);
concat.AddRange(_noUtf8);

var concatBytes = concat.ToArray();

using var str3 = new MemoryStream(concatBytes);

Assert.IsTrue(str3.IsUtf8(leaveOpen: true));
str3.Position = 0;
Assert.IsFalse(str3.IsUtf8Valid());
}

[TestMethod]
public void IsUtf8Test5()
{
var list = new List<byte>(_validUtf8);
list.AddRange(_noUtf8);
using var stream = new MemoryStream(list.ToArray());
Assert.IsFalse(stream.IsUtf8());
}


[TestMethod]
[ExpectedException(typeof(ArgumentOutOfRangeException))]
public void IsUtf8ValidTest1()
{
using var str = new MemoryStream(_validUtf8);
_ = str.IsUtf8Valid(count: 0);
}

[TestMethod]
[ExpectedException(typeof(ArgumentNullException))]
public void IsUtf8ValidTest2()
{
Stream? str = null;
str!.IsUtf8Valid();
}
}
1 change: 1 addition & 0 deletions src/FolkerKinzel.Strings.sln
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
..\.github\ISSUE_TEMPLATE\bug_report.md = ..\.github\ISSUE_TEMPLATE\bug_report.md
..\.github\ISSUE_TEMPLATE\feature_request.md = ..\.github\ISSUE_TEMPLATE\feature_request.md
..\README.md = ..\README.md
test.runsettings = test.runsettings
EndProjectSection
EndProject
Project("{7CF6DF6D-3B04-46F8-A40B-537D21BCA0B4}") = "FolkerKinzel.Strings.Reference.en", "FolkerKinzel.Strings.Reference.en\FolkerKinzel.Strings.Reference.en.shfbproj", "{7A4F9D87-3555-4705-861A-61CE8AFBE9FC}"
Expand Down
9 changes: 5 additions & 4 deletions src/FolkerKinzel.Strings/DecoderValidationFallback.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,17 @@ namespace FolkerKinzel.Strings;

/// <summary>
/// Stellt einen als Fallback bezeichneten Fehlerbehandlungsmechanismus für eine codierte Eingabebytefolge bereit,
/// die nicht in ein Ausgabezeichen konvertiert werden kann. Das Fallback gibt eine benutzerdefinierte Ersatzzeichenfolge (&#x2B1C;)
/// die nicht in ein Ausgabezeichen konvertiert werden kann. Das Fallback gibt ein Ersatzzeichen (&#x2B1C;)
/// anstelle einer decodierten Eingabebytefolge aus und informiert in seiner Eigenschaft <see cref="HasError"/> darüber,
/// ob ein Fehler aufgetreten ist.
/// </summary>
/// <remarks>
/// <para>
/// Verwenden Sie <see cref="DecoderValidationFallback"/>-Objekte in den Methoden
/// </para>
/// <list type="bullet">
/// <item><see cref="Encoding.GetEncoding(int, EncoderFallback, DecoderFallback)">
/// Encoding.GetEncoding(int, EncoderFallback, DecoderFallback)</see></item>
/// Encoding.GetEncoding(int, EncoderFallback, DecoderFallback)</see>,</item>
/// <item><see cref="Encoding.GetEncoding(string, EncoderFallback, DecoderFallback)">
/// Encoding.GetEncoding(string, EncoderFallback, DecoderFallback)</see> oder</item>
/// <item><see cref="TextEncodingConverter.GetEncoding(int, EncoderFallback, DecoderFallback, bool)">
Expand Down Expand Up @@ -71,7 +73,6 @@ private sealed class ValidatorFallbackBuffer : DecoderFallbackBuffer
public void ResetError() => HasError = false;

public override void Reset() { }


public override int Remaining => 0;

Expand All @@ -84,7 +85,7 @@ public override bool Fallback(byte[] bytesUnknown, int index)

public override char GetNextChar()
{
char result = _finished ? '\0' : '\u2B1C'; //'\u25A1';
char result = _finished ? '\0' : '\u2B1C';
_finished = true;
return result;
}
Expand Down
2 changes: 1 addition & 1 deletion src/FolkerKinzel.Strings/FolkerKinzel.Strings.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
<PackageId>FolkerKinzel.Strings</PackageId>
<Product>FolkerKinzel.Strings</Product>
<Version>5.2.0</Version>
<FileVersion>5.2.0.3</FileVersion>
<FileVersion>5.2.0.18</FileVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<ContinuousIntegrationBuild>true</ContinuousIntegrationBuild>
<PackageReleaseNotes>https://github.com/FolkerKinzel/Strings/releases/tag/v5.2.0</PackageReleaseNotes>
Expand Down
5 changes: 3 additions & 2 deletions src/FolkerKinzel.Strings/Intls/Utf8Validator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Diagnostics;
using System.IO;
using System.Text;
using FolkerKinzel.Strings.Properties;

namespace FolkerKinzel.Strings.Intls;

Expand Down Expand Up @@ -72,7 +73,7 @@ public bool IsUtf8(Stream stream, int count, bool leaveOpen)
}
stream.Position = position;

return !(HasError || (!DoIsValidUtf8(stream, InitCount(count), leaveOpen)));
return !(HasError || !DoIsValidUtf8(stream, InitCount(count), leaveOpen));

/////////////////////////////////

Expand Down Expand Up @@ -137,6 +138,6 @@ private StreamReader InitStreamReader(Stream stream, bool leaveOpen)

private static long InitCount(int count) =>
count < 0 ? long.MaxValue
: count == 0 ? throw new ArgumentOutOfRangeException(nameof(count))
: count == 0 ? throw new ArgumentOutOfRangeException(nameof(count), Res.ZeroNotAllowed)
: count;
}
9 changes: 9 additions & 0 deletions src/FolkerKinzel.Strings/Properties/Res.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions src/FolkerKinzel.Strings/Properties/Res.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,7 @@
<data name="UndefinedEnumValue" xml:space="preserve">
<value>Der Wert ist nicht definiert.</value>
</data>
<data name="ZeroNotAllowed" xml:space="preserve">
<value>0 ist nicht erlaubt.</value>
</data>
</root>
3 changes: 3 additions & 0 deletions src/FolkerKinzel.Strings/Properties/Res.resx
Original file line number Diff line number Diff line change
Expand Up @@ -132,4 +132,7 @@
<data name="UndefinedEnumValue" xml:space="preserve">
<value>The value is not defined.</value>
</data>
<data name="ZeroNotAllowed" xml:space="preserve">
<value>0 is not allowed.</value>
</data>
</root>

0 comments on commit 9f78b7a

Please sign in to comment.