Example #1
0
        public void Test_mapping_complex_type_with_complex_element_to_single_acc()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_complex_element_to_single_acc\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_complex_element_to_single_acc\invoice\maindoc\UBL-Invoice-2.0.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            var expectedSimpleTypeMappings = new List <SimpleTypeToCdtMapping>();


            var issueDateTypeMapping = new ComplexTypeToCdtMapping("Issue", "IssueDateType", new List <ElementMapping>())
            {
                TargetCdt = cdtDateTime
            };


            var orderReferenceTypeMapping = new ComplexTypeToAccMapping("OrderReference", "OrderReferenceType",
                                                                        new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("IssueDate", null, XsdObjectType.Element, null), bccIssue, issueDateTypeMapping),
            });

            var expectedComplexTypeMappings = new List <IMapping>
            {
                issueDateTypeMapping,
                orderReferenceTypeMapping,
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("OrderReference", null, XsdObjectType.Element, null))
            {
                TargetMapping = orderReferenceTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, expectedSimpleTypeMappings, expectedRootElementMapping);
        }
Example #2
0
        public void Test_mapping_simple_element_and_attributes_to_acc_with_mapping_function_split()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_simple_element_and_attributes_to_acc_with_mapping_function_split\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_simple_element_and_attributes_to_acc_with_mapping_function_split\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            SimpleTypeToCdtMapping stringMapping = new SimpleTypeToCdtMapping("String", cdtText);

            var expectedSimpleTypeMappings = new List <SimpleTypeToCdtMapping>
            {
                stringMapping,
            };


            var addressTypeMapping = new ComplexTypeToAccMapping("Address", "AddressType",
                                                                 new List <ElementMapping>
            {
                new SplitMapping(new SourceItem("Street", null, XsdObjectType.Element, null), new[] { bccStreetName, bccBuildingNumber }, new [] { stringMapping, stringMapping }),
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("Town", null, XsdObjectType.Element, null), bccCityName, stringMapping),
            });
            var expectedComplexTypeMappings = new List <IMapping>
            {
                addressTypeMapping,
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("Address", null, XsdObjectType.Element, null))
            {
                TargetMapping = addressTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, expectedSimpleTypeMappings, expectedRootElementMapping);
        }
Example #3
0
        public void Test_mapping_complex_type_with_simple_elements_and_attributes_to_cdt()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_simple_elements_and_attributes_to_cdt\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_simple_elements_and_attributes_to_cdt\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            var textTypeMapping = new ComplexTypeToCdtMapping("Text", "TextType",
                                                              new List <ElementMapping>
            {
                new AttributeOrSimpleElementToSupMapping(new SourceItem("Language", null, XsdObjectType.Attribute, null), supTextLanguage),
                new AttributeOrSimpleElementToSupMapping(new SourceItem("LanguageLocale", null, XsdObjectType.Attribute, null), supTextLanguageLocale),
            });

            var addressTypeMapping = new ComplexTypeToAccMapping("Address", "AddressType",
                                                                 new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("CityName", null, XsdObjectType.Element, null), bccCityName, textTypeMapping),
            });


            var expectedComplexTypeMappings = new List <IMapping>
            {
                textTypeMapping,
                addressTypeMapping,
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("Address", null, XsdObjectType.Element, null))
            {
                TargetMapping = addressTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, new List <SimpleTypeToCdtMapping>(), expectedRootElementMapping);
        }
Example #4
0
        public void Test_mapping_complex_type_with_two_simple_elements_to_two_accs()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_two_simple_elements_to_two_accs\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_complex_type_with_two_simple_elements_to_two_accs\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            SimpleTypeToCdtMapping stringMapping = new SimpleTypeToCdtMapping("String", cdtText);
            var expectedSimpleTypeMappings       = new List <SimpleTypeToCdtMapping>
            {
                stringMapping,
            };

            var addressTypeMapping = new ComplexTypeToMaMapping("Address", "AddressType",
                                                                new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("CityName", null, XsdObjectType.Element, null), bccCityName, stringMapping),
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("PersonName", null, XsdObjectType.Element, null), bccPartyName, stringMapping),
            });

            var expectedComplexTypeMappings = new List <IMapping>
            {
                addressTypeMapping,
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("Address", null, XsdObjectType.Element, null))
            {
                TargetMapping = addressTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, expectedSimpleTypeMappings, expectedRootElementMapping);
        }
Example #5
0
        public void Test_mapping_two_complex_types_with_complex_elements_to_duplicated_bcc()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_two_complex_types_with_complex_elements_to_duplicated_bcc\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_two_complex_types_with_complex_elements_to_duplicated_bcc\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            var textTypeToTextMapping = new ComplexTypeToCdtMapping("Text", "TextType",
                                                                    new List <ElementMapping>
            {
                new AttributeOrSimpleElementToSupMapping(new SourceItem("Language", null, XsdObjectType.Attribute, null), supTextLanguage),
            });

            var austrianAddressTypeMapping = new ComplexTypeToAccMapping("AustrianAddress", "AustrianAddressType",
                                                                         new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("CityName", null, XsdObjectType.Element, null), bccCityName, textTypeToTextMapping),
            });

            var indianAddressTypeMapping = new ComplexTypeToAccMapping("IndianAddress", "IndianAddressType",
                                                                       new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("CityName", null, XsdObjectType.Element, null), bccCityName, textTypeToTextMapping),
            });

            var addressBookTypeMapping = new ComplexTypeToMaMapping("AddressBook", "AddressBookType",
                                                                    new List <ElementMapping>
            {
                new AsmaMapping(new SourceItem("AustrianAddress", null, XsdObjectType.Element, null))
                {
                    TargetMapping = austrianAddressTypeMapping
                },
                new AsmaMapping(new SourceItem("IndianAddress", null, XsdObjectType.Element, null))
                {
                    TargetMapping = indianAddressTypeMapping
                },
            });


            var expectedComplexTypeMappings = new List <IMapping>
            {
                textTypeToTextMapping,
                austrianAddressTypeMapping,
                indianAddressTypeMapping,
                addressBookTypeMapping,
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("InternationalAddressBook", null, XsdObjectType.Element, null))
            {
                TargetMapping = addressBookTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, new List <SimpleTypeToCdtMapping>(), expectedRootElementMapping);
        }
Example #6
0
        public void Test_mapping_with_semisemantic_loss()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_with_semisemantic_loss\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_with_semisemantic_loss\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            SimpleTypeToCdtMapping stringMapping = new SimpleTypeToCdtMapping("String", cdtText);
            var expectedSimpleTypeMappings       = new List <SimpleTypeToCdtMapping>
            {
                stringMapping,
            };


            var addressTypeMapping = new ComplexTypeToAccMapping("Address", "AddressType",
                                                                 new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("StreetName", null, XsdObjectType.Element, null), bccCityName, stringMapping),
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("Town", null, XsdObjectType.Element, null), bccCityName, stringMapping),
            });


            var personTypeMapping = new ComplexTypeToAccMapping("Person", "PersonType",
                                                                new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("FirstName", null, XsdObjectType.Element, null), bccPartyName, stringMapping),
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("LastName", null, XsdObjectType.Element, null), bccPartyName, stringMapping),
                new ComplexElementToAsccMapping(new SourceItem("HomeAddress", null, XsdObjectType.Element, null), asccPartyResidenceAddress)
                {
                    TargetMapping = addressTypeMapping
                },
                new ComplexElementToAsccMapping(new SourceItem("WorkAddress", null, XsdObjectType.Element, null), asccPartyResidenceAddress)
                {
                    TargetMapping = addressTypeMapping
                },
            });

            var expectedComplexTypeMappings = new List <IMapping>
            {
                addressTypeMapping,
                personTypeMapping
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("Person", null, XsdObjectType.Element, null))
            {
                TargetMapping = personTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, expectedSimpleTypeMappings, expectedRootElementMapping);
        }
Example #7
0
        public void Test_mapping_recursive_complex_type()
        {
            var mappingFileName = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_recursive_complex_type\mapping.mfd");
            var xsdFileName     = TestUtils.PathToTestResource(@"XSDImporterTest\mapping\SchemaMappingTests\mapping_recursive_complex_type\source.xsd");

            SchemaMapping mappings = CreateSchemaMapping(mappingFileName, xsdFileName);

            SimpleTypeToCdtMapping stringMapping = new SimpleTypeToCdtMapping("String", cdtText);
            var expectedSimpleTypeMappings       = new List <SimpleTypeToCdtMapping>
            {
                stringMapping,
            };


            List <ElementMapping> personTypeChildMappings = new List <ElementMapping>
            {
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("FirstName", null, XsdObjectType.Element, null), bccPartyName, stringMapping),
                new AttributeOrSimpleElementOrComplexElementToBccMapping(new SourceItem("LastName", null, XsdObjectType.Element, null), bccPartyName, stringMapping),
            };
            var personTypeMapping = new ComplexTypeToAccMapping("Person", "PersonType",
                                                                personTypeChildMappings);

            personTypeMapping.AddChildMapping(new ComplexElementToAsccMapping(new SourceItem("Children", null, XsdObjectType.Element, null), asccPartyChildren)
            {
                TargetMapping = personTypeMapping
            });

            var expectedComplexTypeMappings = new List <IMapping>
            {
                personTypeMapping
            };

            var expectedRootElementMapping = new AsmaMapping(new SourceItem("Person", null, XsdObjectType.Element, null))
            {
                TargetMapping = personTypeMapping
            };

            AssertMappings(mappings, expectedComplexTypeMappings, expectedSimpleTypeMappings, expectedRootElementMapping);
        }
Example #8
0
        private static void AssertMappings(SchemaMapping mappings, List <IMapping> expectedComplexTypeMappings, List <SimpleTypeToCdtMapping> expectedSimpleTypeMappings, AsmaMapping expectedRootElementMapping)
        {
            var complexTypeMappings = new List <ComplexTypeMapping>(mappings.GetComplexTypeMappings());

            Console.Out.WriteLine("=================================================================================");
            Console.Out.WriteLine("Expected Complex Type Mappings:");
            foreach (IMapping expectedMapping in expectedComplexTypeMappings)
            {
                expectedMapping.TraverseDepthFirst(new MappingPrettyPrinter(Console.Out, "  "));
            }
            Console.Out.WriteLine("=================================================================================");
            Console.Out.WriteLine("Actual Complex Type Mappings:");
            foreach (ComplexTypeMapping complexTypeMapping in complexTypeMappings)
            {
                complexTypeMapping.TraverseDepthFirst(new MappingPrettyPrinter(Console.Out, "  "));
            }

            var simpleTypeMappings = new List <SimpleTypeToCdtMapping>(mappings.GetSimpleTypeMappings());

            Console.Out.WriteLine("=================================================================================");
            Console.Out.WriteLine("Expected Simple Type Mappings:");
            foreach (IMapping expectedMapping in expectedSimpleTypeMappings)
            {
                expectedMapping.TraverseDepthFirst(new MappingPrettyPrinter(Console.Out, "  "));
            }
            Console.Out.WriteLine("=================================================================================");
            Console.Out.WriteLine("Actual Simple Type Mappings:");
            foreach (var simpleTypeMapping in simpleTypeMappings)
            {
                simpleTypeMapping.TraverseDepthFirst(new MappingPrettyPrinter(Console.Out, "  "));
            }
            Assert.That(complexTypeMappings, Is.EquivalentTo(expectedComplexTypeMappings));
            Assert.That(simpleTypeMappings, Is.EquivalentTo(expectedSimpleTypeMappings));
            Assert.That(((AsmaMapping)mappings.RootElementMapping).TargetMapping, Is.EqualTo(expectedRootElementMapping.TargetMapping));
            Assert.That(mappings.RootElementMapping, Is.EqualTo(expectedRootElementMapping));
        }