235 lines
5.0 KiB
ObjectPascal
235 lines
5.0 KiB
ObjectPascal
unit SettingsTest;
|
|
|
|
interface
|
|
uses
|
|
TestFramework,
|
|
X2UtConfig;
|
|
|
|
type
|
|
TSettingsTest = class(TTestCase)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; virtual; abstract;
|
|
published
|
|
procedure Read();
|
|
procedure Write();
|
|
procedure Delete();
|
|
procedure Save(); virtual; abstract;
|
|
end;
|
|
|
|
TSettingsINITest = class(TSettingsTest)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; override;
|
|
published
|
|
procedure Save(); override;
|
|
|
|
procedure StringRange();
|
|
procedure IntegerRange();
|
|
private
|
|
procedure FloatRange();
|
|
end;
|
|
|
|
TSettingsRegistryTest = class(TSettingsTest)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; override;
|
|
end;
|
|
|
|
TSettingsXMLTest = class(TSettingsTest)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; override;
|
|
end;
|
|
|
|
TSettingsNiniXMLTest = class(TSettingsTest)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; override;
|
|
end;
|
|
|
|
TSettingsCmdLineTest = class(TSettingsTest)
|
|
protected
|
|
function CreateSource(): IX2ConfigSource; override;
|
|
end;
|
|
|
|
implementation
|
|
uses
|
|
Classes,
|
|
SysUtils,
|
|
|
|
madExcept,
|
|
|
|
X2UtConfigIni,
|
|
X2UtConfigRanges;
|
|
|
|
{ TSettingsINITest }
|
|
function TSettingsINITest.CreateSource(): IX2ConfigSource;
|
|
var
|
|
ssData: TStringStream;
|
|
|
|
begin
|
|
ssData := TStringStream.Create('[ReadTest]'#13#10 +
|
|
'SomeKey=SomeValue');
|
|
try
|
|
Result := TX2IniConfigSource.Create(ssData);
|
|
finally
|
|
FreeAndNil(ssData);
|
|
end;
|
|
end;
|
|
|
|
procedure TSettingsINITest.Save;
|
|
var
|
|
ssData: TStringStream;
|
|
|
|
begin
|
|
ssData := TStringStream.Create('');
|
|
try
|
|
with CreateSource() do
|
|
begin
|
|
with Configs('SaveTest') do
|
|
begin
|
|
Write('String', 'Test');
|
|
Write('Integer', 5);
|
|
Write('Float', 3.5);
|
|
Write('Boolean', True);
|
|
end;
|
|
|
|
Save(ssData);
|
|
end;
|
|
|
|
ssData.Seek(0, soFromBeginning);
|
|
with (TX2IniConfigSource.Create(ssData) as IX2ConfigSource) do
|
|
begin
|
|
CheckTrue(Exists('ReadTest'), 'ReadTest not found');
|
|
CheckTrue(Exists('SaveTest'), 'SaveTest not found');
|
|
|
|
with Configs('ReadTest') do
|
|
CheckTrue(Exists('SomeKey'), 'ReadTest.SomeKey not found');
|
|
|
|
with Configs('SaveTest') do
|
|
begin
|
|
CheckTrue(Exists('String'), 'SaveTest.String not found');
|
|
CheckTrue(Exists('Integer'), 'SaveTest.Integer not found');
|
|
CheckTrue(Exists('Float'), 'SaveTest.Float not found');
|
|
CheckTrue(Exists('Boolean'), 'SaveTest.Boolean not found');
|
|
end;
|
|
end;
|
|
finally
|
|
FreeAndNil(ssData);
|
|
end;
|
|
end;
|
|
|
|
procedure TSettingsINITest.StringRange;
|
|
begin
|
|
with CreateSource() do
|
|
begin
|
|
Register('RangeTest', 'String').Attach(TX2ConfigStringLengthRange.Create(5, 5, '0', spLeft));
|
|
|
|
with Configs('RangeTest') do
|
|
begin
|
|
Write('String', '1');
|
|
CheckEquals('00001', Read('String'));
|
|
|
|
Write('String', '1234567890');
|
|
CheckEquals('12345', Read('String'));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSettingsINITest.IntegerRange;
|
|
begin
|
|
with CreateSource() do
|
|
begin
|
|
Register('RangeTest', 'Integer').Attach(TX2ConfigIntegerRange.Create(5, 10, 8));
|
|
|
|
with Configs('RangeTest') do
|
|
begin
|
|
Write('String', '1');
|
|
CheckEquals('00001', Read('String'));
|
|
|
|
Write('String', '1234567890');
|
|
CheckEquals('12345', Read('String'));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSettingsINITest.FloatRange;
|
|
begin
|
|
|
|
end;
|
|
|
|
|
|
{ TSettingsRegistryTest }
|
|
function TSettingsRegistryTest.CreateSource(): IX2ConfigSource;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TSettingsXMLTest }
|
|
function TSettingsXMLTest.CreateSource(): IX2ConfigSource;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TSettingsNiniXMLTest }
|
|
function TSettingsNiniXMLTest.CreateSource(): IX2ConfigSource;
|
|
begin
|
|
|
|
end;
|
|
|
|
{ TSettingsCmdLineTest }
|
|
function TSettingsCmdLineTest.CreateSource(): IX2ConfigSource;
|
|
begin
|
|
|
|
end;
|
|
|
|
|
|
{ TSettingsTest }
|
|
procedure TSettingsTest.Read;
|
|
begin
|
|
with CreateSource() do
|
|
CheckEquals('SomeValue', Configs('ReadTest').Read('SomeKey'));
|
|
end;
|
|
|
|
procedure TSettingsTest.Write;
|
|
begin
|
|
with CreateSource() do
|
|
begin
|
|
with Configs('WriteTest') do
|
|
begin
|
|
Write('NewKey', 255);
|
|
CheckEquals(255, Read('NewKey'));
|
|
end;
|
|
|
|
with Configs('ReadTest') do
|
|
begin
|
|
Write('SomeKey', 'NewValue');
|
|
CheckEquals('NewValue', Read('SomeKey'));
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TSettingsTest.Delete;
|
|
begin
|
|
with CreateSource() do
|
|
begin
|
|
with Configs('DeleteTest') do
|
|
begin
|
|
Write('SomeKey', 'SomeValue');
|
|
Delete('SomeKey');
|
|
CheckFalse(Exists('SomeKey'));
|
|
end;
|
|
|
|
Delete('DeleteTest');
|
|
CheckFalse(Exists('DeleteTest'));
|
|
end;
|
|
end;
|
|
|
|
|
|
initialization
|
|
RegisterTest('Settings', TSettingsINITest.Suite);
|
|
{
|
|
RegisterTest('Settings', TSettingsRegistryTest.Suite);
|
|
RegisterTest('Settings', TSettingsXMLTest.Suite);
|
|
RegisterTest('Settings', TSettingsNiniXMLTest.Suite);
|
|
RegisterTest('Settings', TSettingsCmdLineTest.Suite);
|
|
}
|
|
|
|
end.
|