olaf c1d4d4127c Moved remotely 18 years ago
..
Core c1d4d4127c Moved remotely 18 years ago
Protocols c1d4d4127c Moved remotely 18 years ago
System c1d4d4127c Moved remotely 18 years ago
TestDUnit c1d4d4127c Moved remotely 18 years ago
TestDotNet c1d4d4127c Moved remotely 18 years ago
TestExample c1d4d4127c Moved remotely 18 years ago
IdRegisterTests.pas c1d4d4127c Moved remotely 18 years ago
ReadMe.txt c1d4d4127c Moved remotely 18 years ago

ReadMe.txt

UnitTests for Indy

---------------------------------
Priorities:

1) Keep It Simple

2) Do not couple to any specific unit test framework.
- use appropriate IdTest.pas units to plug into required framework.

Units are named IdTest*, so they can be easily searched/listed.
eg using UnitExpert (http://www.epocalipse.com/downloads.htm) ctrl-u, "idtest", lists all available test units.

---------------------------------
Guidelines for writing unit tests:

1) Assert() should not contain function calls. turning off assertions in compile options should not alter the functionality.

bad:
Assert(ReadLn='');

good:
aStr=ReadLn;
ASsert(aStr='');

2) test procedures should be have 'published' visibility (so win32 RTTI can be used to enumerate them) and be named starting with 'Test'.

public
//bad, won't be called
procedure WriteTest;
published
//good
procedure TestRead;

3) additional debug code should not be left in for 'release'.
(by default) data should not be written to the test pc, eg log files.

4) don't raise exceptions in except-blocks, causes memory leak in delphi


---------------------------------
ToDo:

add another layer to the component heirachy that defines the interface, eg virtual methods etc.
add Setup/TearDown virtuals.
add a mechanism for recording additional debug output.
add a mechanism for supplying tests with configuration settings, eg address/user/password for a live email server to test against. suggest just a name=value stringlist and a DoConfig(TStringList);virtual method.