2 using System.Collections.Generic;
8 namespace Pithos.Core.Test
11 public class WorkflowFileStatusTest
13 private MockSettings _settings;
14 private MockStatusChecker _statusChecker;
19 _settings = new MockSettings
21 PithosPath = @"e:\Pithos",
22 IconsPath = @"C:\Program Files\Common Files\TortoiseOverlays\icons\XPStyle"
24 _statusChecker = new MockStatusChecker { Settings = _settings };
28 public void TestSetFileStatusCreated()
30 PithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
32 var path = @"e:\pithos\0File1.txt";
33 workflow.SetFileStatus(path, FileStatus.Created);
34 var status = _statusChecker.GetFileStatus(path);
35 Assert.AreEqual(FileStatus.Created, status);
40 public void TestSetFileStatusCreatedTransitions()
42 IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
44 var path = @"e:\pithos\0File1.txt";
46 var initialStatus = FileStatus.Created;
47 FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Created },
48 { FileStatus.Created, FileStatus.Created },
49 { FileStatus.Deleted, FileStatus.Deleted },
50 { FileStatus.Renamed, FileStatus.Renamed },
51 { FileStatus.Unchanged, FileStatus.Unchanged },
55 TestTransitions(transitions, workflow, path, initialStatus);
59 public void TestSetFileStatusModifiedTransitions()
61 IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
63 var path = @"e:\pithos\0File1.txt";
65 var initialStatus = FileStatus.Modified;
66 FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
67 { FileStatus.Created, FileStatus.Modified },
68 { FileStatus.Deleted, FileStatus.Deleted },
69 { FileStatus.Renamed, FileStatus.Renamed },
70 { FileStatus.Unchanged, FileStatus.Unchanged },
74 TestTransitions(transitions, workflow, path, initialStatus);
78 public void TestSetFileStatusUnchangedTransitions()
80 IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
82 var path = @"e:\pithos\0File1.txt";
84 var initialStatus = FileStatus.Unchanged;
85 FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
86 { FileStatus.Created, FileStatus.Created },
87 { FileStatus.Deleted, FileStatus.Deleted },
88 { FileStatus.Renamed, FileStatus.Renamed },
89 { FileStatus.Unchanged, FileStatus.Unchanged },
93 TestTransitions(transitions, workflow, path, initialStatus);
97 public void TestSetFileStatusDeletedTransitions()
99 IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
101 var path = @"e:\pithos\0File1.txt";
103 var initialStatus = FileStatus.Deleted;
104 FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Deleted },
105 { FileStatus.Created, FileStatus.Deleted },
106 { FileStatus.Deleted, FileStatus.Deleted },
107 { FileStatus.Renamed, FileStatus.Deleted },
108 { FileStatus.Unchanged, FileStatus.Deleted },
112 TestTransitions(transitions, workflow, path, initialStatus);
116 public void TestSetFileStatusRenamedTransitions()
118 IPithosWorkflow workflow = new PithosWorkflow { Settings = _settings, StatusKeeper = _statusChecker };
120 var path = @"e:\pithos\0File1.txt";
122 var initialStatus = FileStatus.Renamed;
123 FileStatus[,] transitions = { { FileStatus.Modified, FileStatus.Modified },
124 { FileStatus.Created, FileStatus.Renamed },
125 { FileStatus.Deleted, FileStatus.Deleted },
126 { FileStatus.Renamed, FileStatus.Renamed },
127 { FileStatus.Unchanged, FileStatus.Unchanged },
131 TestTransitions(transitions, workflow, path, initialStatus);
134 private void TestTransitions(FileStatus[,] transitions, IPithosWorkflow workflow, string path, FileStatus initialStatus)
136 workflow.SetFileStatus(path, initialStatus);
137 var status = _statusChecker.GetFileStatus(path);
138 Assert.AreEqual(initialStatus, status, "Setting new file to {0}", status);
139 for (int i = 0; i < transitions.GetLength(0); i++)
141 workflow.ClearFileStatus(path);
142 status = _statusChecker.GetFileStatus(path);
143 Assert.AreEqual(FileStatus.Missing, status, "Clear status");
145 workflow.SetFileStatus(path, initialStatus);
147 var transition = transitions[i, 0];
148 var result = transitions[i, 1];
149 workflow.SetFileStatus(path, transition);
150 status = _statusChecker.GetFileStatus(path);
151 Assert.AreEqual(result, status, "Marking {0} as {1}", initialStatus, transition);