Skip to content

Commit 3b8c088

Browse files
committed
Moooooore tests.
1 parent f9a1e88 commit 3b8c088

11 files changed

+630
-21
lines changed

src/StreamSource.Tests/Framework/EqualityAssertion.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,10 @@ public EqualityAssertion VerifyNotEqual(object left, object right)
6464
if (right == null) throw new ArgumentNullException("right");
6565
var cases = new List<IEqualityTestCase>();
6666
if (_options.VerifyObjectEquals) cases.Add(new ObjectEqualsTestCase(left, right, false));
67-
if (_options.VerifyTypeEquals) cases.Add(new TypeEqualsTestCase(left, right, false));
67+
if (_options.VerifyTypeEquals && left.GetType() == right.GetType()) cases.Add(new TypeEqualsTestCase(left, right, false));
6868
if (_options.VerifyGetHashCode) cases.Add(new GetHashCodeTestCase(left, right, false));
69-
if (_options.VerifyEqualsOperator) cases.Add(new EqualsOperatorTestCase(left, right, false));
70-
if (_options.VerifyNotEqualsOperator) cases.Add(new NotEqualsOperatorTestCase(left, right, true));
69+
if (_options.VerifyEqualsOperator && left.GetType() == right.GetType()) cases.Add(new EqualsOperatorTestCase(left, right, false));
70+
if (_options.VerifyNotEqualsOperator && left.GetType() == right.GetType()) cases.Add(new NotEqualsOperatorTestCase(left, right, true));
7171
return new EqualityAssertion(_options, _cases.Concat(cases).ToArray());
7272
}
7373

src/StreamSource.Tests/MetadatumTests.cs

+37-4
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,22 @@ public class MetadatumTests
1010
[Test]
1111
public void NameCanNotBeNull()
1212
{
13-
Assert.Throws<ArgumentNullException>(() => new Metadatum(null, ""));
13+
Assert.Throws<ArgumentNullException>(() =>
14+
MetadatumBuilder.Default.WithName(null).Build());
1415
}
1516

1617
[Test]
1718
public void ValueCanNotBeNull()
1819
{
19-
Assert.Throws<ArgumentNullException>(() => new Metadatum("", null));
20+
Assert.Throws<ArgumentNullException>(() =>
21+
MetadatumBuilder.Default.WithValue(null).Build());
2022
}
2123

2224
[Test]
2325
public void NameReturnsExpectedValue()
2426
{
2527
var name = Guid.NewGuid().ToString();
26-
var sut = new Metadatum(name, "");
28+
var sut = MetadatumBuilder.Default.WithName(name).Build();
2729
var result = sut.Name;
2830
Assert.That(result, Is.EqualTo(name));
2931
}
@@ -32,7 +34,7 @@ public void NameReturnsExpectedValue()
3234
public void ValueReturnsExpectedValue()
3335
{
3436
var value = Guid.NewGuid().ToString();
35-
var sut = new Metadatum("", value);
37+
var sut = MetadatumBuilder.Default.WithValue(value).Build();
3638
var result = sut.Value;
3739
Assert.That(result, Is.EqualTo(value));
3840
}
@@ -47,9 +49,40 @@ public void VerifyEquality()
4749
new EqualityAssertion(new Metadatum("", "")).
4850
VerifyEqual(new Metadatum("", ""), new Metadatum("", "")).
4951
VerifyEqual(new Metadatum(name1, value1), new Metadatum(name1, value1)).
52+
VerifyNotEqual(new Metadatum("", ""), new object()).
5053
VerifyNotEqual(new Metadatum(name1, value1), new Metadatum(name2, value1)).
5154
VerifyNotEqual(new Metadatum(name1, value1), new Metadatum(name1, value2)).
5255
Assert();
5356
}
57+
58+
class MetadatumBuilder
59+
{
60+
public static readonly MetadatumBuilder Default =
61+
new MetadatumBuilder("", "");
62+
63+
private readonly string _name;
64+
private readonly string _value;
65+
66+
MetadatumBuilder(string name, string value)
67+
{
68+
_name = name;
69+
_value = value;
70+
}
71+
72+
public MetadatumBuilder WithName(string value)
73+
{
74+
return new MetadatumBuilder(value, _value);
75+
}
76+
77+
public MetadatumBuilder WithValue(string value)
78+
{
79+
return new MetadatumBuilder(_name, value);
80+
}
81+
82+
public Metadatum Build()
83+
{
84+
return new Metadatum(_name, _value);
85+
}
86+
}
5487
}
5588
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System;
2+
using System.Security.Cryptography;
3+
using System.Text;
4+
using StreamSource.Naming;
5+
using StreamSource.Storage;
6+
7+
namespace StreamSource.Serialization
8+
{
9+
public class MD5StreamNameHashAlgorithm : IStreamNameHashAlgorithm
10+
{
11+
public byte[] ComputeHash(StreamName name)
12+
{
13+
if (name == null) throw new ArgumentNullException("name");
14+
using (var algorithm = MD5.Create())
15+
{
16+
return algorithm.ComputeHash(Encoding.UTF8.GetBytes(name.ToString()));
17+
}
18+
}
19+
}
20+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
using System;
2+
using NUnit.Framework;
3+
using StreamSource.Framework;
4+
5+
namespace StreamSource.Serialization
6+
{
7+
[TestFixture]
8+
public class MessageRecordTests
9+
{
10+
[Test]
11+
public void ContractCanNotBeNull()
12+
{
13+
Assert.Throws<ArgumentNullException>(() =>
14+
MessageRecordBuilder.Default.WithContract(null).Build());
15+
}
16+
17+
[Test]
18+
public void DataCanNotBeNull()
19+
{
20+
Assert.Throws<ArgumentNullException>(() =>
21+
MessageRecordBuilder.Default.WithData(null).Build());
22+
}
23+
24+
[Test]
25+
public void ContractReturnsExpectedData()
26+
{
27+
var contract = Guid.NewGuid().ToString();
28+
var sut = MessageRecordBuilder.Default.WithContract(contract).Build();
29+
var result = sut.Contract;
30+
Assert.That(result, Is.EqualTo(contract));
31+
}
32+
33+
[Test]
34+
public void DataReturnsExpectedData()
35+
{
36+
var data = new byte[] { 1, 2, 3 };
37+
var sut = MessageRecordBuilder.Default.WithData(data).Build();
38+
var result = sut.Data;
39+
Assert.That(result, Is.EqualTo(data));
40+
}
41+
42+
[Test]
43+
public void VerifyEquality()
44+
{
45+
var contract1 = Guid.NewGuid().ToString();
46+
var contract2 = Guid.NewGuid().ToString();
47+
var data1 = new byte[] { 1, 2, 3};
48+
var data2 = new byte[] { 4, 5, 6};
49+
var data3 = new byte[] {1, 2, 3, 4};
50+
new EqualityAssertion(new MessageRecord("", new byte[0])).
51+
VerifyEqual(new MessageRecord(contract1, data1), new MessageRecord(contract1, data1)).
52+
VerifyNotEqual(new MessageRecord(contract1, data1), new object()).
53+
VerifyNotEqual(new MessageRecord(contract1, data1), new MessageRecord(contract2, data1)).
54+
VerifyNotEqual(new MessageRecord(contract1, data1), new MessageRecord(contract1, data2)).
55+
VerifyNotEqual(new MessageRecord(contract1, data1), new MessageRecord(contract1, data3)).
56+
Assert();
57+
}
58+
59+
class MessageRecordBuilder
60+
{
61+
public static readonly MessageRecordBuilder Default =
62+
new MessageRecordBuilder("", new byte[0]);
63+
64+
private readonly string _contract;
65+
private readonly byte[] _data;
66+
67+
MessageRecordBuilder(string contract, byte[] data)
68+
{
69+
_contract = contract;
70+
_data = data;
71+
}
72+
73+
public MessageRecordBuilder WithContract(string value)
74+
{
75+
return new MessageRecordBuilder(value, _data);
76+
}
77+
78+
public MessageRecordBuilder WithData(byte[] value)
79+
{
80+
return new MessageRecordBuilder(_contract, value);
81+
}
82+
83+
public MessageRecord Build()
84+
{
85+
return new MessageRecord(_contract, _data);
86+
}
87+
}
88+
}
89+
}

0 commit comments

Comments
 (0)