Statistics
| Branch: | Revision:

root / trunk / Pithos.Core.Test / WorkflowFileStatusTest.cs @ b449fa49

History | View | Annotate | Download (6.3 kB)

1 d78cbf09 Panagiotis Kanavos
using System;
2 d78cbf09 Panagiotis Kanavos
using System.Collections.Generic;
3 d78cbf09 Panagiotis Kanavos
using System.Linq;
4 d78cbf09 Panagiotis Kanavos
using System.Text;
5 d78cbf09 Panagiotis Kanavos
using NUnit.Framework;
6 d78cbf09 Panagiotis Kanavos
7 d78cbf09 Panagiotis Kanavos
8 d78cbf09 Panagiotis Kanavos
namespace Pithos.Core.Test
9 d78cbf09 Panagiotis Kanavos
{
10 d78cbf09 Panagiotis Kanavos
    [TestFixture]
11 d78cbf09 Panagiotis Kanavos
    public class WorkflowFileStatusTest
12 d78cbf09 Panagiotis Kanavos
    {
13 d78cbf09 Panagiotis Kanavos
        private MockSettings _settings;
14 d78cbf09 Panagiotis Kanavos
        private MockStatusChecker _statusChecker;
15 d78cbf09 Panagiotis Kanavos
16 d78cbf09 Panagiotis Kanavos
        [SetUp]
17 d78cbf09 Panagiotis Kanavos
        public void SetUp()
18 d78cbf09 Panagiotis Kanavos
        {
19 d78cbf09 Panagiotis Kanavos
            _settings = new MockSettings
20 d78cbf09 Panagiotis Kanavos
            {
21 d78cbf09 Panagiotis Kanavos
                PithosPath = @"e:\Pithos",
22 d78cbf09 Panagiotis Kanavos
                IconsPath = @"C:\Program Files\Common Files\TortoiseOverlays\icons\XPStyle"
23 d78cbf09 Panagiotis Kanavos
            };
24 d78cbf09 Panagiotis Kanavos
            _statusChecker = new MockStatusChecker { Settings = _settings };
25 d78cbf09 Panagiotis Kanavos
        }
26 d78cbf09 Panagiotis Kanavos
27 d78cbf09 Panagiotis Kanavos
        [Test]
28 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusCreated()
29 d78cbf09 Panagiotis Kanavos
        {
30 d78cbf09 Panagiotis Kanavos
            PithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
31 d78cbf09 Panagiotis Kanavos
32 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
33 d78cbf09 Panagiotis Kanavos
            workflow.SetFileStatus(path, FileStatus.Created);
34 d78cbf09 Panagiotis Kanavos
            var status = _statusChecker.GetFileStatus(path);
35 d78cbf09 Panagiotis Kanavos
            Assert.AreEqual(FileStatus.Created, status);
36 d78cbf09 Panagiotis Kanavos
37 d78cbf09 Panagiotis Kanavos
        }
38 d78cbf09 Panagiotis Kanavos
39 d78cbf09 Panagiotis Kanavos
        [Test]
40 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusCreatedTransitions()
41 d78cbf09 Panagiotis Kanavos
        {
42 d78cbf09 Panagiotis Kanavos
            IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
43 d78cbf09 Panagiotis Kanavos
44 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
45 d78cbf09 Panagiotis Kanavos
46 d78cbf09 Panagiotis Kanavos
            var initialStatus = FileStatus.Created;
47 d78cbf09 Panagiotis Kanavos
            FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Created },
48 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Created, FileStatus.Created },
49 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Deleted, FileStatus.Deleted },
50 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Renamed, FileStatus.Renamed },
51 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Unchanged, FileStatus.Unchanged },
52 d78cbf09 Panagiotis Kanavos
                                        };
53 d78cbf09 Panagiotis Kanavos
54 d78cbf09 Panagiotis Kanavos
55 d78cbf09 Panagiotis Kanavos
            TestTransitions(transitions, workflow, path, initialStatus);
56 d78cbf09 Panagiotis Kanavos
        }
57 d78cbf09 Panagiotis Kanavos
58 d78cbf09 Panagiotis Kanavos
        [Test]
59 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusModifiedTransitions()
60 d78cbf09 Panagiotis Kanavos
        {
61 d78cbf09 Panagiotis Kanavos
            IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
62 d78cbf09 Panagiotis Kanavos
63 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
64 d78cbf09 Panagiotis Kanavos
65 d78cbf09 Panagiotis Kanavos
            var initialStatus = FileStatus.Modified;
66 d78cbf09 Panagiotis Kanavos
            FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
67 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Created, FileStatus.Modified },
68 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Deleted, FileStatus.Deleted },
69 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Renamed, FileStatus.Renamed },
70 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Unchanged, FileStatus.Unchanged },
71 d78cbf09 Panagiotis Kanavos
                                        };
72 d78cbf09 Panagiotis Kanavos
73 d78cbf09 Panagiotis Kanavos
74 d78cbf09 Panagiotis Kanavos
            TestTransitions(transitions, workflow, path, initialStatus);
75 d78cbf09 Panagiotis Kanavos
        }
76 d78cbf09 Panagiotis Kanavos
77 d78cbf09 Panagiotis Kanavos
        [Test]
78 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusUnchangedTransitions()
79 d78cbf09 Panagiotis Kanavos
        {
80 d78cbf09 Panagiotis Kanavos
            IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
81 d78cbf09 Panagiotis Kanavos
82 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
83 d78cbf09 Panagiotis Kanavos
84 d78cbf09 Panagiotis Kanavos
            var initialStatus = FileStatus.Unchanged;
85 d78cbf09 Panagiotis Kanavos
            FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
86 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Created, FileStatus.Created },
87 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Deleted, FileStatus.Deleted },
88 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Renamed, FileStatus.Renamed },
89 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Unchanged, FileStatus.Unchanged },
90 d78cbf09 Panagiotis Kanavos
                                        };
91 d78cbf09 Panagiotis Kanavos
92 d78cbf09 Panagiotis Kanavos
93 d78cbf09 Panagiotis Kanavos
            TestTransitions(transitions, workflow, path, initialStatus);
94 d78cbf09 Panagiotis Kanavos
        }
95 d78cbf09 Panagiotis Kanavos
96 d78cbf09 Panagiotis Kanavos
        [Test]
97 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusDeletedTransitions()
98 d78cbf09 Panagiotis Kanavos
        {
99 d78cbf09 Panagiotis Kanavos
            IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
100 d78cbf09 Panagiotis Kanavos
101 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
102 d78cbf09 Panagiotis Kanavos
103 d78cbf09 Panagiotis Kanavos
            var initialStatus = FileStatus.Deleted;
104 d78cbf09 Panagiotis Kanavos
            FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Deleted },
105 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Created, FileStatus.Deleted },
106 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Deleted, FileStatus.Deleted },
107 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Renamed, FileStatus.Deleted },
108 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Unchanged, FileStatus.Deleted },
109 d78cbf09 Panagiotis Kanavos
                                        };
110 d78cbf09 Panagiotis Kanavos
111 d78cbf09 Panagiotis Kanavos
112 d78cbf09 Panagiotis Kanavos
            TestTransitions(transitions, workflow, path, initialStatus);
113 d78cbf09 Panagiotis Kanavos
        }
114 d78cbf09 Panagiotis Kanavos
115 d78cbf09 Panagiotis Kanavos
        [Test]
116 d78cbf09 Panagiotis Kanavos
        public void TestSetFileStatusRenamedTransitions()
117 d78cbf09 Panagiotis Kanavos
        {
118 d78cbf09 Panagiotis Kanavos
            IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
119 d78cbf09 Panagiotis Kanavos
120 d78cbf09 Panagiotis Kanavos
            var path = @"e:\pithos\0File1.txt";
121 d78cbf09 Panagiotis Kanavos
122 d78cbf09 Panagiotis Kanavos
            var initialStatus = FileStatus.Renamed;
123 d78cbf09 Panagiotis Kanavos
            FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
124 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Created, FileStatus.Renamed },
125 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Deleted, FileStatus.Deleted },
126 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Renamed, FileStatus.Renamed },
127 d78cbf09 Panagiotis Kanavos
                                            { FileStatus.Unchanged, FileStatus.Unchanged },
128 d78cbf09 Panagiotis Kanavos
                                        };
129 d78cbf09 Panagiotis Kanavos
130 d78cbf09 Panagiotis Kanavos
131 d78cbf09 Panagiotis Kanavos
            TestTransitions(transitions, workflow, path, initialStatus);
132 d78cbf09 Panagiotis Kanavos
        }
133 d78cbf09 Panagiotis Kanavos
134 d78cbf09 Panagiotis Kanavos
        private void TestTransitions(FileStatus[,] transitions, IPithosWorkflow workflow, string path, FileStatus initialStatus)
135 d78cbf09 Panagiotis Kanavos
        {
136 d78cbf09 Panagiotis Kanavos
            workflow.SetFileStatus(path, initialStatus);
137 d78cbf09 Panagiotis Kanavos
            var status = _statusChecker.GetFileStatus(path);
138 d78cbf09 Panagiotis Kanavos
            Assert.AreEqual(initialStatus, status, "Setting new file to {0}", status);
139 d78cbf09 Panagiotis Kanavos
            for (int i = 0; i < transitions.GetLength(0); i++)
140 d78cbf09 Panagiotis Kanavos
            {
141 d78cbf09 Panagiotis Kanavos
                workflow.ClearFileStatus(path);
142 d78cbf09 Panagiotis Kanavos
                status = _statusChecker.GetFileStatus(path);
143 d78cbf09 Panagiotis Kanavos
                Assert.AreEqual(FileStatus.Missing, status, "Clear status");
144 d78cbf09 Panagiotis Kanavos
145 d78cbf09 Panagiotis Kanavos
                workflow.SetFileStatus(path, initialStatus);
146 d78cbf09 Panagiotis Kanavos
147 d78cbf09 Panagiotis Kanavos
                var transition = transitions[i, 0];
148 d78cbf09 Panagiotis Kanavos
                var result = transitions[i, 1];
149 d78cbf09 Panagiotis Kanavos
                workflow.SetFileStatus(path, transition);
150 d78cbf09 Panagiotis Kanavos
                status = _statusChecker.GetFileStatus(path);
151 d78cbf09 Panagiotis Kanavos
                Assert.AreEqual(result, status, "Marking {0} as {1}", initialStatus, transition);
152 d78cbf09 Panagiotis Kanavos
153 d78cbf09 Panagiotis Kanavos
            }
154 d78cbf09 Panagiotis Kanavos
        }
155 d78cbf09 Panagiotis Kanavos
    }
156 d78cbf09 Panagiotis Kanavos
}