Ejemplo n.º 1
0
        public void OverridesAreWellFormed()
        {
            List <string> files = CodeGen.Program.GetInputFileList();

            string inputDir = "codegen/in";

            Overrides.XmlBindings.Settings overridesXmlData = XmlBindings.Utilities.LoadXmlData <Overrides.XmlBindings.Settings>(inputDir, "Settings.xml");
            Formatter.Prefix       = overridesXmlData.Prefix.Value;
            Formatter.Subnamespace = overridesXmlData.Subnamespace.Value;

            List <D2DTypes> typeDocuments = new List <D2DTypes>();
            Dictionary <string, QualifiableType> typeDictionary = new Dictionary <string, QualifiableType>();
            OutputDataTypes outputDataTypes = new OutputDataTypes();

            foreach (string fileName in files)
            {
                XmlBindings.D2DTypes xmlDocument = XmlBindings.Utilities.LoadXmlData <XmlBindings.D2DTypes>(inputDir, fileName);
                typeDocuments.Add(new D2DTypes(xmlDocument, overridesXmlData, typeDictionary, outputDataTypes));
            }

            foreach (Overrides.XmlBindings.Primitive overridePrimitive in overridesXmlData.Primitives)
            {
                Assert.IsTrue(typeDictionary.ContainsKey(overridePrimitive.Name), "Unexpected override primitive: " + overridePrimitive.Name);
            }

            foreach (Overrides.XmlBindings.Namespace overrideNamespace in overridesXmlData.Namespaces)
            {
                // Skip Effects namespace because it have different logic
                if (overrideNamespace.Name == "Effects")
                {
                    continue;
                }

                Assert.IsTrue(overrideNamespace.Name == "D2D" || overrideNamespace.Name == "D2D1", "Unexpected override namespace: " + overrideNamespace.Name);

                foreach (Overrides.XmlBindings.Struct overrideStruct in overrideNamespace.Structs)
                {
                    string nameKey = overrideNamespace.Name + "::" + overrideStruct.Name;
                    Assert.IsTrue(typeDictionary.ContainsKey(nameKey), "Unexpected override struct: " + overrideStruct.Name);
                }

                foreach (Overrides.XmlBindings.Enum overrideEnum in overrideNamespace.Enums)
                {
                    string nameKey = overrideNamespace.Name + "::" + overrideEnum.Name;
                    Assert.IsTrue(typeDictionary.ContainsKey(nameKey), "Unexpected override enum: " + overrideEnum.Name);

                    CodeGen.Enum e = (CodeGen.Enum)(typeDictionary[nameKey]);
                    foreach (Overrides.XmlBindings.EnumValue overrideEnumValue in overrideEnum.Values)
                    {
                        CodeGen.EnumValue match = e.Values.Find(x => x.RawNameComponent == overrideEnumValue.Name);
                        Assert.IsNotNull(match, "Unexpected override enum value: " + overrideEnum + "::" + overrideEnumValue.Name);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        public void OverridesAreWellFormed()
        {
            List<string> files = CodeGen.Program.GetInputFileList();

            string inputDir = "codegen/in";

            Overrides.XmlBindings.Settings overridesXmlData = XmlBindings.Utilities.LoadXmlData<Overrides.XmlBindings.Settings>(inputDir, "Settings.xml");
            Formatter.Prefix = overridesXmlData.Prefix.Value;

            List<D2DTypes> typeDocuments = new List<D2DTypes>();
            Dictionary<string, QualifiableType> typeDictionary = new Dictionary<string, QualifiableType>();
            OutputDataTypes outputDataTypes = new OutputDataTypes();
            foreach (string fileName in files)
            {
                XmlBindings.D2DTypes xmlDocument = XmlBindings.Utilities.LoadXmlData<XmlBindings.D2DTypes>(inputDir, fileName);
                typeDocuments.Add(new D2DTypes(xmlDocument, overridesXmlData, typeDictionary, outputDataTypes));
            }

            foreach (Overrides.XmlBindings.Primitive overridePrimitive in overridesXmlData.Primitives)
            {
                Assert.IsTrue(typeDictionary.ContainsKey(overridePrimitive.Name), "Unexpected override primitive: " + overridePrimitive.Name);
            }

            foreach (Overrides.XmlBindings.Namespace overrideNamespace in overridesXmlData.Namespaces)
            {
                // Skip Effects namespace because it have different logic
                if (overrideNamespace.Name == "Effects")
                    continue;

                Assert.IsTrue(overrideNamespace.Name == "D2D" || overrideNamespace.Name == "D2D1", "Unexpected override namespace: " + overrideNamespace.Name);

                foreach (Overrides.XmlBindings.Struct overrideStruct in overrideNamespace.Structs)
                {
                    string nameKey = overrideNamespace.Name + "::" + overrideStruct.Name;
                    Assert.IsTrue(typeDictionary.ContainsKey(nameKey), "Unexpected override struct: " + overrideStruct.Name);
                }

                foreach (Overrides.XmlBindings.Enum overrideEnum in overrideNamespace.Enums)
                {
                    string nameKey = overrideNamespace.Name + "::" + overrideEnum.Name;
                    Assert.IsTrue(typeDictionary.ContainsKey(nameKey), "Unexpected override enum: " + overrideEnum.Name);

                    CodeGen.Enum e = (CodeGen.Enum)(typeDictionary[nameKey]);
                    foreach (Overrides.XmlBindings.EnumValue overrideEnumValue in overrideEnum.Values)
                    {
                        CodeGen.EnumValue match = e.Values.Find(x => x.RawNameComponent == overrideEnumValue.Name);
                        Assert.IsNotNull(match, "Unexpected override enum value: " + overrideEnum + "::" + overrideEnumValue.Name);
                    }
                }
            }
        }