/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/Core/CodeAnalysisTest/Text/TextSpanTest.cs
389 строк
13 KB
Sam Harwell
Fix xUnit2000 (Constants and literals should be the expected argument)
21 янв 2022, 19:01
21 янв 2022, 19:01
4a9e902
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. #nullable disable using Microsoft.CodeAnalysis.Text; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests { /// <summary> /// This is a test class for TextSpan and is intended /// to contain all TextSpan Unit Tests /// </summary> public class TextSpanTest { [Fact] public void Ctor1() { var span = new TextSpan(0, 42); Assert.Equal(0, span.Start); Assert.Equal(42, span.Length); Assert.Equal(42, span.End); } [Fact] public void Ctor2() { var span = new TextSpan(1, 40); Assert.Equal(1, span.Start); Assert.Equal(40, span.Length); Assert.Equal(41, span.End); } /// <summary> /// 0 length spans are valid /// </summary> [Fact] public void Ctor3() { var span = new TextSpan(0, 0); Assert.Equal(0, span.Start); Assert.Equal(0, span.Length); } [Fact] public void Equals1() { var s1 = new TextSpan(1, 40); var s2 = new TextSpan(1, 40); Assert.True(s1.Equals(s2), s1.ToString() + " : " + s2.ToString()); Assert.True(s1 == s2, s1.ToString() + " : " + s2.ToString()); Assert.False(s1 != s2, s1.ToString() + " : " + s2.ToString()); Assert.Equal(s1, s2); } /// <summary> /// Different start values /// </summary> [Fact] public void Equals2() { var s1 = new TextSpan(1, 40); var s2 = new TextSpan(2, 40); Assert.False(s1.Equals(s2), s1.ToString() + " : " + s2.ToString()); Assert.False(s1 == s2, s1.ToString() + " : " + s2.ToString()); Assert.True(s1 != s2, s1.ToString() + " : " + s2.ToString()); Assert.NotEqual(s1, s2); } /// <summary> /// Different length values /// </summary> [Fact] public void Equals3() { var s1 = new TextSpan(1, 5); var s2 = new TextSpan(1, 40); Assert.False(s1.Equals(s2), s1.ToString() + " : " + s2.ToString()); Assert.False(s1 == s2, s1.ToString() + " : " + s2.ToString()); Assert.True(s1 != s2, s1.ToString() + " : " + s2.ToString()); Assert.NotEqual(s1, s2); } [Fact] public void TextSpan00() { TextSpan span = new TextSpan(0, 0); Assert.Equal(0, span.Start); Assert.Equal(0, span.End); Assert.Equal(0, span.Length); Assert.Equal("[0..0)", span.ToString()); Assert.True(span.IsEmpty); } [Fact] public void TextSpan01() { TextSpan span = new TextSpan(0, 1); Assert.Equal(0, span.Start); Assert.Equal(1, span.End); Assert.Equal(1, span.Length); Assert.Equal("[0..1)", span.ToString()); Assert.False(span.IsEmpty); span.GetHashCode(); } [Fact] public void TextSpan02() { TextSpan span = new TextSpan(15, 1485); Assert.Equal(15, span.Start); Assert.Equal(1500, span.End); Assert.Equal(1485, span.Length); Assert.Equal("[15..1500)", span.ToString()); } [Fact] public void TextSpan03() { TextSpan span = new TextSpan(0, int.MaxValue - 1); Assert.Equal(0, span.Start); Assert.Equal(int.MaxValue - 1, span.End); Assert.Equal(int.MaxValue - 1, span.Length); } [Fact] public void TextSpanContains00() { TextSpan span = new TextSpan(0, 10); Assert.True(span.Contains(3)); Assert.False(span.Contains(30)); Assert.False(span.Contains(11)); Assert.False(span.Contains(-1)); } [Fact] public void TextSpanContains01() { TextSpan span_05_15 = new TextSpan(5, 10); TextSpan span_03_10 = new TextSpan(3, 7); TextSpan span_10_11 = new TextSpan(10, 1); TextSpan span_00_03 = new TextSpan(0, 3); // non-overlapping Assert.False(span_05_15.Contains(span_00_03)); Assert.False(span_00_03.Contains(span_05_15)); // overlap with slop Assert.True(span_05_15.Contains(span_10_11)); // same span Assert.True(span_05_15.Contains(span_05_15)); // partial overlap Assert.False(span_05_15.Contains(span_03_10)); Assert.False(span_03_10.Contains(span_05_15)); } [Fact] public void TextSpanContainsEmpty() { // non-overlapping Assert.False(new TextSpan(2, 5).Contains(new TextSpan(0, 0))); Assert.False(new TextSpan(2, 5).Contains(new TextSpan(10, 0))); // contains Assert.True(new TextSpan(2, 5).Contains(new TextSpan(3, 0))); // same start Assert.True(new TextSpan(2, 5).Contains(new TextSpan(2, 0))); // same end Assert.True(new TextSpan(2, 5).Contains(new TextSpan(7, 0))); // same start and end Assert.True(new TextSpan(2, 0).Contains(new TextSpan(2, 0))); } [Fact] public void TextSpanEmptyContains() { // non-overlapping Assert.False(new TextSpan(0, 0).Contains(new TextSpan(2, 5))); Assert.False(new TextSpan(10, 0).Contains(new TextSpan(2, 5))); // contains Assert.False(new TextSpan(3, 0).Contains(new TextSpan(2, 5))); // same start Assert.False(new TextSpan(2, 0).Contains(new TextSpan(2, 5))); // same end Assert.False(new TextSpan(7, 0).Contains(new TextSpan(2, 5))); } [Fact] public void TextSpanEquality00() { TextSpan span1 = new TextSpan(0, 10); TextSpan span2 = new TextSpan(0, 10); Assert.True(span1.Equals(span2)); Assert.NotEqual(default, span1); Assert.True(span1 == span2, span1.ToString() + " : " + span2.ToString()); Assert.False(span1 != span2, span1.ToString() + " : " + span2.ToString()); Assert.True(span2.Equals(span1)); Assert.NotEqual(default, span2); Assert.True(span2 == span1, span2.ToString() + " : " + span1.ToString()); Assert.False(span2 != span1, span2.ToString() + " : " + span1.ToString()); } [Fact] public void TextSpanEquality01() { TextSpan span1 = new TextSpan(0, 10); TextSpan span2 = new TextSpan(0, 11); TextSpan span3 = new TextSpan(1, 11); Assert.False(span1.Equals(span2)); Assert.False(span1.Equals(span3)); Assert.False(span2.Equals(span3)); Assert.True(span1 != span2, span1.ToString() + " : " + span2.ToString()); Assert.True(span1 != span3, span1.ToString() + " : " + span3.ToString()); Assert.True(span2 != span3, span2.ToString() + " : " + span3.ToString()); Assert.False(span1 == span2, span1.ToString() + " : " + span2.ToString()); Assert.NotEqual<object>(new string('a', 3), span1); } [Fact] public void TextSpanOverlap00() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 5); // 5..10 Assert.False(span1.OverlapsWith(span2)); Assert.False(span2.OverlapsWith(span1)); Assert.Null(span1.Overlap(span2)); Assert.Null(span2.Overlap(span1)); } [Fact] public void TextSpanOverlap01() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 2); // 5..7 Assert.False(span1.OverlapsWith(span2)); Assert.False(span2.OverlapsWith(span1)); Assert.Null(span1.Overlap(span2)); Assert.Null(span2.Overlap(span1)); } [Fact] public void TextSpanOverlap02() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 10); // 5..15 Assert.True(span1.OverlapsWith(span2)); Assert.True(span2.OverlapsWith(span1)); Assert.Equal(span1.Overlap(span2), new TextSpan(10, 5)); Assert.Equal(span2.Overlap(span1), new TextSpan(10, 5)); } [Fact] public void TextSpanOverlap03() { TextSpan span1 = new TextSpan(10, 0); // [10, 10) TextSpan span2 = new TextSpan(10, 0); // [10, 10) Assert.False(span1.OverlapsWith(span2)); Assert.False(span2.OverlapsWith(span1)); Assert.Null(span1.Overlap(span2)); Assert.Null(span2.Overlap(span1)); } [Fact] public void TextSpanOverlap04() { TextSpan span1 = new TextSpan(10, 0); // [10, 10) TextSpan span2 = new TextSpan(5, 10); // [5, 15) Assert.False(span1.OverlapsWith(span2)); Assert.False(span2.OverlapsWith(span1)); Assert.Null(span1.Overlap(span2)); Assert.Null(span2.Overlap(span1)); } [Fact] public void TextSpanIntersection00() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 5); // 5..10 Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(10, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(10, 0)); } [Fact] public void TextSpanIntersection01() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 2); // 5..7 Assert.False(span1.IntersectsWith(span2)); Assert.False(span2.IntersectsWith(span1)); Assert.Null(span1.Intersection(span2)); Assert.Null(span2.Intersection(span1)); } [Fact] public void TextSpanIntersection02() { TextSpan span1 = new TextSpan(10, 10); // 10..20 TextSpan span2 = new TextSpan(5, 10); // 5..15 Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(10, 5)); Assert.Equal(span2.Intersection(span1), new TextSpan(10, 5)); } [Fact] public void TextSpanIntersection03() { TextSpan span1 = new TextSpan(10, 0); // [10, 10) TextSpan span2 = new TextSpan(10, 0); // [10, 10) Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(10, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(10, 0)); } [Fact] public void TextSpanIntersection04() { TextSpan span1 = new TextSpan(2, 5); // [2, 7) TextSpan span2 = new TextSpan(7, 5); // [7, 12) Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(7, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(7, 0)); } [Fact] public void TextSpanIntersectionEmpty01() { TextSpan span1 = new TextSpan(2, 5); // [2, 7) TextSpan span2 = new TextSpan(3, 0); // [3, 3) Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(3, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(3, 0)); } [Fact] public void TextSpanIntersectionEmpty02() { TextSpan span1 = new TextSpan(2, 5); // [2, 7) TextSpan span2 = new TextSpan(2, 0); // [2, 2) Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(2, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(2, 0)); } [Fact] public void TextSpanIntersectionEmpty03() { TextSpan span1 = new TextSpan(2, 5); // [2, 7) TextSpan span2 = new TextSpan(7, 0); // [7, 0) Assert.True(span1.IntersectsWith(span2)); Assert.True(span2.IntersectsWith(span1)); Assert.Equal(span1.Intersection(span2), new TextSpan(7, 0)); Assert.Equal(span2.Intersection(span1), new TextSpan(7, 0)); } } }