tcxmlreg.pp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. unit tcxmlreg;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. fpcunit, testutils, testregistry, testdecorator, Classes, SysUtils, xmlreg;
  6. Type
  7. { TTestXMLRegistry }
  8. TTestXMLRegistry = Class(TTestCase)
  9. private
  10. FXMLReg: TXmlRegistry;
  11. Protected
  12. Procedure Setup; override;
  13. Procedure TearDown; override;
  14. Property XMLReg : TXmlRegistry Read FXMLReg;
  15. Published
  16. Procedure TestReadBufDataDWord;
  17. Procedure TestReadBufDataString;
  18. Procedure TestReadBufDataBinary;
  19. end;
  20. implementation
  21. { TTestXMLRegistry }
  22. procedure TTestXMLRegistry.Setup;
  23. begin
  24. inherited Setup;
  25. DeleteFile('test.xml');
  26. FXMLReg:=TXmlRegistry.Create('test.xml');
  27. end;
  28. procedure TTestXMLRegistry.TearDown;
  29. begin
  30. FreeAndNil(FXMLReg);
  31. inherited TearDown;
  32. end;
  33. procedure TTestXMLRegistry.TestReadBufDataDWord;
  34. Var
  35. C : Cardinal;
  36. I : Smallint;
  37. DS : Integer;
  38. dt : TDataType;
  39. begin
  40. XMLReg.SetKey('a',True);
  41. C:=123456;
  42. XMLReg.SetValueData('b',dtDWORD,C,SizeOf(C));
  43. XMLReg.Flush;
  44. DS:=SizeOf(SmallInt);
  45. AssertEquals('Cannot read, buffer size too small',False,XMLReg.GetValueData('b',dt,I,ds));
  46. AssertTrue('Correct data type reported',dt=dtDWord);
  47. AssertEquals('Correct data buffer size reported',SizeOf(C),DS);
  48. end;
  49. procedure TTestXMLRegistry.TestReadBufDataString;
  50. Var
  51. S1,S2 : String;
  52. I : Smallint;
  53. DS : Integer;
  54. dt : TDataType;
  55. begin
  56. XMLReg.SetKey('a',True);
  57. S1:=StringOfChar('*',100);
  58. XMLReg.SetValueData('b',dtString,S1[1],Length(S1));
  59. XMLReg.Flush;
  60. DS:=SizeOf(S1) div 2;
  61. S2:=StringOfChar('*',DS);
  62. AssertEquals('Cannot read, buffer size too small',False,XMLReg.GetValueData('b',dt,S2[1],ds));
  63. AssertTrue('Correct data type reported',dt=dtString);
  64. AssertEquals('Correct data buffer size reported',Length(S1),DS);
  65. end;
  66. procedure TTestXMLRegistry.TestReadBufDataBinary;
  67. Var
  68. S1,S2 : Array of byte;
  69. I : Smallint;
  70. DS : Integer;
  71. dt : TDataType;
  72. begin
  73. XMLReg.SetKey('a',True);
  74. SetLength(S1,100);
  75. For I:=0 to 99 do
  76. S1[I]:=i;
  77. XMLReg.SetValueData('b',dtBinary,S1[1],Length(S1));
  78. XMLReg.Flush;
  79. DS:=SizeOf(S1) div 4;
  80. SetLength(S2,DS);
  81. For I:=0 to DS-1 do
  82. S2[I]:=i;
  83. AssertEquals('Cannot read, buffer size too small',False,XMLReg.GetValueData('b',dt,S2[1],ds));
  84. AssertTrue('Correct data type reported',dt=dtBinary);
  85. AssertEquals('Correct data buffer size reported',Length(S1),DS);
  86. end;
  87. begin
  88. RegisterTest(TTestXMLRegistry);
  89. end.