Skip to content

Commit c7aa9f4

Browse files
NicoKiaruhinerm
authored andcommitted
adds test for string to array conversion in command
1 parent b158075 commit c7aa9f4

File tree

1 file changed

+162
-0
lines changed

1 file changed

+162
-0
lines changed
Lines changed: 162 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,162 @@
1+
packageorg.scijava.command;
2+
3+
importorg.junit.Test;
4+
importorg.scijava.Context;
5+
importorg.scijava.ItemIO;
6+
importorg.scijava.Priority;
7+
importorg.scijava.convert.AbstractConverter;
8+
importorg.scijava.plugin.Parameter;
9+
importorg.scijava.plugin.Plugin;
10+
11+
importjava.util.concurrent.ExecutionException;
12+
13+
importstaticorg.junit.Assert.*;
14+
15+
publicclassCommandArrayConverterTest{
16+
17+
@Test
18+
publicvoidtestArrayCommandRaw() throwsInterruptedException,
19+
ExecutionException
20+
{
21+
finalContextcontext = newContext(CommandService.class);
22+
finalCommandServicecommandService = context.service(CommandService.class);
23+
24+
UserClass[] userObjects = newUserClass[2];
25+
userObjects[0] = newUserClass("User Object 0", newObject());
26+
userObjects[1] = newUserClass("User Object 1", newObject());
27+
28+
finalCommandModulemodule = //
29+
commandService.run(CommandRawArrayInput.class, true, "userObjects", userObjects ).get(); //
30+
assertEquals("User Object 0;User Object 1;", module.getOutput("result"));
31+
}
32+
33+
@Test
34+
publicvoidtestArrayConvertFromStringCommandRaw() throwsInterruptedException,
35+
ExecutionException
36+
{
37+
finalContextcontext = newContext(CommandService.class);
38+
finalCommandServicecommandService = context.service(CommandService.class);
39+
40+
finalCommandModulemodule = //
41+
commandService.run(CommandRawArrayInput.class, true, "userObjects", "User Object 0,User Object 1" ).get(); //
42+
43+
assertEquals("User Object 0;User Object 1;", module.getOutput("result"));
44+
}
45+
46+
@Test
47+
publicvoidtestArrayCommandWildcardGenerics() throwsInterruptedException,
48+
ExecutionException
49+
{
50+
finalContextcontext = newContext(CommandService.class);
51+
finalCommandServicecommandService = context.service(CommandService.class);
52+
53+
UserClass[] userObjects = newUserClass[2];
54+
userObjects[0] = newUserClass("User Object 0", newObject());
55+
userObjects[1] = newUserClass("User Object 1", newObject());
56+
57+
finalCommandModulemodule = //
58+
commandService.run(CommandGenericsWildcardArrayInput.class, true, "userObjects", userObjects ).get(); //
59+
assertEquals("User Object 0;User Object 1;", module.getOutput("result"));
60+
}
61+
62+
@Test
63+
publicvoidtestArrayConvertFromStringCommandWildcardGenerics() throwsInterruptedException,
64+
ExecutionException
65+
{
66+
finalContextcontext = newContext(CommandService.class);
67+
finalCommandServicecommandService = context.service(CommandService.class);
68+
69+
finalCommandModulemodule = //
70+
commandService.run(CommandGenericsWildcardArrayInput.class, true, "userObjects", "User Object 0,User Object 1" ).get(); //
71+
72+
assertEquals("User Object 0;User Object 1;", module.getOutput("result"));
73+
}
74+
75+
/** A command which uses a UserClass Raw Array parameter. */
76+
@Plugin(type = Command.class)
77+
publicstaticclassCommandRawArrayInputimplementsCommand{
78+
79+
@Parameter
80+
privateUserClass[] userObjects;
81+
82+
@Parameter(type = ItemIO.OUTPUT)
83+
privateStringresult = "default";
84+
85+
@Override
86+
publicvoidrun(){
87+
finalStringBuildersb = newStringBuilder();
88+
System.out.println("userObjects length : "+userObjects.length);
89+
System.out.println("class : "+userObjects.getClass());
90+
for (UserClassobj : userObjects){
91+
System.out.println("\t"+obj);
92+
sb.append(obj.toString()+"");
93+
}
94+
result = sb.toString();
95+
}
96+
}
97+
98+
/** A command which uses a UserClass Array with generics wildcard */
99+
@Plugin(type = Command.class)
100+
publicstaticclassCommandGenericsWildcardArrayInputimplementsCommand{
101+
102+
@Parameter
103+
privateUserClass<?>[] userObjects;
104+
105+
@Parameter(type = ItemIO.OUTPUT)
106+
privateStringresult = "default";
107+
108+
@Override
109+
publicvoidrun(){
110+
finalStringBuildersb = newStringBuilder();
111+
System.out.println("userObjects length : "+userObjects.length);
112+
System.out.println("class : "+userObjects.getClass());
113+
for (UserClassobj : userObjects){
114+
System.out.println("\t"+obj);
115+
sb.append(obj.toString()+"");
116+
}
117+
result = sb.toString();
118+
}
119+
}
120+
121+
@Plugin(type = org.scijava.convert.Converter.class, priority = Priority.LOW)
122+
publicstaticclassStringToUserClassConverterNoGenericsextendsAbstractConverter<String, UserClass[]>{
123+
124+
@Override
125+
public <T> Tconvert(Objectsrc, Class<T> dest){
126+
Stringstr = (String) src;
127+
String[] names = str.split(",");
128+
UserClass[] userObjects = newUserClass[names.length];
129+
for (intindex = 0; index < names.length ; index++){
130+
userObjects[index] = newUserClass(names[index], newObject());
131+
}
132+
return (T) userObjects;
133+
}
134+
135+
@Override
136+
publicClass<UserClass[]> getOutputType(){
137+
returnUserClass[].class;
138+
}
139+
140+
@Override
141+
publicClass<String> getInputType(){
142+
returnString.class;
143+
}
144+
}
145+
146+
/**
147+
* Simple class to test input arrays in command
148+
*/
149+
publicstaticclassUserClass<T>{
150+
151+
Stringname;
152+
153+
publicUserClass(StringobjectName, Tgeneric_object){
154+
name = objectName;
155+
}
156+
157+
publicStringtoString(){
158+
returnname;
159+
}
160+
}
161+
162+
}

0 commit comments

Comments
(0)