Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ObjectIdFixture.cs « LibGit2Sharp.Tests - github.com/mono/libgit2sharp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ebcef4d9fefedebf274eb211d281ea04da225210 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
using System;
using LibGit2Sharp.Tests.TestHelpers;
using NUnit.Framework;

namespace LibGit2Sharp.Tests
{
    [TestFixture]
    public class ObjectIdFixture
    {
        private const string validSha1 = "ce08fe4884650f067bd5703b6a59a8b3b3c99a09";
        private const string validSha2 = "de08fe4884650f067bd5703b6a59a8b3b3c99a09";

        [TestCase("Dummy", typeof(ArgumentException))]
        [TestCase("", typeof(ArgumentException))]
        [TestCase("8e", typeof(ArgumentException))]
        [TestCase(null, typeof(ArgumentNullException))]
        [TestCase(validSha1 + "dd", typeof(ArgumentException))]
        public void PreventsFromBuildingWithAnInvalidSha(string malformedSha, Type expectedExceptionType)
        {
            Assert.Throws(expectedExceptionType, () => new ObjectId(malformedSha));
        }

        [Test]
        public void CanConvertOidToSha()
        {
            var bytes = new byte[] { 206, 8, 254, 72, 132, 101, 15, 6, 123, 213, 112, 59, 106, 89, 168, 179, 179, 201, 154, 9 };

            var id = new ObjectId(bytes);

            id.Sha.ShouldEqual(validSha1);
            id.ToString().ShouldEqual(validSha1);
        }

        [Test]
        public void CanConvertShaToOid()
        {
            var id = new ObjectId(validSha1);

            id.RawId.ShouldEqual(new byte[] { 206, 8, 254, 72, 132, 101, 15, 6, 123, 213, 112, 59, 106, 89, 168, 179, 179, 201, 154, 9 });
        }

        [Test]
        public void CreatingObjectIdWithWrongNumberOfBytesThrows()
        {
            var bytes = new byte[] { 206, 8, 254, 72, 132, 101, 15, 6, 123, 213, 112, 59, 106, 89, 168, 179, 179, 201, 154 };

            Assert.Throws<ArgumentException>(() => { new ObjectId(bytes); });
        }

        [Test]
        public void DifferentObjectIdsAreEqual()
        {
            var a = new ObjectId(validSha1);
            var b = new ObjectId(validSha2);

            (a.Equals(b)).ShouldBeFalse();
            (b.Equals(a)).ShouldBeFalse();

            (a == b).ShouldBeFalse();
            (a != b).ShouldBeTrue();
        }

        [Test]
        public void DifferentObjectIdsDoesNotHaveSameHashCode()
        {
            var a = new ObjectId(validSha1);
            var b = new ObjectId(validSha2);

            a.GetHashCode().ShouldNotEqual(b.GetHashCode());
        }

        [Test]
        public void SimilarObjectIdsAreEqual()
        {
            var a = new ObjectId(validSha1);
            var b = new ObjectId(validSha1);

            (a.Equals(b)).ShouldBeTrue();
            (b.Equals(a)).ShouldBeTrue();

            (a == b).ShouldBeTrue();
            (a != b).ShouldBeFalse();
        }

        [Test]
        public void SimilarObjectIdsHaveSameHashCode()
        {
            var a = new ObjectId(validSha1);
            var b = new ObjectId(validSha1);

            a.GetHashCode().ShouldEqual(b.GetHashCode());
        }

        [TestCase("Dummy", false)]
        [TestCase(null, false)]
        [TestCase("", false)]
        [TestCase("0", false)]
        [TestCase("01", false)]
        [TestCase("012", false)]
        [TestCase("0123", true)]
        [TestCase("0123456", true)]
        [TestCase(validSha1 + "d", false)]
        [TestCase(validSha1, true)]
        public void TryParse(string maybeSha, bool isValidSha)
        {
            ObjectId parsedObjectId;
            bool result = ObjectId.TryParse(maybeSha, out parsedObjectId);
            result.ShouldEqual(isValidSha);

            if (!result)
            {
                return;
            }

            parsedObjectId.ShouldNotBeNull();
            parsedObjectId.Sha.ShouldEqual(maybeSha);
            maybeSha.StartsWith(parsedObjectId.ToString(3)).ShouldBeTrue();
            parsedObjectId.ToString(42).ShouldEqual(maybeSha);
        }
    }
}