Skip to content

Commit 2573146

Browse files
committed
Merge pull request #2247 from wing328/csharp_add_more_test
[C#] add more test cases for csharp model
2 parents 41c0034 + da0dc0f commit 2573146

File tree

1 file changed

+236
-1
lines changed

1 file changed

+236
-1
lines changed

modules/swagger-codegen/src/test/java/io/swagger/codegen/csharp/CSharpModelTest.java

Lines changed: 236 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,25 @@
44
import io.swagger.codegen.CodegenProperty;
55
import io.swagger.codegen.DefaultCodegen;
66
import io.swagger.codegen.languages.CSharpClientCodegen;
7+
import io.swagger.models.ArrayModel;
78
import io.swagger.models.Model;
89
import io.swagger.models.ModelImpl;
10+
import io.swagger.models.Path;
11+
import io.swagger.models.Swagger;
912
import io.swagger.models.properties.ArrayProperty;
13+
import io.swagger.models.properties.DateTimeProperty;
1014
import io.swagger.models.properties.LongProperty;
15+
import io.swagger.models.properties.MapProperty;
16+
import io.swagger.models.properties.RefProperty;
1117
import io.swagger.models.properties.StringProperty;
18+
import io.swagger.parser.SwaggerParser;
19+
20+
import com.google.common.collect.Sets;
1221
import org.testng.Assert;
1322
import org.testng.annotations.Test;
1423

24+
import java.util.Map;
25+
1526
@SuppressWarnings("static-method")
1627
public class CSharpModelTest {
1728

@@ -96,4 +107,228 @@ private Model getArrayTestModel() {
96107
.property("examples", new ArrayProperty().items(new StringProperty()))
97108
.required("id");
98109
}
99-
}
110+
111+
@Test(description = "convert a simple model")
112+
public void simpleModelTest() {
113+
final Model model = new ModelImpl()
114+
.description("a sample model")
115+
.property("id", new LongProperty())
116+
.property("name", new StringProperty())
117+
.property("createdAt", new DateTimeProperty())
118+
.required("id")
119+
.required("name");
120+
final DefaultCodegen codegen = new CSharpClientCodegen();
121+
final CodegenModel cm = codegen.fromModel("sample", model);
122+
123+
Assert.assertEquals(cm.name, "sample");
124+
Assert.assertEquals(cm.classname, "Sample");
125+
Assert.assertEquals(cm.description, "a sample model");
126+
Assert.assertEquals(cm.vars.size(), 3);
127+
128+
final CodegenProperty property1 = cm.vars.get(0);
129+
Assert.assertEquals(property1.baseName, "id");
130+
Assert.assertEquals(property1.datatype, "long?");
131+
Assert.assertEquals(property1.name, "Id");
132+
Assert.assertNull(property1.defaultValue);
133+
Assert.assertEquals(property1.baseType, "long?");
134+
Assert.assertTrue(property1.hasMore);
135+
Assert.assertTrue(property1.required);
136+
Assert.assertTrue(property1.isPrimitiveType);
137+
Assert.assertTrue(property1.isNotContainer);
138+
139+
final CodegenProperty property2 = cm.vars.get(1);
140+
Assert.assertEquals(property2.baseName, "name");
141+
Assert.assertEquals(property2.datatype, "string");
142+
Assert.assertEquals(property2.name, "Name");
143+
Assert.assertNull(property2.defaultValue);
144+
Assert.assertEquals(property2.baseType, "string");
145+
Assert.assertTrue(property2.hasMore);
146+
Assert.assertTrue(property2.required);
147+
Assert.assertTrue(property2.isPrimitiveType);
148+
Assert.assertTrue(property2.isNotContainer);
149+
150+
final CodegenProperty property3 = cm.vars.get(2);
151+
Assert.assertEquals(property3.baseName, "createdAt");
152+
Assert.assertEquals(property3.datatype, "DateTime?");
153+
Assert.assertEquals(property3.name, "CreatedAt");
154+
Assert.assertNull(property3.defaultValue);
155+
Assert.assertEquals(property3.baseType, "DateTime?");
156+
Assert.assertNull(property3.hasMore);
157+
Assert.assertNull(property3.required);
158+
Assert.assertTrue(property3.isNotContainer);
159+
}
160+
161+
@Test(description = "convert a model with list property")
162+
public void listPropertyTest() {
163+
final Model model = new ModelImpl()
164+
.description("a sample model")
165+
.property("id", new LongProperty())
166+
.property("urls", new ArrayProperty()
167+
.items(new StringProperty()))
168+
.required("id");
169+
final DefaultCodegen codegen = new CSharpClientCodegen();
170+
final CodegenModel cm = codegen.fromModel("sample", model);
171+
172+
Assert.assertEquals(cm.name, "sample");
173+
Assert.assertEquals(cm.classname, "Sample");
174+
Assert.assertEquals(cm.description, "a sample model");
175+
Assert.assertEquals(cm.vars.size(), 2);
176+
177+
final CodegenProperty property1 = cm.vars.get(0);
178+
Assert.assertEquals(property1.baseName, "id");
179+
Assert.assertEquals(property1.datatype, "long?");
180+
Assert.assertEquals(property1.name, "Id");
181+
Assert.assertNull(property1.defaultValue);
182+
Assert.assertEquals(property1.baseType, "long?");
183+
Assert.assertTrue(property1.hasMore);
184+
Assert.assertTrue(property1.required);
185+
Assert.assertTrue(property1.isPrimitiveType);
186+
Assert.assertTrue(property1.isNotContainer);
187+
188+
final CodegenProperty property2 = cm.vars.get(1);
189+
Assert.assertEquals(property2.baseName, "urls");
190+
Assert.assertEquals(property2.datatype, "List<string>");
191+
Assert.assertEquals(property2.name, "Urls");
192+
Assert.assertNull(property2.defaultValue);
193+
Assert.assertEquals(property2.baseType, "List");
194+
Assert.assertNull(property2.hasMore);
195+
Assert.assertEquals(property2.containerType, "array");
196+
Assert.assertNull(property2.required);
197+
Assert.assertTrue(property2.isPrimitiveType);
198+
Assert.assertTrue(property2.isContainer);
199+
}
200+
201+
@Test(description = "convert a model with a map property")
202+
public void mapPropertyTest() {
203+
final Model model = new ModelImpl()
204+
.description("a sample model")
205+
.property("translations", new MapProperty()
206+
.additionalProperties(new StringProperty()))
207+
.required("id");
208+
final DefaultCodegen codegen = new CSharpClientCodegen();
209+
final CodegenModel cm = codegen.fromModel("sample", model);
210+
211+
Assert.assertEquals(cm.name, "sample");
212+
Assert.assertEquals(cm.classname, "Sample");
213+
Assert.assertEquals(cm.description, "a sample model");
214+
Assert.assertEquals(cm.vars.size(), 1);
215+
216+
final CodegenProperty property1 = cm.vars.get(0);
217+
Assert.assertEquals(property1.baseName, "translations");
218+
Assert.assertEquals(property1.datatype, "Dictionary<string, string>");
219+
Assert.assertEquals(property1.name, "Translations");
220+
Assert.assertEquals(property1.baseType, "Dictionary");
221+
Assert.assertEquals(property1.containerType, "map");
222+
Assert.assertNull(property1.required);
223+
Assert.assertTrue(property1.isContainer);
224+
Assert.assertTrue(property1.isPrimitiveType);
225+
}
226+
227+
@Test(description = "convert a model with complex property")
228+
public void complexPropertyTest() {
229+
final Model model = new ModelImpl()
230+
.description("a sample model")
231+
.property("children", new RefProperty("#/definitions/Children"));
232+
final DefaultCodegen codegen = new CSharpClientCodegen();
233+
final CodegenModel cm = codegen.fromModel("sample", model);
234+
235+
Assert.assertEquals(cm.name, "sample");
236+
Assert.assertEquals(cm.classname, "Sample");
237+
Assert.assertEquals(cm.description, "a sample model");
238+
Assert.assertEquals(cm.vars.size(), 1);
239+
240+
final CodegenProperty property1 = cm.vars.get(0);
241+
Assert.assertEquals(property1.baseName, "children");
242+
Assert.assertEquals(property1.datatype, "Children");
243+
Assert.assertEquals(property1.name, "Children");
244+
Assert.assertEquals(property1.baseType, "Children");
245+
Assert.assertNull(property1.required);
246+
Assert.assertTrue(property1.isNotContainer);
247+
}
248+
249+
@Test(description = "convert a model with complex list property")
250+
public void complexListPropertyTest() {
251+
final Model model = new ModelImpl()
252+
.description("a sample model")
253+
.property("children", new ArrayProperty()
254+
.items(new RefProperty("#/definitions/Children")));
255+
final DefaultCodegen codegen = new CSharpClientCodegen();
256+
final CodegenModel cm = codegen.fromModel("sample", model);
257+
258+
Assert.assertEquals(cm.name, "sample");
259+
Assert.assertEquals(cm.classname, "Sample");
260+
Assert.assertEquals(cm.description, "a sample model");
261+
Assert.assertEquals(cm.vars.size(), 1);
262+
263+
final CodegenProperty property1 = cm.vars.get(0);
264+
Assert.assertEquals(property1.baseName, "children");
265+
Assert.assertEquals(property1.complexType, "Children");
266+
Assert.assertEquals(property1.datatype, "List<Children>");
267+
Assert.assertEquals(property1.name, "Children");
268+
Assert.assertEquals(property1.baseType, "List");
269+
Assert.assertEquals(property1.containerType, "array");
270+
Assert.assertNull(property1.required);
271+
Assert.assertTrue(property1.isContainer);
272+
}
273+
274+
@Test(description = "convert a model with complex map property")
275+
public void complexMapPropertyTest() {
276+
final Model model = new ModelImpl()
277+
.description("a sample model")
278+
.property("children", new MapProperty()
279+
.additionalProperties(new RefProperty("#/definitions/Children")));
280+
final DefaultCodegen codegen = new CSharpClientCodegen();
281+
final CodegenModel cm = codegen.fromModel("sample", model);
282+
283+
Assert.assertEquals(cm.name, "sample");
284+
Assert.assertEquals(cm.classname, "Sample");
285+
Assert.assertEquals(cm.description, "a sample model");
286+
Assert.assertEquals(cm.vars.size(), 1);
287+
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
288+
289+
final CodegenProperty property1 = cm.vars.get(0);
290+
Assert.assertEquals(property1.baseName, "children");
291+
Assert.assertEquals(property1.complexType, "Children");
292+
Assert.assertEquals(property1.datatype, "Dictionary<string, Children>");
293+
Assert.assertEquals(property1.name, "Children");
294+
Assert.assertEquals(property1.baseType, "Dictionary");
295+
Assert.assertEquals(property1.containerType, "map");
296+
Assert.assertNull(property1.required);
297+
Assert.assertTrue(property1.isContainer);
298+
Assert.assertNull(property1.isNotContainer);
299+
}
300+
301+
@Test(description = "convert an array model")
302+
public void arrayModelTest() {
303+
final Model model = new ArrayModel()
304+
.description("an array model")
305+
.items(new RefProperty("#/definitions/Children"));
306+
final DefaultCodegen codegen = new CSharpClientCodegen();
307+
final CodegenModel cm = codegen.fromModel("sample", model);
308+
309+
Assert.assertEquals(cm.name, "sample");
310+
Assert.assertEquals(cm.classname, "Sample");
311+
Assert.assertEquals(cm.description, "an array model");
312+
Assert.assertEquals(cm.vars.size(), 0);
313+
Assert.assertEquals(cm.parent, "List<Children>");
314+
Assert.assertEquals(cm.imports.size(), 1);
315+
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
316+
}
317+
318+
@Test(description = "convert an map model")
319+
public void mapModelTest() {
320+
final Model model = new ModelImpl()
321+
.description("a map model")
322+
.additionalProperties(new RefProperty("#/definitions/Children"));
323+
final DefaultCodegen codegen = new CSharpClientCodegen();
324+
final CodegenModel cm = codegen.fromModel("sample", model);
325+
326+
Assert.assertEquals(cm.name, "sample");
327+
Assert.assertEquals(cm.classname, "Sample");
328+
Assert.assertEquals(cm.description, "a map model");
329+
Assert.assertEquals(cm.vars.size(), 0);
330+
Assert.assertEquals(cm.parent, "Dictionary<String, Children>");
331+
Assert.assertEquals(cm.imports.size(), 1);
332+
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
333+
}
334+
}

0 commit comments

Comments
 (0)