Ejemplo n.º 1
0
        public void ТестированиеПростогоТэга()
        {
            DelphiGenerator dg = GetDelphiGenerator(@"..\..\Tests\XMLFile2.xml");

            Assert.NotNull(dg);
            Assert.Equals(1, dg.TypeList.Count);
            TypeInterface XMLTest = dg.TypeList[0];

            Assert.Equals("IXMLTest", XMLTest.InterfaceName);
            Assert.Equals(2, XMLTest.PropertyAccessors.Count);
            Assert.Equals("function Get_HelloWorld: Integer;", XMLTest.PropertyAccessors[0].Декларация);
            Assert.Equals("  Result := ChildNodes['HelloWorld'].NodeValue;", XMLTest.PropertyAccessors[0].Тело);
            Assert.Equals("procedure Set_HelloWorld(Value: Integer);", XMLTest.PropertyAccessors[1].Декларация);
            Assert.Equals("  ChildNodes['HelloWorld'].NodeValue := Value;", XMLTest.PropertyAccessors[1].Тело);
            Assert.Equals(0, XMLTest.Methods.Count);
            Assert.Equals(1, XMLTest.Properties.Count);
            Assert.Equals("property HelloWorld: Integer read Get_HelloWorld write Set_HelloWorld;", XMLTest.Properties[0]);
            Assert.Equals("", XMLTest.AfterConstruction);

            Assert.Equals(3, dg.GlobalFunctions.Count);
            Assert.Equals("function GetTest(Doc: IXMLDocument): IXMLTest;", dg.GlobalFunctions[0].Заголовок);
            Assert.Equals("  Result := Doc.GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                          dg.GlobalFunctions[0].Тело);
            Assert.Equals("function LoadTest(const FileName: WideString): IXMLTest;", dg.GlobalFunctions[1].Заголовок);
            Assert.Equals(
                "  Result := LoadXMLDocument(FileName).GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                dg.GlobalFunctions[1].Тело);
            Assert.Equals("function NewTest: IXMLTest;", dg.GlobalFunctions[2].Заголовок);
            Assert.Equals("  Result := NewXMLDocument.GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                          dg.GlobalFunctions[2].Тело);

            dg.Сгенерировать(@"..\..\Tests\XMLFile2_.pas");
        }
Ejemplo n.º 2
0
        public void ТестированиеПовторяющегосяПростогоТэга()
        {
            DelphiGenerator dg = GetDelphiGenerator(@"..\..\Tests\XMLFile1.xml");

            Assert.NotNull(dg);
            Assert.Equals(1, dg.TypeList.Count);
            TypeInterface XMLTest = dg.TypeList[0];

            Assert.Equals("IXMLTest", XMLTest.InterfaceName);
            Assert.Equals(1, XMLTest.PropertyAccessors.Count);
            Assert.Equals("function Get_HelloWorld(Index: Integer): Integer;", XMLTest.PropertyAccessors[0].Декларация);
            Assert.Equals(2, XMLTest.Methods.Count);
            Assert.Equals("function Add(const HelloWorld: Integer): IXMLNode;", XMLTest.Methods[0].Декларация);
            Assert.Equals("function Insert(const Index: Integer; const HelloWorld: Integer): IXMLNode;",
                          XMLTest.Methods[1].Декларация);
            Assert.Equals(1, XMLTest.Properties.Count);
            Assert.Equals("property HelloWorld[Index: Integer]: Integer read Get_HelloWorld; default;", XMLTest.Properties[0]);
            Assert.Equals("  ItemTag := 'HelloWorld';" + Utils.NewLine + "  ItemInterface := IXMLNode;",
                          XMLTest.AfterConstruction);

            Assert.Equals(3, dg.GlobalFunctions.Count);
            Assert.Equals("function GetTest(Doc: IXMLDocument): IXMLTest;", dg.GlobalFunctions[0].Заголовок);
            Assert.Equals("  Result := Doc.GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                          dg.GlobalFunctions[0].Тело);
            Assert.Equals("function LoadTest(const FileName: WideString): IXMLTest;", dg.GlobalFunctions[1].Заголовок);
            Assert.Equals(
                "  Result := LoadXMLDocument(FileName).GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                dg.GlobalFunctions[1].Тело);
            Assert.Equals("function NewTest: IXMLTest;", dg.GlobalFunctions[2].Заголовок);
            Assert.Equals("  Result := NewXMLDocument.GetDocBinding('Test', TXMLTest, TargetNamespace) as IXMLTest;",
                          dg.GlobalFunctions[2].Тело);

            dg.Сгенерировать(@"..\..\Tests\XMLFile1_.pas");
        }
Ejemplo n.º 3
0
        private static DelphiGenerator GetDelphiGenerator(string имяXMLФайла)
        {
            DelphiGenerator dg    = null;
            XmlSchema       Схема = Program.ПолучитьСхемуXMLФайла(имяXMLФайла);

            foreach (DictionaryEntry de in Схема.Elements)
            {
                Тэг корень = Program.Build((XmlSchemaElement)de.Value);
                dg = new DelphiGenerator(корень);
                break; // обрабатываем только первый элемент
            }
            return(dg);
        }
Ejemplo n.º 4
0
        public void TestConfig()
        {
            DelphiGenerator dg = GetDelphiGenerator(@"..\..\Tests\config.xml");

            Assert.NotNull(dg);
            Assert.Equals(11, dg.TypeList.Count);
            Assert.Equals("IXMLConfig", dg.TypeList[0].InterfaceName);
            Assert.Equals("IXMLButton", dg.TypeList[1].InterfaceName);
            Assert.Equals("IXMLButtonList", dg.TypeList[2].InterfaceName);
            Assert.Equals("IXMLBackGround", dg.TypeList[3].InterfaceName);
            Assert.Equals("IXMLAllPages", dg.TypeList[4].InterfaceName);
            Assert.Equals("IXMLFont", dg.TypeList[5].InterfaceName);
            Assert.Equals("IXMLPage", dg.TypeList[6].InterfaceName);
            Assert.Equals("IXMLPageList", dg.TypeList[7].InterfaceName);
            Assert.Equals("IXMLNeed", dg.TypeList[8].InterfaceName);
            Assert.Equals("IXMLMsi", dg.TypeList[9].InterfaceName);
            Assert.Equals("IXMLMsiList", dg.TypeList[10].InterfaceName);

            TypeInterface XMLConfig = dg.TypeList[0];

            Assert.Equals("TXMLConfig", XMLConfig.TypeName);
            Assert.Equals("class(TXMLNode, IXMLConfig)", XMLConfig.TypeType);
            TypeInterface XMLButton = dg.TypeList[1];

            Assert.Equals("TXMLButton", XMLButton.TypeName);
            Assert.Equals("class(TXMLNode, IXMLButton)", XMLButton.TypeType);
            TypeInterface XMLButtonList = dg.TypeList[2];

            Assert.Equals("TXMLButtonList", XMLButtonList.TypeName);
            Assert.Equals("class(TXMLNodeCollection, IXMLButtonList)", XMLButtonList.TypeType);
            TypeInterface XMLBackGround = dg.TypeList[3];

            Assert.Equals("TXMLBackGround", XMLBackGround.TypeName);
            Assert.Equals("class(TXMLNode, IXMLBackGround)", XMLBackGround.TypeType);
            TypeInterface XMLAllPages = dg.TypeList[4];

            Assert.Equals("TXMLAllPages", XMLAllPages.TypeName);
            Assert.Equals("class(TXMLNode, IXMLAllPages)", XMLAllPages.TypeType);
            TypeInterface XMLFont = dg.TypeList[5];

            Assert.Equals("TXMLFont", XMLFont.TypeName);
            Assert.Equals("class(TXMLNode, IXMLFont)", XMLFont.TypeType);
            TypeInterface XMLPage = dg.TypeList[6];

            Assert.Equals("TXMLPage", XMLPage.TypeName);
            Assert.Equals("class(TXMLNodeCollection, IXMLPage)", XMLPage.TypeType);
            TypeInterface XMLPageList = dg.TypeList[7];

            Assert.Equals("TXMLPageList", XMLPageList.TypeName);
            Assert.Equals("class(TXMLNodeCollection, IXMLPageList)", XMLPageList.TypeType);
            TypeInterface XMLNeed = dg.TypeList[8];

            Assert.Equals("TXMLNeed", XMLNeed.TypeName);
            Assert.Equals("class(TXMLNode, IXMLNeed)", XMLNeed.TypeType);
            TypeInterface XMLMsi = dg.TypeList[9];

            Assert.Equals("TXMLMsi", XMLMsi.TypeName);
            Assert.Equals("class(TXMLNode, IXMLMsi)", XMLMsi.TypeType);
            TypeInterface XMLMsiList = dg.TypeList[10];

            Assert.Equals("TXMLMsiList", XMLMsiList.TypeName);
            Assert.Equals("class(TXMLNodeCollection, IXMLMsiList)", XMLMsiList.TypeType);

            Assert.Equals(
                @"  RegisterChildNode('Button', TXMLButton);
  RegisterChildNode('backGround', TXMLBackGround);
  RegisterChildNode('AllPages', TXMLAllPages);
  RegisterChildNode('Page', TXMLPage);
  RegisterChildNode('msi', TXMLMsi);
  FButton := CreateCollection(TXMLButtonList, IXMLButton, 'Button') as IXMLButtonList;
  FPage := CreateCollection(TXMLPageList, IXMLPage, 'Page') as IXMLPageList;
  FMsi := CreateCollection(TXMLMsiList, IXMLMsi, 'msi') as IXMLMsiList;",
                XMLConfig.AfterConstruction);

            Метод метод;

            метод = XMLPage.PropertyAccessors[0];
            Assert.Equals("Get_Exe: WideString;", метод.Заголовок);
            Assert.Equals(@"  Result := AttributeNodes['exe'].Text;", метод.Тело);
            метод = XMLPage.PropertyAccessors[2];
            Assert.Equals("Get_X: Integer;", метод.Заголовок);
            Assert.Equals(@"  Result := AttributeNodes['X'].NodeValue;", метод.Тело);
            метод = XMLPage.PropertyAccessors[3];
            Assert.Equals("Get_Y: Integer;", метод.Заголовок);
            Assert.Equals(@"  Result := AttributeNodes['Y'].NodeValue;", метод.Тело);
            метод = XMLPage.PropertyAccessors[11];
            Assert.Equals("Get_Standart: Boolean;", метод.Заголовок);
            Assert.Equals(@"  Result := AttributeNodes['Standart'].NodeValue;", метод.Тело);
            метод = XMLPage.PropertyAccessors[13];
            Assert.Equals("Get_Need(Index: Integer): IXMLNeed;", метод.Заголовок);
            Assert.Equals(@"  Result := List[Index].NodeValue;", метод.Тело);
            метод = XMLPage.PropertyAccessors[16];
            Assert.Equals("Set_X(Value: Integer);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('X', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[17];
            Assert.Equals("Set_Y(Value: Integer);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('Y', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[18];
            Assert.Equals("Set_Hint(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('Hint', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[19];
            Assert.Equals("Set_Header(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('header', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[20];
            Assert.Equals("Set_Bottom(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('bottom', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[21];
            Assert.Equals("Set_Html(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('html', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[22];
            Assert.Equals("Set_InstallerExe(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('installerExe', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[23];
            Assert.Equals("Set_ExeAfterInstall(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('exeAfterInstall', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[24];
            Assert.Equals("Set_RegInstallPath(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('regInstallPath', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[25];
            Assert.Equals("Set_Standart(Value: Boolean);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('Standart', Value);", метод.Тело);
            метод = XMLPage.PropertyAccessors[26];
            Assert.Equals("Set_PageImage(Value: WideString);", метод.Заголовок);
            Assert.Equals(@"  SetAttribute('pageImage', Value);", метод.Тело);

            //int cnt = 0;
            //foreach (TypeInterface ti in dg.TypeList) {
            //  string s = ti.TypeName.Substring(1);
            //  Console.WriteLine("TypeInterface " + s + " = dg.TypeList[" + cnt + "];");
            //  Console.WriteLine("Assert.Equals(\"" + ti.TypeName + "\"," + s + ".TypeName);");
            //  Console.WriteLine("Assert.Equals(\"" + ti.TypeType + "\"," + s + ".TypeType);");
            //  cnt++;
            //}

            //int cnt = 0;
            //Console.WriteLine("Метод метод;");
            //foreach (Метод m in XMLPage.PropertyAccessors) {
            //  Console.WriteLine("метод = XMLPage.PropertyAccessors[" + cnt + "];");
            //  Console.WriteLine("Assert.Equals(\"" + m.Заголовок + "\",метод.Заголовок);");
            //  Console.WriteLine("Assert.Equals(@" + "\"" + m.Тело + "\",метод.Тело);");
            //  cnt++;
            //}


            dg.Сгенерировать(@"..\..\Tests\config_.pas");
        }