Statistics
| Branch: | Revision:

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
}