/////////////////////////////////////////////////////////// // GGBuildTools // // Набор утилит для сборки проектов Gipat Group // // Copyright (C) 2007-2012 Gipat Group // // Распространяется на условиях // // Modified LGPL v2.1 // // см. файл COPYING.modifiedLGPL.txt // // // // www.gipatgroup.org // /////////////////////////////////////////////////////////// //К работе над данным файлом приложили руки, ноги.... короче аффтары: // 1) Sagrer (sagrer@yandex.ru) //////////////////////////////////////////////////////////////////////// program TestApp; {$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, Forms { add your units here }, LCLTextFileInString, SvnInfoReader, FlistFormat, LCLAnIniFile, IssFormat, ExtraFunctionsLCL, VerInfoTxtFormat, LConvencoding, SysUtils, GetText, MOExtractor, Dialogs, Interfaces, SconfFormat, ExtraFileUtilsLCL, sqlite3ds, CustomSqliteDS, process, fileutil; var Transl : TMOExtractor; //Локализация //Служебные функции. procedure PauseAfterTest; //Отображает результат теста и ждет пока юзверь-тестер тыркнет на Enter, //потом еще несколько строк пропустит чтобы вывод следующего теста отделялся. begin Writeln(''); Writeln(Transl._('[End of test, press Enter to start a next test pls.]')); Readln(); Writeln(''); Writeln(''); Writeln(''); Writeln(''); Writeln(''); end; //var-ы для тестов вбивать сюда. ////Тест модификации TTextFileInString. //var //TestText : TTextFileInString; ////Тест TSvnInfoReaded //var // TestSvnReader : TSvnInfoReader; // PathStr : AnsiString; // SvnProcess : TProcess; // AStringList, TheStringList : TStringList; //Тест TFlistFormat //var // FlistFile : TFlistFormat; ////Тест TAnIniFile //var //AnIniFile : TAnIniFile; //ValueList : AIniValueList; ////Тест TIssFormat //var //IssFile : TIssFormat; ////Тест ParseNumericHead //var //InputStr, ParsedStr : AnsiString; ////Тест TVerInfoTxtFormat //var //VITFormat : TVerInfoTxtFormat; ////Тест работы с кириллицей. //var //TestString1, TestString2 : String; ////Тест TSconfFormat //var //SconfFile : TSconfFormat; ////Тест TListOfStringLists - начало объявления. //var //StrListsList : TListOfStringLists; //I, J : Integer; //procedure RefillTheTestList(var StrListsList : TListOfStringLists); //begin ////Почистим список... //StrListsList.SetCount(0); ////И вобъем тестовый вариант. //StrListsList.SetCount(3); //StrListsList.GetList(0).Add('0-0'); //StrListsList.GetList(0).Add('0-1'); //StrListsList.GetList(0).Add('0-2'); //StrListsList.GetList(1).Add('1-0'); //StrListsList.GetList(1).Add('1-1'); //StrListsList.GetList(1).Add('1-2'); //StrListsList.GetList(2).Add('2-0'); //StrListsList.GetList(2).Add('2-1'); //StrListsList.GetList(2).Add('2-2'); //end; //procedure WriteTheTestList(var StrListsList : TListOfStringLists); //begin ////Выводим содержимое. //Writeln('[<--------------->]'); //for I := 0 to StrListsList.Count-1 do begin //Writeln('[-----------------]'); //for J := 0 to StrListsList.GetList(I).Count-1 do begin //Writeln(StrListsList.GetList(I).Strings[J]); //end; //end; //Writeln('[<--------------->]'); //end; ////Конец объявления теста TListOfStringLists. ////Тест SQLite //var // TestBase : TSqlite3Dataset; // TestList : TStrings; // TestStr : AnsiString; ////Тест стримов. //var // TestStream1, TestStream2 : TMemoryStream; // TestStrings : TStringList; // Buffer : AnsiString; begin //Локализация, + функции для сохранения строк в *.mo. Transl := TMOExtractor.Create(ExtractFilePath(Application.ExeName)+'Languages',''); Transl._('A test of the gettext is succesfull if this is translated.'); //Чтобы оставить строку в *.mo //Сюды (ниже) - вбивать тесты. ////Тест модификации TTextFileInString. //TestText := TTextFileInString.Create; //TestText.Load('..\..\..\entries'); //repeat //Writeln(TestText.CurReadLn); //until TestText.Eof; //TestText.Free; ////Тест TSvnInfoReader //TestSvnReader := TSvnInfoReader.Create; ////PathStr := 'Z:\home\sagrer\haiku\haiku\trunk'; ////PathStr := 'E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk'; //PathStr := 'F:\Work\ProgsDev\GGBuildTools\trunk\DepsSrc'; //Writeln(TestSvnReader.IsSvnDir(PathStr) ); //Writeln(TestSvnReader.GetSvnDirFormat(PathStr) ); //Writeln(TestSvnReader.GetSvnDirRevision(PathStr)); //TestSvnReader.Free; //SvnProcess := TProcess.Create(nil); //AStringList := TStringList.Create; //TheStringList := TStringList.Create; //TheStringList.Clear; //SvnProcess.Executable := FindDefaultExecutablePath('svn'); //if FileExists(SvnProcess.Executable) = true then begin // SvnProcess.Options := [poUsePipes]; // SvnProcess.Parameters.Add('help'); // SvnProcess.CloseInput; // SvnProcess.Execute; // repeat // Writeln('!'); // AStringList.LoadFromStream(SvnProcess.Output); // TheStringList.AddStrings(AStringList); // until SvnProcess.Running = false; // Writeln(TheStringList.Text); //end; //SvnProcess.Free; //AStringList.Free; //TheStringList.Free; ////Writeln(FindDefaultExecutablePath('svn')); ////TestStr := AnsiToOEMBuff(GetEnvironmentVariable('test')); ////Writeln(UTF8ToCP866(TestStr)); //////Тест TFlistFormat //Writeln('Now testing the FList format!'); //FlistFile := TFlistFormat.Create; //FlistFile.GlobalRoot := 'C:\Sagrer\GG\GGBuildTools\trunk\generated\src'; //FlistFile.TurnUseGroupsOn; //if FlistFile.AddRealDirectory('C:\Sagrer\GG\GGBuildTools\trunk\generated\src',true) = true then begin; // FlistFile.Save('C:\Sagrer\GG\GGBuildTools\trunk\test1.flist'); // FlistFile.RemoveDirectory('.\ggbt'); // FlistFile.TurnUseGroupsOff; // FlistFile.Save('C:\Sagrer\GG\GGBuildTools\trunk\test2.flist'); // FlistFile.Free; //end //else begin // Writeln('Error! The message was: '+FlistFile.ErrorMessage); //end; ////Тест TAnIniFile. //AnIniFile := TAnIniFile.Create; //AnIniFile.Load('E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk\default.iss'); //SetLength(ValueList,0,0); //AnIniFile.ReadIniValueList('Types',ValueList); //AnIniFile.RemoveIniValueListValue(ValueList,0,'Description'); //AnIniFile.WriteIniValueList('Types',ValueList); //SetLength(ValueList,0,0); //AnIniFile.ReadIniValueList('Registry',ValueList); //AnIniFile.RemoveIniValueListElement(ValueList,0); //AnIniFile.WriteIniValueList('Registry',ValueList); //SetLength(ValueList,0,0); //AnIniFile.Save('E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk\test1.iss'); //AnIniFile.Free; ////Тест TIssFormat //IssFile := TIssFormat.Create; //IssFile.Load('E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk\default.iss'); ////IssFile.RemoveInstalType('StandardInstall'); ////Тест работы с кириллицей. ////Базовые тесты, без gettext... //Writeln('Autodetecting codepage: '+GetSystemEncoding()); //Writeln(ConvertEncoding('Тест вывода кириллицы в консоль напрямую, кодировки явно указаны','cp1251','cp866')); //Writeln(ConvertEncoding('Тест вывода кириллицы в консоль напрямую, автодетект кодировки','cp1251',GetUIEncoding)); //Writeln(ConvertEncoding('Детект локали:','cp1251',GetUIEncoding)); //GetLanguageIDs(TestString1, TestString2); //Writeln(TestString1); //Writeln(TestString2); //Writeln(ConvertEncoding('Тестирование GetText:','cp1251',GetUIEncoding)); ////Тестируем gettext... //Writeln(Transl._('A test of the gettext is succesfull if this is translated.')); ////Application.Initialize; ////ShowMessage(Transl._('A test of the gettext is succesfull if this is translated.')); //IssFile.WriteInstallType('StandardInstall','Name: StandardInstall; Description: НеОбыкновенная установка; Languages: '); //IssFile.Save('E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk\test1.iss'); //IssFile.Free; ////Тест ParseNumericHead //InputStr := '12345abcd'; //ParsedStr := ParseNumericHead(InputStr); //Writeln(InputStr); //Writeln(ParsedStr); ////Тест TVerInfoTxtFormat //VITFormat := TVerInfoTxtFormat.Create; ////Тупо сгенерим какую-нить версию... //VITFormat.Ver1 := 0; //VITFormat.Ver2 := 2; //VITFormat.Ver3 := 3; //VITFormat.Ver4 := 5; //VITFormat.Status := VIT_Status_ReleaseCandidate; //VITFormat.RCNum := 3; ////И выведем в консоль сгенеренные строки... //Writeln('GenerateVersionString() -> '+VITFormat.GenerateVersionString()); //Writeln('GenerateVersionString_nosvn() -> '+VITFormat.GenerateVersionString_nosvn()); //Writeln('GenerateFNVersionString_nostatus() -> '+VITFormat.GenerateFNVersionString_nostatus()); //Writeln('GenerateFNVersionString() -> '+VITFormat.GenerateFNVersionString()); //Writeln('GenerateShortVersionString() -> '+VITFormat.GenerateShortVersionString()); //Writeln('GenerateShortVersionString_nosvn() -> '+VITFormat.GenerateShortVersionString_nosvn()); //Writeln('GenerateDotsVersionString() -> '+VITFormat.GenerateDotsVersionString()); //VITFormat.Free; ////Тест работы с кириллицей. ////Базовые тесты, без gettext... //Writeln('Autodetecting codepage: '+GetSystemEncoding()); //Writeln(ConvertEncoding('Тест вывода кириллицы в консоль напрямую, кодировки явно указаны','cp1251','cp866')); //Writeln(ConvertEncoding('Тест вывода кириллицы в консоль напрямую, автодетект кодировки','cp1251',GetUIEncoding)); //Writeln(ConvertEncoding('Детект локали:','cp1251',GetUIEncoding)); //GetLanguageIDs(TestString1, TestString2); //Writeln(TestString1); //Writeln(TestString2); //Writeln(ConvertEncoding('Тестирование GetText:','cp1251',GetUIEncoding)); ////Тестируем gettext... //Writeln(Transl._('A test of the gettext is succesfull if this is translated.')); ////Application.Initialize; ////ShowMessage(Transl._('A test of the gettext is succesfull if this is translated.')); ////Тест TSconfFormat ////Тестирует способность апдейтить sconf-файлы до последней версии. //SconfFile := TSconfFormat.Create; //SconfFile.Load('..\..\..\GGBuildTools.sconf'); //SconfFile.Save('..\..\..\TestUpdatedSconf.sconf'); //SconfFile.Free; ////Тест TListOfStringLists //StrListsList := TListOfStringLists.Create; ////Вобъем тестовый вариант (и выведем что получилось). //RefillTheTestList(StrListsList); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Попробуем удалить элемент в начале. //StrListsList.RemoveList(0); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем удалить элемент в середине. //RefillTheTestList(StrListsList); //StrListsList.RemoveList(1); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем удалить элемент в конце. //RefillTheTestList(StrListsList); //StrListsList.RemoveList(2); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем вставить элемент в начало. //RefillTheTestList(StrListsList); //StrListsList.InsertList(0); //StrListsList.GetList(0).Add('An inserted list!!!'); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем вставить элемент после 1-го элемента. //RefillTheTestList(StrListsList); //StrListsList.InsertList(1); //StrListsList.GetList(1).Add('An inserted list!!!'); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем вставить элемент после 2-го элемента. //RefillTheTestList(StrListsList); //StrListsList.InsertList(2); //StrListsList.GetList(2).Add('An inserted list!!!'); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем вставить элемент в конец. //RefillTheTestList(StrListsList); //StrListsList.InsertList(3); //StrListsList.GetList(3).Add('An inserted list!!!'); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем вставить элемент в индекс, которого нет в принципе (будет Add). //RefillTheTestList(StrListsList); //Writeln(IntToStr(StrListsList.InsertList(4))); //StrListsList.GetList(3).Add('An inserted list!!!'); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем удалить все элементы с начала. //RefillTheTestList(StrListsList); //StrListsList.RemoveList(0); //WriteTheTestList(StrListsList); //StrListsList.RemoveList(0); //WriteTheTestList(StrListsList); //StrListsList.RemoveList(0); //WriteTheTestList(StrListsList); //PauseAfterTest; ////Пробуем удалить все элементы с конца. //RefillTheTestList(StrListsList); //StrListsList.RemoveList(2); //WriteTheTestList(StrListsList); //StrListsList.RemoveList(1); //WriteTheTestList(StrListsList); //StrListsList.RemoveList(0); //WriteTheTestList(StrListsList); ////Конец тестов, выкинуть мусор. //StrListsList.Free; ////Тестируем работу с SQLite. ////Настраиваемся... //TestBase := TSqlite3Dataset.Create(Application); //TestBase.FileName := 'C:\Temp\wc.db'; ////TestBase.TableName := 'NODES'; ////Открываем... ////TestBase.Open; ////Вытягиваем номер версии базы. //Writeln(TestBase.QuickQuery('PRAGMA user_version;')); ////Закрываем... ////TestBase.Close; ////Выкинуть мусор //TestBase.Free; ////Тест стримов. //TestStream1 := TMemoryStream.Create; //TestStream2 := TMemoryStream.Create; //TestStrings := TStringList.Create; ////Читаем 2 файла в 1 стрим, потом прочитанное читаем в другой стрим. //TestStream1.Clear; //TestStream2.Clear; //TestStream2.LoadFromFile('F:\Work\ProgsDev\GGBuildTools\test\test.xml'); //SetLength(Buffer,TestStream2.Size); //TestStream2.Read(Buffer[1],TestStream2.Size); //TestStream1.Write(Buffer[1],TestStream2.Size); ////TestStream2.SaveToStream(TestStream1); //TestStream2.Clear; //TestStream2.LoadFromFile('F:\Work\ProgsDev\GGBuildTools\test\test.xml'); //SetLength(Buffer,TestStream2.Size); //TestStream2.Read(Buffer[1],TestStream2.Size); //TestStream1.Write(Buffer[1],TestStream2.Size); ////TestStream2.SaveToStream(TestStream1); //SetLength(Buffer,0); ////Выводим что получилось. //TestStream1.Position := 0; //TestStrings.LoadFromStream(TestStream1); //Writeln(TestStrings.Text); ////Уборка мусора //TestStream1.Free; //TestStream2.Free; //TestStrings.Free; //Ждать нажматия Enter-а Writeln('Done.'); Readln(); //Выбросим мусор... Transl.Free; end.