/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Compilers/Core/CodeAnalysisTest/LinePositionTests.cs
97 строк
4 KB
Jared Parsons
generated move
28 сен 2020, 19:36
28 сен 2020, 19:36
1cca63b
Код
Авторство
О чём код?
// 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 System; using Microsoft.CodeAnalysis.Text; using Roslyn.Test.Utilities; using Xunit; namespace Microsoft.CodeAnalysis.UnitTests { public class LinePositionTests { [Fact] public void Equality1() { EqualityUtil.RunAll( (left, right) => left == right, (left, right) => left != right, EqualityUnit.Create(new LinePosition(1, 2)).WithEqualValues(new LinePosition(1, 2)), EqualityUnit.Create(new LinePosition()).WithEqualValues(new LinePosition()), EqualityUnit.Create(new LinePosition(1, 2)).WithNotEqualValues(new LinePosition(1, 3)), EqualityUnit.Create(new LinePosition(1, 2)).WithNotEqualValues(new LinePosition(2, 2))); } [Fact] public void Ctor1() { Assert.Throws<ArgumentOutOfRangeException>( () => { var notUsed = new LinePosition(-1, 42); }); } [Fact] public void Ctor2() { Assert.Throws<ArgumentOutOfRangeException>( () => { var notUsed = new LinePosition(42, -1); }); } [Fact] public void Ctor3() { var lp = new LinePosition(42, 13); Assert.Equal(42, lp.Line); Assert.Equal(13, lp.Character); } // In general, different values are not required to have different hash codes. // But for perf reasons we want hash functions with a good distribution, // so we expect hash codes to differ if a single component is incremented. // But program correctness should be preserved even with a null hash function, // so we need a way to disable these tests during such correctness validation. #if !DISABLE_GOOD_HASH_TESTS [Fact] public void SaneHashCode() { var hash1 = new LinePosition(1, 1).GetHashCode(); var hash2 = new LinePosition(2, 2).GetHashCode(); var hash3 = new LinePosition(1, 2).GetHashCode(); var hash4 = new LinePosition(2, 1).GetHashCode(); Assert.NotEqual(hash1, hash2); Assert.NotEqual(hash1, hash3); Assert.NotEqual(hash1, hash4); Assert.NotEqual(hash2, hash3); Assert.NotEqual(hash2, hash4); Assert.NotEqual(hash3, hash4); } #endif [Fact] public void CompareTo() { Assert.Equal(0, new LinePosition(1, 1).CompareTo(new LinePosition(1, 1))); Assert.Equal(-1, Math.Sign(new LinePosition(1, 1).CompareTo(new LinePosition(1, 2)))); Assert.True(new LinePosition(1, 1) < new LinePosition(1, 2)); Assert.Equal(-1, Math.Sign(new LinePosition(1, 2).CompareTo(new LinePosition(2, 1)))); Assert.True(new LinePosition(1, 2) < new LinePosition(2, 1)); Assert.True(new LinePosition(1, 2) <= new LinePosition(1, 2)); Assert.True(new LinePosition(1, 2) <= new LinePosition(2, 1)); Assert.Equal(+1, Math.Sign(new LinePosition(1, 2).CompareTo(new LinePosition(1, 1)))); Assert.True(new LinePosition(1, 2) > new LinePosition(1, 1)); Assert.Equal(+1, Math.Sign(new LinePosition(2, 1).CompareTo(new LinePosition(1, 2)))); Assert.True(new LinePosition(2, 1) > new LinePosition(1, 2)); Assert.True(new LinePosition(2, 1) >= new LinePosition(2, 1)); Assert.True(new LinePosition(2, 1) >= new LinePosition(1, 2)); } } }