public void PressiusTestComplexObject_ShouldPermutate()
        {
            var pressiusTestObjectList = new Permutor()
                                         .AddParameterDefinition(new PressiusTestObjectParameterDefinition())
                                         .AddObjectDefinition(new PressiusTestComplexObjectDefinition())
                                         .GeneratePermutation <PressiusTestComplexObject>();

            pressiusTestObjectList.ShouldNotBeNull();
            pressiusTestObjectList.ToList().Count.ShouldBeGreaterThan(0);
            var objectList = pressiusTestObjectList.ToList();

            objectList.ForEach(obj =>
            {
                _output.WriteLine("Obj: {0} {1} {2} {3}", obj.Id, obj.OtherVariable, obj.PressiusTestObject.Name, obj.PressiusTestObject.Address);
            });
        }
        public void PressiusTestComplexObject_WithPermutorInterface_ShouldPermutate()
        {
            var paramDefinitionInputCatalogues = new List <object> {
                new PressiusTestObject {
                    Address = "300 Latrobe Street", Id = 1, Name = "My First Object"
                },
                new PressiusTestObject {
                    Address = "500 Latrobe Street", Id = 2, Name = "My Second Object"
                },
                new PressiusTestObject {
                    Address = "600 Latrobe Street", Id = 3, Name = "My Third Object"
                }
            };
            var otherVariableCatalogues = new List <object>
            {
                "Test1", "Test2", "Test3", "Test4", "Test5", "Test6", "Test7", "Test8", "Test9", "Test10"
            };
            var pressiusTestObjectList = new Permutor()
                                         .WithId("Id")
                                         .AddParameterDefinition("PressiusTestObjectNew", paramDefinitionInputCatalogues)
                                         .AddParameterDefinition("OtherVariable", otherVariableCatalogues, true)
                                         .WithObjectDefinitionMatcher("PressiusTestObject", "PressiusTestObjectNew")
                                         .GeneratePermutation <PressiusTestComplexObject>();

            pressiusTestObjectList.ShouldNotBeNull();
            pressiusTestObjectList.ToList().Count.ShouldBeGreaterThan(0);
            var objectList = pressiusTestObjectList.ToList();

            var addressList       = paramDefinitionInputCatalogues.Select(c => ((PressiusTestObject)c).Address);
            var nameList          = paramDefinitionInputCatalogues.Select(c => ((PressiusTestObject)c).Name);
            var otherVariableList = otherVariableCatalogues.Select(c => (string)c);

            objectList.ForEach(obj =>
            {
                _output.WriteLine("Obj: {0} {1} {2} {3}", obj.Id, obj.OtherVariable, obj.PressiusTestObject.Name, obj.PressiusTestObject.Address);
                nameList.ShouldContain(obj.PressiusTestObject.Name);
                addressList.ShouldContain(obj.PressiusTestObject.Address);
                otherVariableList.ShouldContain(obj.OtherVariable);
            });
        }