Example #1
0
        public void JsonCodeGenerator_WithCrossRecursive2Levels()
        {
            var root = new WithCrossRecursiveA
            {
                NameA     = "Root",
                Recursive = new WithCrossRecursiveB
                {
                    NameB     = "First",
                    Recursive = new WithCrossRecursiveA // This one cannot be shared with the root.
                    {
                        NameA     = "Second",
                        Recursive = new WithCrossRecursiveB // This will be created anyways with a different name (no way to know).
                        {
                            NameB = "Null",
                        }
                    }
                }
            };

            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());
        }
Example #2
0
        public void JsonCodeGenerator_WithCrossRecursive2LevelsGenerator()
        {
            var root = new WithCrossRecursiveA
            {
                NameA     = "Root",
                Recursive = new WithCrossRecursiveB
                {
                    NameB = "First",
                    // RecursiveClass1
                    Recursive = new WithCrossRecursiveA // This one must be shared with the root.
                    {
                        NameA = "Second",
                        // RecursiveClass
                        Recursive = new WithCrossRecursiveB // This will be created anyways with a different name (no way to know).
                        {
                            NameB = "Null",
                            // Recursive is going to be object (NULL)
                        }
                    }
                }
            };

            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_WithCrossRecursive2LevelsGenerator()
        {
            var root = new WithCrossRecursiveA
            {
                NameA = "Root",
                Recursive = new WithCrossRecursiveB
                {
                    NameB = "First",
                    // RecursiveClass1
                    Recursive = new WithCrossRecursiveA // This one must be shared with the root.
                    {
                        NameA = "Second",
                        // RecursiveClass
                        Recursive = new WithCrossRecursiveB // This will be created anyways with a different name (no way to know).
                        {
                            NameB = "Null",
                            // Recursive is going to be object (NULL)
                        }
                    }
                }
            };

            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_WithCrossRecursive2Levels()
        {
            var root = new WithCrossRecursiveA
            {
                NameA = "Root",
                Recursive = new WithCrossRecursiveB
                {
                    NameB = "First",
                    Recursive = new WithCrossRecursiveA // This one cannot be shared with the root.
                    {
                        NameA = "Second",
                        Recursive = new WithCrossRecursiveB // This will be created anyways with a different name (no way to know).
                        {
                            NameB = "Null",
                        }
                    }
                }
            };

            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());
        }