Skip to content

Commit a0710b5

Browse files
Re-extended full coverage for comparables.
1 parent f49384d commit a0710b5

3 files changed

Lines changed: 51 additions & 13 deletions

File tree

Source/StringComparable.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public bool Equals(StringComparable other)
6060
|| Type != other.Type && other.Equals(Segment);
6161

6262
/// <inheritdoc cref="Equals(string?)"/>
63-
public bool Equals(in SpanComparable other)
63+
public bool Equals(SpanComparable other)
6464
=> Segment.Equals(other.Source, Type)
6565
|| Type != other.Type && other.Equals(Segment);
6666

Tests/ComparableTests.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,41 @@ public static void CaseSensitive(string a, string b)
5151
{
5252
var cA = a.AsComparable(StringComparison.Ordinal);
5353
var cB = b.AsComparable(StringComparison.Ordinal);
54+
var cBi = b.AsCaseInsensitive();
55+
var seg = a.AsSegment();
5456

5557
Assert.False(cA == cB); Assert.True(cA != cB);
5658
Assert.True(cA == a); Assert.False(cA != a);
59+
Assert.True(a == cA); Assert.False(a != cA);
60+
Assert.True(seg == cA); Assert.False(seg != cA);
5761
Assert.False(cA == b); Assert.True(cA != b);
62+
Assert.False(b == cA); Assert.True(b != cA);
5863
Assert.False(cB == a); Assert.True(cB != a);
5964
Assert.True(cB == b); Assert.False(cB != b);
6065

61-
var sA = a.AsSpan().AsComparable(StringComparison.Ordinal);
66+
Assert.True(cA == cBi); Assert.False(cA != cBi);
67+
Assert.True(cBi == cA); Assert.False(cBi != cA);
68+
69+
var span = a.AsSpan();
70+
var sA = span.AsComparable(StringComparison.Ordinal);
71+
var sAi = span.AsCaseInsensitive();
6272
var sB = b.AsSpan().AsComparable(StringComparison.Ordinal);
73+
var sBi = b.AsSpan().AsCaseInsensitive();
74+
75+
Assert.True(sA.Equals(cBi));
76+
Assert.True(sAi.Equals(cB));
6377

78+
Assert.True(sAi == sBi); Assert.False(sAi != sBi);
79+
Assert.True(sBi == sAi); Assert.False(sBi != sAi);
80+
Assert.True(sAi == sB); Assert.False(sAi != sB);
81+
Assert.True(sB == sAi); Assert.False(sB != sAi);
82+
Assert.True(sBi == sA); Assert.False(sBi != sA);
83+
Assert.True(sA == sBi); Assert.False(sA != sBi);
84+
85+
Assert.True(span == cA); Assert.False(span != cA);
6486
Assert.False(sA == sB); Assert.True(sA != sB);
6587
Assert.True(sA == a); Assert.False(sA != a);
88+
Assert.True(a == sA); Assert.False(a != sA);
6689
Assert.False(sA == b);
6790
Assert.False(sB == a);
6891
Assert.True(sB == b);
@@ -78,6 +101,9 @@ public static void CaseSensitive(string a, string b)
78101

79102
Assert.False(sB == cA);
80103
Assert.True(sB == cB);
104+
105+
Assert.True(cA == sBi); Assert.False(cA != sBi);
106+
Assert.True(sBi == cA); Assert.False(sBi != cA);
81107
}
82108

83109
[Fact]

Tests/ParseTests.cs

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -58,19 +58,31 @@ public static void LastIndexOf(string input, string search)
5858
comparable.Contains(search.AsSpan())
5959
.Should().Be(containsIC);
6060

61-
var spanComparable = span.AsCaseInsensitive();
62-
Assert.True(spanComparable == segment);
63-
Assert.True(spanComparable == span);
64-
Assert.True(spanComparable == comparable);
65-
Assert.False(spanComparable != segment);
66-
Assert.False(spanComparable != span);
67-
Assert.False(spanComparable != comparable);
68-
Assert.False(comparable != spanComparable);
69-
spanComparable.Contains(search)
61+
var spanComparable = span.AsComparable(StringComparison.Ordinal);
62+
var spanComparablei = span.AsCaseInsensitive();
63+
Assert.True(spanComparable == spanComparablei);
64+
Assert.True(spanComparablei == spanComparable);
65+
Assert.False(spanComparable != spanComparablei);
66+
Assert.False(spanComparablei != spanComparable);
67+
68+
Assert.True(spanComparablei == segment);
69+
Assert.True(spanComparablei == span);
70+
Assert.True(span == spanComparablei);
71+
Assert.True(segment == spanComparablei);
72+
Assert.True(segment == spanComparablei);
73+
Assert.True(spanComparablei == comparable);
74+
Assert.False(spanComparablei != segment);
75+
Assert.False(spanComparablei != span);
76+
Assert.False(span != spanComparablei);
77+
Assert.False(segment != spanComparablei);
78+
Assert.False(segment != spanComparablei);
79+
Assert.False(spanComparablei != comparable);
80+
Assert.False(comparable != spanComparablei);
81+
spanComparablei.Contains(search)
7082
.Should().Be(containsIC);
71-
spanComparable.Contains(search.AsSegment())
83+
spanComparablei.Contains(search.AsSegment())
7284
.Should().Be(containsIC);
73-
spanComparable.Contains(search.AsSpan())
85+
spanComparablei.Contains(search.AsSpan())
7486
.Should().Be(containsIC);
7587
}
7688
}

0 commit comments

Comments
 (0)