utcinifile.pp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. unit utcIniFile;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, punit, inifiles;
  6. procedure RegisterTests;
  7. implementation
  8. var
  9. Fini: TCustomIniFile;
  10. function Setup: TTestString;
  11. begin
  12. Result := '';
  13. if Assigned(Fini) then
  14. Fini.Free;
  15. Fini := nil;
  16. if FileExists('tmp.ini') then
  17. DeleteFile('tmp.ini');
  18. try
  19. Fini := TMemIniFile.Create('tmp.ini');
  20. except
  21. on E: Exception do
  22. Result := 'Setup failed: ' + E.Message;
  23. end;
  24. end;
  25. function TearDown: TTestString;
  26. begin
  27. Result := '';
  28. if Assigned(Fini) then
  29. Fini.Free;
  30. Fini := nil;
  31. if FileExists('tmp.ini') then
  32. DeleteFile('tmp.ini');
  33. end;
  34. function TIniFile_TestWriteBoolean: TTestString;
  35. begin
  36. Result := '';
  37. AssertNotNull('Ini object should be created', Fini);
  38. if not Assigned(Fini) then Exit;
  39. Fini.WriteBool('a','b',true);
  40. AssertEquals('Default true','1',Fini.ReadString('a','b',''));
  41. Fini.WriteBool('a','b',False);
  42. AssertEquals('Default false','0',Fini.ReadString('a','b',''));
  43. Fini.Options:=Fini.Options+[ifoWriteStringBoolean];
  44. Fini.WriteBool('a','b',true);
  45. AssertEquals('Default string true','true',Fini.ReadString('a','b',''));
  46. Fini.WriteBool('a','b',false);
  47. AssertEquals('Default string false','false',Fini.ReadString('a','b',''));
  48. Fini.SetBoolStringValues(true,['t','true']);
  49. Fini.WriteBool('a','b',true);
  50. AssertEquals('True from string array','t',Fini.ReadString('a','b',''));
  51. Fini.SetBoolStringValues(false,['f','false']);
  52. Fini.WriteBool('a','b',false);
  53. AssertEquals('False from string array','f',Fini.ReadString('a','b',''));
  54. end;
  55. function TIniFile_TestReadBoolean: TTestString;
  56. begin
  57. Result := '';
  58. AssertNotNull('Ini object should be created', Fini);
  59. if not Assigned(Fini) then Exit;
  60. Fini.WriteString('a','b','1');
  61. AssertEquals('Default true',true,Fini.ReadBool('a','b',False));
  62. Fini.WriteString('a','b','0');
  63. AssertEquals('Default false',false,Fini.ReadBool('a','b',True));
  64. Fini.WriteString('a','b','');
  65. AssertEquals('Empty returns Default ',true,Fini.ReadBool('a','b',true));
  66. Fini.SetBoolStringValues(true,['t','true']);
  67. Fini.WriteString('a','b','t');
  68. AssertEquals('First string match',true,Fini.ReadBool('a','b',false));
  69. Fini.WriteString('a','b','true');
  70. AssertEquals('Second string match',true,Fini.ReadBool('a','b',false));
  71. Fini.WriteString('a','b','d');
  72. AssertEquals('No string match, default',true,Fini.ReadBool('a','b',true));
  73. Fini.SetBoolStringValues(true,[]);
  74. Fini.SetBoolStringValues(false,['f','false']);
  75. Fini.WriteString('a','b','f');
  76. AssertEquals('First string match false',false,Fini.ReadBool('a','b',true));
  77. Fini.WriteString('a','b','false');
  78. AssertEquals('Second string match false',false,Fini.ReadBool('a','b',true));
  79. Fini.WriteString('a','b','d');
  80. AssertEquals('No string match, default false',false,Fini.ReadBool('a','b',false));
  81. Fini.SetBoolStringValues(true,['t','true']);
  82. AssertEquals('No string match, default false 2',false,Fini.ReadBool('a','b',false));
  83. Fini.SetBoolStringValues(true,[]);
  84. Fini.SetBoolStringValues(False,[]);
  85. Fini.Options:=Fini.Options+[ifoWriteStringBoolean];
  86. Fini.WriteString('a','b','true');
  87. AssertEquals('ifoWriteStringBoolean, true string ',True,Fini.ReadBool('a','b',false));
  88. Fini.WriteString('a','b','false');
  89. AssertEquals('ifoWriteStringBoolean, false string',false,Fini.ReadBool('a','b',true));
  90. Fini.WriteString('a','b','soso');
  91. AssertEquals('ifoWriteStringBoolean, No string match, default',True,Fini.ReadBool('a','b',true));
  92. end;
  93. procedure RegisterTests;
  94. begin
  95. AddSuite('TIniFileTests', @Setup, @TearDown, Nil, True);
  96. AddTest('TestWriteBoolean', @TIniFile_TestWriteBoolean, 'TIniFileTests');
  97. AddTest('TestReadBoolean', @TIniFile_TestReadBoolean, 'TIniFileTests');
  98. end;
  99. end.