From 4c623673034b2ac2c9d9021ec55227ef8698e856 Mon Sep 17 00:00:00 2001 From: Oliver Booth Date: Thu, 30 Mar 2023 21:22:45 +0100 Subject: [PATCH] test: cover Span overloads of CountSubstring --- X10D.Tests/src/Text/CharSpanTests.cs | 42 ++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/X10D.Tests/src/Text/CharSpanTests.cs b/X10D.Tests/src/Text/CharSpanTests.cs index 6283841..fd32588 100644 --- a/X10D.Tests/src/Text/CharSpanTests.cs +++ b/X10D.Tests/src/Text/CharSpanTests.cs @@ -9,25 +9,49 @@ public class CharSpanTests [TestMethod] public void CountSubstring_ShouldHonor_StringComparison() { - Assert.AreEqual(0, "Hello World".AsSpan().CountSubstring('E')); - Assert.AreEqual(0, "Hello World".AsSpan().CountSubstring("E".AsSpan())); - Assert.AreEqual(1, "Hello World".AsSpan().CountSubstring("E".AsSpan(), StringComparison.OrdinalIgnoreCase)); + var readOnlySpan = "Hello World".AsSpan(); + Span span = stackalloc char[readOnlySpan.Length]; + readOnlySpan.CopyTo(span); + + Assert.AreEqual(0, readOnlySpan.CountSubstring('E')); + Assert.AreEqual(0, readOnlySpan.CountSubstring("E".AsSpan())); + Assert.AreEqual(1, readOnlySpan.CountSubstring("E".AsSpan(), StringComparison.OrdinalIgnoreCase)); + + Assert.AreEqual(0, span.CountSubstring('E')); + Assert.AreEqual(0, span.CountSubstring("E".AsSpan())); + Assert.AreEqual(1, span.CountSubstring("E".AsSpan(), StringComparison.OrdinalIgnoreCase)); } [TestMethod] public void CountSubstring_ShouldReturn0_GivenNoInstanceChar() { - Assert.AreEqual(0, "Hello World".AsSpan().CountSubstring('z')); - Assert.AreEqual(0, "Hello World".AsSpan().CountSubstring("z".AsSpan())); - Assert.AreEqual(0, "Hello World".AsSpan().CountSubstring("z".AsSpan(), StringComparison.OrdinalIgnoreCase)); + var readOnlySpan = "Hello World".AsSpan(); + Span span = stackalloc char[readOnlySpan.Length]; + readOnlySpan.CopyTo(span); + + Assert.AreEqual(0, readOnlySpan.CountSubstring('z')); + Assert.AreEqual(0, readOnlySpan.CountSubstring("z".AsSpan())); + Assert.AreEqual(0, readOnlySpan.CountSubstring("z".AsSpan(), StringComparison.OrdinalIgnoreCase)); + + Assert.AreEqual(0, span.CountSubstring('z')); + Assert.AreEqual(0, span.CountSubstring("z".AsSpan())); + Assert.AreEqual(0, span.CountSubstring("z".AsSpan(), StringComparison.OrdinalIgnoreCase)); } [TestMethod] public void CountSubstring_ShouldReturn1_GivenSingleInstanceChar() { - Assert.AreEqual(1, "Hello World".AsSpan().CountSubstring('e')); - Assert.AreEqual(1, "Hello World".AsSpan().CountSubstring("e".AsSpan())); - Assert.AreEqual(1, "Hello World".AsSpan().CountSubstring("e".AsSpan(), StringComparison.OrdinalIgnoreCase)); + var readOnlySpan = "Hello World".AsSpan(); + Span span = stackalloc char[readOnlySpan.Length]; + readOnlySpan.CopyTo(span); + + Assert.AreEqual(1, readOnlySpan.CountSubstring('e')); + Assert.AreEqual(1, readOnlySpan.CountSubstring("e".AsSpan())); + Assert.AreEqual(1, readOnlySpan.CountSubstring("e".AsSpan(), StringComparison.OrdinalIgnoreCase)); + + Assert.AreEqual(1, span.CountSubstring('e')); + Assert.AreEqual(1, span.CountSubstring("e".AsSpan())); + Assert.AreEqual(1, span.CountSubstring("e".AsSpan(), StringComparison.OrdinalIgnoreCase)); } [TestMethod]