public void JsonCodeGenerator_WithRecursive2Levels() { var root = new WithRecursive { Name = "Root", Recursive = new WithRecursive // This one must be shared with the root. { Name = "First", Recursive = new WithRecursive { Name = "Second", Recursive = new WithRecursive // This will be created anyways with a different name (no way to know). { Name = "Second", } } } }; var document = new JsonDocument() { DataAsJson = JsonExtensions.ToJObject(root) }; var generator = new JsonCodeGenerator("csharp"); var classTypes = generator.GenerateClassesTypesFromObject("Root", JsonExtensions.ToJObject(root)) .ToLookup(x => x.Name); Assert.Equal(4, classTypes.Count()); }
public void JsonCodeGenerator_WithRecursive1Level() { var root = new WithRecursive { Name = "Root", Recursive = new WithRecursive // No sharing happens { Name = "First", } }; var document = new JsonDocument() { DataAsJson = JsonExtensions.ToJObject(root) }; var generator = new JsonCodeGenerator("csharp"); var classTypes = generator.GenerateClassesTypesFromObject("Root", JsonExtensions.ToJObject(root)) .ToLookup(x => x.Name); Assert.Equal(2, classTypes.Count()); var clazz = classTypes["Root"].Single() as JsonCodeGenerator.ClassType; Assert.NotNull(clazz); var first = classTypes["RecursiveClass"].Single() as JsonCodeGenerator.ClassType; Assert.NotNull(clazz); Assert.Equal("string", clazz.Properties["Name"].Name); Assert.False(clazz.Properties["Name"].IsArray); Assert.True(clazz.Properties["Name"].IsPrimitive); Assert.Equal("string", first.Properties["Name"].Name); Assert.False(clazz.Properties["Name"].IsArray); Assert.True(clazz.Properties["Name"].IsPrimitive); Assert.Equal("RecursiveClass", clazz.Properties["Recursive"].Name); Assert.False(clazz.Properties["Recursive"].IsArray); Assert.False(clazz.Properties["Recursive"].IsPrimitive); }
public void JsonCodeGenerator_WithRecursive2LevelsGenerator() { var root = new WithRecursive { Name = "Root", Recursive = new WithRecursive // This one must be shared with the root. { Name = "First", Recursive = new WithRecursive { Name = "Second", Recursive = new WithRecursive // This will be created anyways with a different name (no way to know). { Name = "Second", } } } }; var document = new JsonDocument() { DataAsJson = JsonExtensions.ToJObject(root) }; var generator = new JsonCodeGenerator("csharp"); var code = generator.Execute(document); Console.WriteLine(code); Assert.Contains("public class RecursiveClass", code); Assert.Contains("public class RecursiveClass1", code); Assert.Contains("public class RecursiveClass2", code); Assert.Contains("public RecursiveClass1 Recursive { get; set; }", code); Assert.Contains("public RecursiveClass2 Recursive { get; set; }", code); Assert.Contains("public object Recursive { get; set; }", code); }