tcxmlreg.pp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. DS : Integer;
  53. dt : TDataType;
  54. begin
  55. XMLReg.SetKey('a',True);
  56. S1:=StringOfChar('*',100);
  57. XMLReg.SetValueData('b',dtString,S1[1],Length(S1));
  58. XMLReg.Flush;
  59. DS:=SizeOf(S1) div 2;
  60. S2:=StringOfChar('*',DS);
  61. AssertEquals('Cannot read, buffer size too small',False,XMLReg.GetValueData('b',dt,S2[1],ds));
  62. AssertTrue('Correct data type reported',dt=dtString);
  63. AssertEquals('Correct data buffer size reported',Length(S1),DS);
  64. end;
  65. procedure TTestXMLRegistry.TestReadBufDataBinary;
  66. Var
  67. S1,S2 : Array of byte;
  68. I : Smallint;
  69. DS : Integer;
  70. dt : TDataType;
  71. begin
  72. XMLReg.SetKey('a',True);
  73. SetLength(S1,100);
  74. For I:=0 to 99 do
  75. S1[I]:=i;
  76. XMLReg.SetValueData('b',dtBinary,S1[1],Length(S1));
  77. XMLReg.Flush;
  78. DS:=SizeOf(S1) div 4;
  79. SetLength(S2,DS);
  80. For I:=0 to DS-1 do
  81. S2[I]:=i;
  82. AssertEquals('Cannot read, buffer size too small',False,XMLReg.GetValueData('b',dt,S2[1],ds));
  83. AssertTrue('Correct data type reported',dt=dtBinary);
  84. AssertEquals('Correct data buffer size reported',Length(S1),DS);
  85. end;
  86. begin
  87. RegisterTest(TTestXMLRegistry);
  88. end.