aboutsummaryrefslogtreecommitdiffstats
path: root/src/UnitTests
diff options
context:
space:
mode:
Diffstat (limited to 'src/UnitTests')
-rw-r--r--src/UnitTests/switches.inc0
-rw-r--r--src/UnitTests/test_libraries.lpi299
-rw-r--r--src/UnitTests/test_libraries.lpr31
-rw-r--r--src/UnitTests/testsqllite.pas84
4 files changed, 414 insertions, 0 deletions
diff --git a/src/UnitTests/switches.inc b/src/UnitTests/switches.inc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/UnitTests/switches.inc
diff --git a/src/UnitTests/test_libraries.lpi b/src/UnitTests/test_libraries.lpi
new file mode 100644
index 00000000..cc3a6ddf
--- /dev/null
+++ b/src/UnitTests/test_libraries.lpi
@@ -0,0 +1,299 @@
+<?xml version="1.0"?>
+<CONFIG>
+ <ProjectOptions>
+ <PathDelim Value="/"/>
+ <Version Value="6"/>
+ <General>
+ <MainUnit Value="0"/>
+ <TargetFileExt Value=""/>
+ <ActiveEditorIndexAtStart Value="0"/>
+ </General>
+ <VersionInfo>
+ <ProjectVersion Value=""/>
+ <Language Value=""/>
+ <CharSet Value=""/>
+ </VersionInfo>
+ <PublishOptions>
+ <Version Value="2"/>
+ <IgnoreBinaries Value="False"/>
+ <IncludeFileFilter Value="*.(pas|pp|inc|lfm|lpr|lrs|lpi|lpk|sh|xml)"/>
+ <ExcludeFileFilter Value="*.(bak|ppu|ppw|o|so);*~;backup"/>
+ </PublishOptions>
+ <RunParams>
+ <local>
+ <FormatVersion Value="1"/>
+ <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
+ </local>
+ </RunParams>
+ <RequiredPackages Count="2">
+ <Item1>
+ <PackageName Value="FPCUnitConsoleRunner"/>
+ </Item1>
+ <Item2>
+ <PackageName Value="FCL"/>
+ </Item2>
+ </RequiredPackages>
+ <Units Count="3">
+ <Unit0>
+ <Filename Value="test_libraries.lpr"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="Test_Libraries"/>
+ <CursorPos X="77" Y="17"/>
+ <TopLine Value="1"/>
+ <EditorIndex Value="1"/>
+ <UsageCount Value="20"/>
+ <Loaded Value="True"/>
+ </Unit0>
+ <Unit1>
+ <Filename Value="testsqllite.pas"/>
+ <IsPartOfProject Value="True"/>
+ <UnitName Value="TestSQLLite"/>
+ <CursorPos X="23" Y="57"/>
+ <TopLine Value="39"/>
+ <EditorIndex Value="0"/>
+ <UsageCount Value="20"/>
+ <Loaded Value="True"/>
+ </Unit1>
+ <Unit2>
+ <Filename Value="../lib/SQLite/SQLiteTable3.pas"/>
+ <UnitName Value="SQLiteTable3"/>
+ <CursorPos X="37" Y="29"/>
+ <TopLine Value="11"/>
+ <EditorIndex Value="2"/>
+ <UsageCount Value="10"/>
+ <Loaded Value="True"/>
+ </Unit2>
+ </Units>
+ <JumpHistory Count="11" HistoryIndex="10">
+ <Position1>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="8" Column="68" TopLine="1"/>
+ </Position1>
+ <Position2>
+ <Filename Value="../lib/SQLite/SQLiteTable3.pas"/>
+ <Caret Line="1" Column="1" TopLine="1"/>
+ </Position2>
+ <Position3>
+ <Filename Value="../lib/SQLite/SQLiteTable3.pas"/>
+ <Caret Line="37" Column="64" TopLine="14"/>
+ </Position3>
+ <Position4>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="26" Column="34" TopLine="1"/>
+ </Position4>
+ <Position5>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="13" Column="10" TopLine="1"/>
+ </Position5>
+ <Position6>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="20" Column="29" TopLine="4"/>
+ </Position6>
+ <Position7>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="28" Column="22" TopLine="5"/>
+ </Position7>
+ <Position8>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="33" Column="42" TopLine="5"/>
+ </Position8>
+ <Position9>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="21" Column="15" TopLine="5"/>
+ </Position9>
+ <Position10>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="20" Column="38" TopLine="5"/>
+ </Position10>
+ <Position11>
+ <Filename Value="testsqllite.pas"/>
+ <Caret Line="61" Column="47" TopLine="39"/>
+ </Position11>
+ </JumpHistory>
+ </ProjectOptions>
+ <CompilerOptions>
+ <Version Value="5"/>
+ <CodeGeneration>
+ <Generate Value="Faster"/>
+ </CodeGeneration>
+ <Other>
+ <CompilerPath Value="$(CompPath)"/>
+ </Other>
+ </CompilerOptions>
+ <Debugging>
+ <BreakPoints Count="37">
+ <Item1>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="370"/>
+ </Item1>
+ <Item2>
+ <Source Value="../../../../../project_mutliloader/uploader_infomine.pas"/>
+ <Line Value="1"/>
+ </Item2>
+ <Item3>
+ <Source Value="../../../../../project_mutliloader/uploader_seek_publicweb.pas"/>
+ <Line Value="515"/>
+ </Item3>
+ <Item4>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="803"/>
+ </Item4>
+ <Item5>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="822"/>
+ </Item5>
+ <Item6>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="824"/>
+ </Item6>
+ <Item7>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="1492"/>
+ </Item7>
+ <Item8>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="1536"/>
+ </Item8>
+ <Item9>
+ <Source Value="../../../../../Common/aSpell/spellcheck_controlls.pas"/>
+ <Line Value="425"/>
+ </Item9>
+ <Item10>
+ <Source Value="../../../../../Common/aSpell/spellcheck_controlls.pas"/>
+ <Line Value="455"/>
+ </Item10>
+ <Item11>
+ <Source Value="../../../../../Common/aSpell/spellcheck_controlls.pas"/>
+ <Line Value="574"/>
+ </Item11>
+ <Item12>
+ <Source Value="../../../../../Common/aSpell/spellcheck_controlls.pas"/>
+ <Line Value="602"/>
+ </Item12>
+ <Item13>
+ <Source Value="../../../../../project_mutliloader/fmmultiloaderform.pas"/>
+ <Line Value="1621"/>
+ </Item13>
+ <Item15>
+ <Source Value="../../../../../project_SkyeDB/fmclient.pas"/>
+ <Line Value="986"/>
+ </Item15>
+ <Item16>
+ <Source Value="../../../../../project_SkyeDB/fmclient.pas"/>
+ <Line Value="2065"/>
+ </Item16>
+ <Item17>
+ <Source Value="../../../../../project_SkyeDB/fmclient.pas"/>
+ <Line Value="1541"/>
+ </Item17>
+ <Item18>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="741"/>
+ </Item18>
+ <Item19>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="1633"/>
+ </Item19>
+ <Item20>
+ <Source Value="../../../../../project_SkyeDB/fmclient.pas"/>
+ <Line Value="3554"/>
+ </Item20>
+ <Item21>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="5037"/>
+ </Item21>
+ <Item22>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="2994"/>
+ </Item22>
+ <Item23>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="564"/>
+ </Item23>
+ <Item24>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="549"/>
+ </Item24>
+ <Item25>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="438"/>
+ </Item25>
+ <Item26>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="436"/>
+ </Item26>
+ <Item27>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="5648"/>
+ </Item27>
+ <Item28>
+ <Source Value="../../../../../project_SkyeDB/fmcandidate.pas"/>
+ <Line Value="636"/>
+ </Item28>
+ <Item29>
+ <Source Value="../../../../../common/common/ConvertUnicode.pas"/>
+ <Line Value="83"/>
+ </Item29>
+ <Item30>
+ <Source Value="/usr/share/lazarus/components/uniqueinstance/uniqueinstance.pas"/>
+ <Line Value="124"/>
+ </Item30>
+ <Item31>
+ <Source Value="/usr/share/lazarus/components/uniqueinstance/uniqueinstance.pas"/>
+ <Line Value="112"/>
+ </Item31>
+ <Item32>
+ <Source Value="/usr/share/lazarus/components/uniqueinstance/uniqueinstance.pas"/>
+ <Line Value="174"/>
+ </Item32>
+ <Item33>
+ <Source Value="/usr/share/lazarus/components/uniqueinstance/uniqueinstance.pas"/>
+ <Line Value="199"/>
+ </Item33>
+ <Item34>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="800"/>
+ </Item34>
+ <Item35>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="798"/>
+ </Item35>
+ <Item36>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="778"/>
+ </Item36>
+ <Item37>
+ <Source Value="../../../../../common/asterisk/comManagerMessage.pas"/>
+ <Line Value="522"/>
+ </Item37>
+ </BreakPoints>
+ <Watches Count="6">
+ <Item1>
+ <Expression Value="edSearchSummry.text"/>
+ </Item1>
+ <Item2>
+ <Expression Value=" trim(edSearhSummary.text) "/>
+ </Item2>
+ <Item3>
+ <Expression Value="lData"/>
+ </Item3>
+ <Item4>
+ <Expression Value="ord(a)"/>
+ </Item4>
+ <Item5>
+ <Expression Value="lHTTP.headers.text"/>
+ </Item5>
+ <Item6>
+ <Expression Value="lSummaryContactName"/>
+ </Item6>
+ </Watches>
+ <Exceptions Count="2">
+ <Item1>
+ <Name Value="ECodetoolError"/>
+ </Item1>
+ <Item2>
+ <Name Value="EFOpenError"/>
+ </Item2>
+ </Exceptions>
+ </Debugging>
+</CONFIG>
diff --git a/src/UnitTests/test_libraries.lpr b/src/UnitTests/test_libraries.lpr
new file mode 100644
index 00000000..3e3ae380
--- /dev/null
+++ b/src/UnitTests/test_libraries.lpr
@@ -0,0 +1,31 @@
+program Test_Libraries;
+
+{$mode objfpc}{$H+}
+
+uses
+ Classes,
+ consoletestrunner,
+ TestSQLLite,
+ SQLite3 in '../lib/SQLite/SQLite3.pas',
+
+ SQLiteTable3 in '../lib/SQLite/SQLiteTable3.pas';
+
+type
+
+ { TLazTestRunner }
+
+ TMyTestRunner = class(TTestRunner)
+ protected
+ // override the protected methods of TTestRunner to customize its behavior
+ end;
+
+var
+ Application: TMyTestRunner;
+
+begin
+ Application := TMyTestRunner.Create(nil);
+ Application.Initialize;
+ Application.Title := 'FPCUnit Console test runner';
+ Application.Run;
+ Application.Free;
+end.
diff --git a/src/UnitTests/testsqllite.pas b/src/UnitTests/testsqllite.pas
new file mode 100644
index 00000000..b1b682d2
--- /dev/null
+++ b/src/UnitTests/testsqllite.pas
@@ -0,0 +1,84 @@
+unit TestSQLLite;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+ Classes, SysUtils, fpcunit, testutils, testregistry, SQLiteTable3, unix;
+
+type
+
+ TTest_SqlLite= class(TTestCase)
+ private
+ fSQLLite : TSQLiteDatabase;
+ fFileName : string;
+ protected
+ procedure SetUp; override;
+ procedure TearDown; override;
+ published
+ procedure Test_Random_TableExists;
+ procedure Test_Delete_NonExistant_Table;
+ procedure Test_TableExists_On_0Length_File;
+ end;
+
+implementation
+
+procedure TTest_SqlLite.Test_Random_TableExists;
+begin
+ deletefile( fFileName );
+ fSQLLite := TSQLiteDatabase.Create( fFileName );
+
+ // Test if some random table exists
+ check( not fSQLLite.TableExists( 'testTable'+floattostr(now()) ) , 'Randomly Named Table Should NOT Exists (In an empty database file)' );
+end;
+
+procedure TTest_SqlLite.Test_Delete_NonExistant_Table;
+var
+ lSQL : String;
+begin
+ deletefile( fFileName );
+ fSQLLite := TSQLiteDatabase.Create( fFileName );
+ try
+ lSQL := 'DROP TABLE testtable';
+ fSQLLite.execsql( lSQL );
+ except
+ exit;
+ end;
+
+ Fail('SQLLite did not except when trying to delete a non existant table' );
+end;
+
+procedure TTest_SqlLite.Test_TableExists_On_0Length_File;
+var
+ lSQL : String;
+begin
+ deletefile( fFileName );
+ shell('cat /dev/null > '+fFileName);
+
+ if not fileexists( fFileName ) then
+ Fail('0 Length file was not created... oops' );
+
+ fSQLLite := TSQLiteDatabase.Create( fFileName );
+
+ check( not fSQLLite.TableExists( 'testTable' ) , 'Randomly Named Table Should NOT Exists' );
+end;
+
+
+procedure TTest_SqlLite.SetUp;
+begin
+ fFileName := 'test.db';
+// fSQLLite := TSQLiteDatabase.Create( fFileName );
+end;
+
+
+procedure TTest_SqlLite.TearDown;
+begin
+ freeandnil( fSQLLite );
+end;
+
+initialization
+
+ RegisterTest(TTest_SqlLite);
+end.
+