-
Notifications
You must be signed in to change notification settings - Fork 17
/
CommandFactoryTest.cs
143 lines (113 loc) · 5.31 KB
/
CommandFactoryTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GitBin;
using GitBin.Commands;
using NUnit.Framework;
namespace git_bin.Tests
{
[TestFixture]
public class CommandFactoryTest
{
[Test]
public void GetShowUsageCommand_InvokesShowUsageFactory()
{
bool wasShowUsageCommandFactoryCalled = false;
Func<ShowUsageCommand> factory = () =>
{
wasShowUsageCommandFactoryCalled = true;
return null;
};
var target = new CommandFactory(factory, null, null, null, null, null, null, null);
target.GetShowUsageCommand();
Assert.IsTrue(wasShowUsageCommandFactoryCalled);
}
[Test]
public void GetCommand_InvalidCommandArgument_ReturnsShowUsageCommand()
{
var showUsageCommand = new ShowUsageCommand();
Func<ShowUsageCommand> factory = () => showUsageCommand;
var target = new CommandFactory(factory, null, null, null, null, null, null, null);
var command = target.GetCommand(new []{"invalid"});
Assert.AreSame(showUsageCommand, command);
}
[Test]
public void GetCommand_NoCommandArgument_ReturnsShowUsageCommand()
{
var showUsageCommand = new ShowUsageCommand();
Func<ShowUsageCommand> factory = () => showUsageCommand;
var target = new CommandFactory(factory, null, null, null, null, null, null, null);
var command = target.GetCommand(new string[0]);
Assert.AreSame(showUsageCommand, command);
}
[Test]
public void GetCommand_CleanCommandArgument_ReturnsCleanCommand()
{
var cleanCommand = new CleanCommand(null, null, new []{"abc"});
Func<string[], CleanCommand> factory = x => cleanCommand;
var target = new CommandFactory(null, null, null, factory, null, null, null, null);
var command = target.GetCommand(new[] { CommandFactory.CleanArgument });
Assert.AreSame(cleanCommand, command);
}
[Test]
public void GetCommand_CleanCommandArgument_PassesTailOfArgumentArray()
{
bool wasInvoked = false;
var inputArguments = new[] { CommandFactory.CleanArgument, "testing"};
Func<string[], CleanCommand> factory = x =>
{
Assert.AreEqual(1, x.Length);
Assert.AreEqual("testing", x[0]);
wasInvoked = true;
return null;
};
var target = new CommandFactory(null, null, null, factory, null, null, null, null);
target.GetCommand(inputArguments);
Assert.IsTrue(wasInvoked);
}
[Test]
public void GetCommand_SmudgeCommandArgument_ReturnsSmudgeCommand()
{
var smudgeCommand = new SmudgeCommand(null, null, new string[0]);
Func<string[], SmudgeCommand> factory = x => smudgeCommand;
var target = new CommandFactory(null, null, null, null, factory, null, null, null);
var command = target.GetCommand(new[] { CommandFactory.SmudgeArgument });
Assert.AreSame(smudgeCommand, command);
}
[Test]
public void GetCommand_PushCommandArgument_ReturnsPushCommand()
{
var pushCommand = new PushCommand(null, null, new string[0]);
Func<string[], PushCommand> factory = x => pushCommand;
var target = new CommandFactory(null, null, null, null, null, factory, null, null);
var command = target.GetCommand(new[] { CommandFactory.PushArgument });
Assert.AreSame(pushCommand, command);
}
[Test]
public void GetCommand_PushCommandArgument_PassesTailOfArgumentArray()
{
bool wasInvoked = false;
var inputArguments = new[] { CommandFactory.PushArgument, "testing" };
Func<string[], PushCommand> factory = x =>
{
Assert.AreEqual(1, x.Length);
Assert.AreEqual("testing", x[0]);
wasInvoked = true;
return null;
};
var target = new CommandFactory(null, null, null, null, null, factory, null, null);
target.GetCommand(inputArguments);
Assert.IsTrue(wasInvoked);
}
[Test]
public void GetCommand_ClearCommandArgument_ReturnsClearCommand()
{
var clearCommand = new ClearCommand(null, new []{"-n"});
Func<string[], ClearCommand> factory = x => clearCommand;
var target = new CommandFactory(null, null, null, null, null, null, null, factory);
var command = target.GetCommand(new[] { CommandFactory.ClearArgument });
Assert.AreSame(clearCommand, command);
}
}
}