Exemple #1
0
        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());
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
        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);
        }
        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);
        }