root / trunk / Pithos.Core.Test / TestDifferencer.cs @ 039d89ea
History | View | Annotate | Download (6.2 kB)
1 |
// ----------------------------------------------------------------------- |
---|---|
2 |
// <copyright file="TestDifferencer.cs" company="Microsoft"> |
3 |
// TODO: Update copyright text. |
4 |
// </copyright> |
5 |
// ----------------------------------------------------------------------- |
6 |
|
7 |
using System.Collections; |
8 |
using NUnit.Framework; |
9 |
using Pithos.Interfaces; |
10 |
|
11 |
namespace Pithos.Core.Test |
12 |
{ |
13 |
using System; |
14 |
using System.Collections.Generic; |
15 |
using System.Linq; |
16 |
using System.Text; |
17 |
using Pithos.Core.Agents; |
18 |
|
19 |
[TestFixture] |
20 |
public class TestDifferencer |
21 |
{ |
22 |
private ObjectInfo[] _previous; |
23 |
private ObjectInfo[] _current; |
24 |
|
25 |
[SetUp] |
26 |
public void Setup() |
27 |
{ |
28 |
_previous = new []{ |
29 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name1",Bytes=123,Hash="aa1",Version=1}, |
30 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
31 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name3",Bytes=123,Hash="aa3",Version=1}, |
32 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name4",Bytes=123,Hash="aa4",Version=1}, |
33 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name1",Bytes=123,Hash="aa1",Version=1}, |
34 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
35 |
}; |
36 |
_current = new []{ |
37 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
38 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name3",Bytes=123,Hash="aa3",Version=1}, |
39 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name4",Bytes=1234,Hash="aa45",Version=1}, |
40 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name5",Bytes=123,Hash="aa5",Version=1}, |
41 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name1",Bytes=123,Hash="aa1",Version=1}, |
42 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
43 |
}; |
44 |
|
45 |
} |
46 |
|
47 |
[Test] |
48 |
public void when_adding_a_snapshot_for_the_first_time() |
49 |
{ |
50 |
var d1 = new SnapshotDifferencer(); |
51 |
var differencer=d1.Post(_previous); |
52 |
Assert.That(differencer.Deleted,Is.Empty); |
53 |
Assert.That(differencer.Created,Is.EquivalentTo(_previous)); |
54 |
Assert.That(differencer.Changed,Is.Empty); |
55 |
Assert.That(differencer.Unchanged,Is.Empty); |
56 |
} |
57 |
|
58 |
[Test] |
59 |
public void when_adding_a_second_snapshot_with_a_deletion() |
60 |
{ |
61 |
var d1 = new SnapshotDifferencer(); |
62 |
var differencer=d1.Post(_previous).Post(_current); |
63 |
var deleted=new[]{new ObjectInfo{Account="acc1",Container="Cont1",Name="Name1",Bytes=123,Hash="aa1",Version=1}}; |
64 |
Assert.That(differencer.Deleted.ToList(),Is.EquivalentTo(deleted) |
65 |
.Using((IEqualityComparer) new ObjectInfoComparer())); |
66 |
} |
67 |
[Test] |
68 |
public void when_adding_a_second_snapshot_with_an_addition() |
69 |
{ |
70 |
var d1 = new SnapshotDifferencer(); |
71 |
var differencer=d1.Post(_previous).Post(_current); |
72 |
var created = new[] { new ObjectInfo { Account = "acc1", Container = "Cont1", Name = "Name5", Bytes = 123, Hash = "aa5", Version = 1 } }; |
73 |
Assert.That(differencer.Created.ToList(), Is.EquivalentTo(created) |
74 |
.Using((IEqualityComparer)new ObjectInfoComparer())); |
75 |
} |
76 |
[Test] |
77 |
public void when_adding_a_second_snapshot_with_a_change() |
78 |
{ |
79 |
var d1 = new SnapshotDifferencer(); |
80 |
var differencer=d1.Post(_previous).Post(_current); |
81 |
var changed = new[] { new ObjectInfo { Account = "acc1", Container = "Cont1", Name = "Name4", Bytes = 1234, Hash = "aa45", Version = 1 } }; |
82 |
Assert.That(differencer.Changed.ToList(), Is.EquivalentTo(changed) |
83 |
.Using((IEqualityComparer)new ObjectInfoComparer())); |
84 |
} |
85 |
|
86 |
[Test] |
87 |
public void when_adding_a_second_snapshot_with_unchanged() |
88 |
{ |
89 |
var d1 = new SnapshotDifferencer(); |
90 |
var differencer=d1.Post(_previous).Post(_current); |
91 |
var unchanged = new[] |
92 |
{ |
93 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
94 |
new ObjectInfo{Account="acc1",Container="Cont1",Name="Name3",Bytes=123,Hash="aa3",Version=1}, |
95 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name1",Bytes=123,Hash="aa1",Version=1}, |
96 |
new ObjectInfo{Account="acc2",Container="Cont1",Name="Name2",Bytes=123,Hash="aa2",Version=1}, |
97 |
}; |
98 |
Assert.That(differencer.Unchanged.ToList(), Is.EquivalentTo(unchanged) |
99 |
.Using((IEqualityComparer)new ObjectInfoComparer())); |
100 |
} |
101 |
|
102 |
[Test] |
103 |
public void when_adding_a_null_first_snapshot() |
104 |
{ |
105 |
var d1 = new SnapshotDifferencer(); |
106 |
var differencer=d1.Post(null); |
107 |
Assert.That(differencer.Deleted, Is.Empty); |
108 |
Assert.That(differencer.Created, Is.Empty); |
109 |
Assert.That(differencer.Changed, Is.Empty); |
110 |
Assert.That(differencer.Unchanged, Is.Empty); |
111 |
} |
112 |
|
113 |
[Test] |
114 |
public void when_adding_a_null_second_snapshot() |
115 |
{ |
116 |
var d1 = new SnapshotDifferencer(); |
117 |
var differencer=d1.Post(_previous).Post(null); |
118 |
Assert.That(differencer.Deleted, Is.EquivalentTo(_previous)); |
119 |
Assert.That(differencer.Created, Is.Empty); |
120 |
Assert.That(differencer.Changed, Is.Empty); |
121 |
Assert.That(differencer.Unchanged, Is.Empty); |
122 |
} |
123 |
} |
124 |
} |