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);
}
}
}
|