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; 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; //Тест 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. 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; ////Тест TSvnInfoReaded //TestSvnReader := TSvnInfoReader.Create; ////PathStr := 'Z:\home\sagrer\haiku\haiku\trunk'; //PathStr := 'E:\Sagrer\Works\GipatProj\ProgsDev\GGBuildTools\trunk'; //Writeln(TestSvnReader.IsSvnDir(PathStr) ); //Writeln(TestSvnReader.GetSvnDirFormat(PathStr) ); //Writeln(TestSvnReader.GetSvnDirRevision(PathStr)); //TestSvnReader.Free; ////Тест 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; //Ждать нажматия Enter-а Writeln('Done.'); Readln(); //Выбросим мусор... Transl.Free; end.