Exemplo n.º 1
0
        public static IEnumerable <object[]> Loop_Self()
        {
            Specification <LoopClassA> specification = null;

            specification = c => c.AsModel(specification);

            var model1 = new LoopClassA();

            model1.A = model1;

            yield return(new object[] { "self", specification, model1, "", "", typeof(LoopClassA) });
        }
Exemplo n.º 2
0
        public static IEnumerable <object[]> Loop_Simple()
        {
            Specification <LoopClassA> specificationA = null;

            Specification <LoopClassB> specificationB = null;

            Specification <LoopClassC> specificationC = null;

            specificationA = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB);

            specificationB = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB)
                             .Member(m => m.C, specificationC);

            specificationC = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB)
                             .Member(m => m.C, specificationC);

            var model1 = new LoopClassA()
            {
                B = new LoopClassB()
            };

            model1.B.A = model1;

            yield return(new object[] { "simple", specificationA, model1, "", "B.A", typeof(LoopClassA) });

            var model2 = new LoopClassA()
            {
                A = new LoopClassA()
                {
                    A = new LoopClassA()
                    {
                        A = new LoopClassA(),
                        B = new LoopClassB()
                    },
                    B = new LoopClassB()
                    {
                        A = new LoopClassA(),
                        B = new LoopClassB()
                    }
                },
                B = new LoopClassB()
            };

            model2.B.A = model2;

            yield return(new object[] { "simple_withSides", specificationA, model2, "", "B.A", typeof(LoopClassA) });

            var model3 = new LoopClassA()
            {
                A = new LoopClassA()
                {
                    A = new LoopClassA()
                    {
                        A = new LoopClassA(),
                        B = new LoopClassB()
                    },
                    B = new LoopClassB()
                    {
                        A = new LoopClassA(),
                        B = new LoopClassB()
                    }
                }
            };

            model3.A.B.A.B = model3.A.B;

            yield return(new object[] { "simple_nested", specificationA, model3, "A.B", "A.B.A.B", typeof(LoopClassB) });

            var model4 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    C = new LoopClassC()
                    {
                        A = new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                                C = new LoopClassC()
                                {
                                    A = new LoopClassA()
                                    {
                                        B = new LoopClassB()
                                    }
                                }
                            }
                        }
                    }
                }
            };

            model4.B.C.A.B.C.A.B.C = model4.B.C;

            yield return(new object[] { "simple_manyClasses", specificationA, model4, "B.C", "B.C.A.B.C.A.B.C", typeof(LoopClassC) });
        }
Exemplo n.º 3
0
        public static IEnumerable <object[]> Loop_ThroughTypes()
        {
            Specification <LoopClassA> specificationA = null;

            Specification <LoopClassB> specificationB = null;

            Specification <LoopClassC> specificationC = null;

            Specification <LoopStructD> specificationD = null;

            Specification <LoopStructE> specificationE = null;

            specificationA = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB);

            specificationB = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB)
                             .Member(m => m.CollectionA, m => m.Optional().AsCollection(specificationA))
                             .Member(m => m.C, specificationC)
                             .Member(m => m.FieldC, specificationC)
                             .Member(m => m.D, specificationD)
                             .Member(m => m.CollectionD, m => m.Optional().AsCollection(specificationD))
                             .Member(m => m.NullableD, m => m.Optional().AsNullable(specificationD))
                             .Member(m => m.CollectionNullableD, m => m.Optional().AsCollection(m1 => m1.Optional().AsNullable(specificationD)));

            specificationC = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB)
                             .Member(m => m.C, specificationC);

            specificationD = c => c
                             .Member(m => m.A, specificationA)
                             .Member(m => m.E, specificationE)
                             .Member(m => m.NullableE, m => m.Optional().AsNullable(specificationE));

            specificationE = c => c
                             .Member(m => m.A, specificationA);

            var model1 = new LoopClassA()
            {
                B = new LoopClassB()
            };

            model1.B.A = model1;

            yield return(new object[] { "types_class", specificationA, model1, "", "B.A", typeof(LoopClassA) });

            var model2 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    D = new LoopStructD()
                }
            };

            model2.B.D.A = model2;

            yield return(new object[] { "types_struct", specificationA, model2, "", "B.D.A", typeof(LoopClassA) });

            var model3 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    NullableD = new LoopStructD()
                    {
                        A = new LoopClassA()
                    }
                }
            };

            model3.B.NullableD.Value.A.B = model3.B;

            yield return(new object[] { "types_nullable", specificationA, model3, "B", "B.NullableD.A.B", typeof(LoopClassB) });

            var model4 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA(),
                        null,
                        new LoopClassA(),
                    }
                }
            };

            model4.B.CollectionA[2] = model4;

            yield return(new object[] { "types_collection", specificationA, model4, "", "B.CollectionA.#2", typeof(LoopClassA) });

            var model5 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionD = new[]
                    {
                        new LoopStructD(),
                        new LoopStructD(),
                        new LoopStructD(),
                        new LoopStructD(),
                        new LoopStructD()
                        {
                            A = new LoopClassA()
                        }
                    },
                }
            };

            model5.B.CollectionD[4].A.B = model5.B;

            yield return(new object[] { "types_collection_structs", specificationA, model5, "B", "B.CollectionD.#4.A.B", typeof(LoopClassB) });

            var model6 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionNullableD = new LoopStructD?[]
                    {
                        new LoopStructD()
                        {
                            A = new LoopClassA()
                        }
                    },
                }
            };

            model6.B.CollectionNullableD[0].Value.A.B = model6.B;

            yield return(new object[] { "types_collection_nullables", specificationA, model6, "B", "B.CollectionNullableD.#0.A.B", typeof(LoopClassB) });
        }
Exemplo n.º 4
0
        public static IEnumerable <object[]> Loop_ThroughIndexes()
        {
            Specification <LoopClassA> specificationA = null;

            Specification <LoopClassB> specificationB = null;

            specificationA = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB);

            specificationB = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB)
                             .Member(m => m.CollectionA, m => m.AsCollection(specificationA));

            var model1 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                            }
                        }
                    }
                }
            };

            model1.B.CollectionA[1].B.A = model1.B.CollectionA[1];

            yield return(new object[] { "indexes_same_amount", specificationA, model1, "B.CollectionA.#1", "B.CollectionA.#1.B.A", typeof(LoopClassA) });

            var model2 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                                CollectionA = new[]
                                {
                                    new LoopClassA()
                                    {
                                        B = new LoopClassB()
                                        {
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            model2.B.CollectionA[1].B.CollectionA[0].B.A = model2.B.CollectionA[1].B.CollectionA[0];

            yield return(new object[] { "indexes_same_amount_nested", specificationA, model2, "B.CollectionA.#1.B.CollectionA.#0", "B.CollectionA.#1.B.CollectionA.#0.B.A", typeof(LoopClassA) });

            var model3 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                                CollectionA = new[]
                                {
                                    new LoopClassA()
                                    {
                                        B = new LoopClassB()
                                        {
                                            A = new LoopClassA()
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            model3.B.CollectionA[1].B.CollectionA[0].B.A.B = model3.B.CollectionA[1].B.CollectionA[0].B;

            yield return(new object[] { "indexes_same_amount_nested_member", specificationA, model3, "B.CollectionA.#1.B.CollectionA.#0.B", "B.CollectionA.#1.B.CollectionA.#0.B.A.B", typeof(LoopClassB) });

            var model4 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                                CollectionA = new[]
                                {
                                    new LoopClassA()
                                    {
                                        B = new LoopClassB()
                                        {
                                            A = new LoopClassA()
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            model4.B.CollectionA[1].B.CollectionA[0].B.A.B = model4.B.CollectionA[1].B;

            yield return(new object[] { "indexes_one_between", specificationA, model4, "B.CollectionA.#1.B", "B.CollectionA.#1.B.CollectionA.#0.B.A.B", typeof(LoopClassB) });

            var model5 = new LoopClassA()
            {
                B = new LoopClassB()
                {
                    CollectionA = new[]
                    {
                        new LoopClassA(),
                        new LoopClassA()
                        {
                            B = new LoopClassB()
                            {
                                CollectionA = new[]
                                {
                                    new LoopClassA()
                                    {
                                        B = new LoopClassB()
                                        {
                                            CollectionA = new[]
                                            {
                                                new LoopClassA(),
                                                new LoopClassA(),
                                                new LoopClassA()
                                                {
                                                    B = new LoopClassB()
                                                    {
                                                        A = new LoopClassA()
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            model5.B.CollectionA[1].B.CollectionA[0].B.CollectionA[2].B = model5.B.CollectionA[1].B;

            yield return(new object[] { "indexes_two_between", specificationA, model5, "B.CollectionA.#1.B", "B.CollectionA.#1.B.CollectionA.#0.B.CollectionA.#2.B", typeof(LoopClassB) });
        }
Exemplo n.º 5
0
        public static IEnumerable <object[]> Loop_ThroughMembers()
        {
            Specification <LoopClassA> specificationA = null;

            Specification <LoopClassB> specificationB = null;

            Specification <LoopClassC> specificationC = null;

            Specification <LoopStructD> specificationD = null;

            specificationA = c => c
                             .Optional()
                             .Member(m => m.A, specificationA)
                             .Member(m => m.B, specificationB);

            specificationB = c => c
                             .Optional()
                             .Member(m => m.FieldC, specificationC)
                             .Member(m => m.D, specificationD)
                             .Member(m => m.B, specificationB);

            specificationC = c => c
                             .Optional()
                             .Member(m => m.B, specificationB);

            specificationD = c => c
                             .Member(m => m.A, specificationA);

            var model1 = new LoopClassA();

            model1.A = model1;

            yield return(new object[] { "self_member", specificationA, model1, "", "A", typeof(LoopClassA) });

            var model2 = new LoopClassA
            {
                A = new LoopClassA()
                {
                    A = new LoopClassA()
                    {
                        A = new LoopClassA()
                    }
                }
            };

            model2.A.A.A = model2.A;

            yield return(new object[] { "self_memberNested", specificationA, model2, "A", "A.A.A", typeof(LoopClassA) });

            var model3 = new LoopClassA
            {
                B = new LoopClassB()
                {
                    D = new LoopStructD()
                }
            };

            model3.B.D.A = model3;

            yield return(new object[] { "self_fieldStruct", specificationA, model3, "", "B.D.A", typeof(LoopClassA) });

            var model4 = new LoopClassA
            {
                B = new LoopClassB()
                {
                    FieldC = new LoopClassC()
                }
            };

            model4.B.FieldC.B = model4.B;

            yield return(new object[] { "self_fieldClass", specificationA, model4, "B", "B.FieldC.B", typeof(LoopClassB) });
        }