Skip to content

Commit 1c8f576

Browse files
authored
Merge pull request #95 from CSC207-2022F-UofT/feature-controller-tests
Add controller and parser tests
2 parents 713dc7a + c8ad902 commit 1c8f576

File tree

66 files changed

+2879
-311
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2879
-311
lines changed

src/main/java/org/hydev/mcpm/SpigotEntry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import org.bukkit.command.CommandSender;
77
import org.bukkit.plugin.java.JavaPlugin;
88
import org.hydev.mcpm.client.arguments.ArgsParser;
9-
import org.hydev.mcpm.client.arguments.CommandsFactory;
9+
import org.hydev.mcpm.client.arguments.ArgsParserFactory;
1010
import org.hydev.mcpm.client.arguments.parsers.CommandParser;
1111
import org.hydev.mcpm.utils.ColorLogger;
1212
import org.jetbrains.annotations.NotNull;
@@ -48,7 +48,7 @@ public void onEnable()
4848
log.info("Enabled!");
4949

5050
// Initialize controller
51-
parser = CommandsFactory.serverArgsParser();
51+
parser = ArgsParserFactory.serverArgsParser();
5252

5353
// Register mcpm command
5454
requireNonNull(this.getCommand("mcpm")).setExecutor(this);

src/main/java/org/hydev/mcpm/client/arguments/ArgsParser.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public List<CommandParser> getRawSubparsers() {
116116
* @param args Arguments are ignored.
117117
*/
118118
public static void main(String[] args) {
119-
var parser = CommandsFactory.baseArgsParser();
119+
var parser = ArgsParserFactory.baseArgsParser();
120120

121121
try {
122122
parser.parse(args, ColorLogger.toStdOut());
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package org.hydev.mcpm.client.arguments;
2+
3+
/**
4+
* Class that produces default implementations of the Controller and ArgsParser classes.
5+
* These classes are used to handle commands.
6+
* Checkout Command.java for a process on adding a new command!
7+
*/
8+
public class ArgsParserFactory {
9+
// No instantiation.
10+
private ArgsParserFactory() { }
11+
12+
/**
13+
* Creates an ArgsParser object that has general parsers (works in any environment).
14+
*
15+
* @return An ArgsParser object. Invoke ArgsParser#parse to see more.
16+
*/
17+
public static ArgsParser baseArgsParser() {
18+
var interactors = new InteractorFactory(false);
19+
var controllers = new ControllerFactory(interactors);
20+
21+
return new ArgsParser(ParserFactory.baseParsers(controllers));
22+
}
23+
24+
/**
25+
* Creates an ArgsParser object that has all (CLI & Server) parsers.
26+
*
27+
* @return An ArgsParser object. Invoke ArgsParser#parse to see more.
28+
*/
29+
public static ArgsParser serverArgsParser() {
30+
var interactors = new InteractorFactory(true);
31+
var controllers = new ControllerFactory(interactors);
32+
33+
return new ArgsParser(ParserFactory.serverParsers(controllers));
34+
}
35+
}

src/main/java/org/hydev/mcpm/client/arguments/CommandsFactory.java

Lines changed: 0 additions & 167 deletions
This file was deleted.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
package org.hydev.mcpm.client.arguments;
2+
3+
import org.hydev.mcpm.client.commands.controllers.ExportPluginsController;
4+
import org.hydev.mcpm.client.commands.controllers.InfoController;
5+
import org.hydev.mcpm.client.commands.controllers.InstallController;
6+
import org.hydev.mcpm.client.commands.controllers.ListController;
7+
import org.hydev.mcpm.client.commands.controllers.LoadController;
8+
import org.hydev.mcpm.client.commands.controllers.MirrorController;
9+
import org.hydev.mcpm.client.commands.controllers.PageBoundary;
10+
import org.hydev.mcpm.client.commands.controllers.RefreshController;
11+
import org.hydev.mcpm.client.commands.controllers.ReloadController;
12+
import org.hydev.mcpm.client.commands.controllers.SearchPackagesController;
13+
import org.hydev.mcpm.client.commands.controllers.UninstallController;
14+
import org.hydev.mcpm.client.commands.controllers.UnloadController;
15+
import org.hydev.mcpm.client.commands.controllers.UpdateController;
16+
import org.hydev.mcpm.client.local.PageController;
17+
18+
/**
19+
* Handles the creation of default factory classes.
20+
* The required parameters to initialize these classes are acquired from the `boundary` object.
21+
*
22+
* @param boundary A provider to acquire the required interactors to initialize the controllers.
23+
*/
24+
public record ControllerFactory(InteractorFactoryBoundary boundary) implements ControllerFactoryBoundary {
25+
@Override
26+
public PageBoundary pageBoundary() {
27+
return new PageController(20);
28+
}
29+
30+
@Override
31+
public ExportPluginsController exportController() {
32+
return new ExportPluginsController(boundary.exportBoundary());
33+
}
34+
35+
@Override
36+
public ListController listController() {
37+
return new ListController(boundary.listBoundary());
38+
}
39+
40+
@Override
41+
public SearchPackagesController searchController() {
42+
return new SearchPackagesController(boundary.searchBoundary());
43+
}
44+
45+
@Override
46+
public MirrorController mirrorController() {
47+
return new MirrorController(boundary.mirrorSelector());
48+
}
49+
50+
@Override
51+
public InfoController infoController() {
52+
return new InfoController(boundary.pluginTracker());
53+
}
54+
55+
@Override
56+
public InstallController installController() {
57+
return new InstallController(boundary.installBoundary());
58+
}
59+
60+
@Override
61+
public UninstallController uninstallController() {
62+
return new UninstallController(boundary.uninstallBoundary());
63+
}
64+
65+
@Override
66+
public UpdateController updateController() {
67+
return new UpdateController(boundary.updateBoundary());
68+
}
69+
70+
@Override
71+
public RefreshController refreshController() {
72+
return new RefreshController(
73+
boundary.databaseFetcher(),
74+
boundary.fetcherListener(),
75+
boundary.mirrorSelector()
76+
);
77+
}
78+
79+
@Override
80+
public LoadController loadController() {
81+
return new LoadController(boundary.loadBoundary());
82+
}
83+
84+
@Override
85+
public ReloadController reloadController() {
86+
return new ReloadController(boundary.reloadBoundary());
87+
}
88+
89+
@Override
90+
public UnloadController unloadController() {
91+
return new UnloadController(boundary.unloadBoundary());
92+
}
93+
}

0 commit comments

Comments
 (0)