IPAddressForm.pas 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. { $HDR$}
  2. {**********************************************************************}
  3. { Unit archived using Team Coherence }
  4. { Team Coherence is Copyright 2002 by Quality Software Components }
  5. { }
  6. { For further information / comments, visit our WEB site at }
  7. { http://www.TeamCoherence.com }
  8. {**********************************************************************}
  9. {}
  10. { $Log: 21065: IPAddressForm.pas
  11. {
  12. { Rev 1.2 6/27/2003 01:21:26 PM JPMugaas
  13. { Added test for making dotted IPv4 addresses from various forms.
  14. }
  15. {
  16. { Rev 1.1 6/27/2003 04:35:02 AM JPMugaas
  17. { Added test for DWord to IPv4 address function.
  18. }
  19. {
  20. { Rev 1.0 6/26/2003 08:06:24 PM JPMugaas
  21. { New test for IPv4 conversion. The test converts from a dotted decimal
  22. { address to Hexidecimal, octal, and dword.
  23. }
  24. unit IPAddressForm;
  25. interface
  26. uses
  27. SysUtils, Classes, BXBubble;
  28. type
  29. TdmodIPAddressForm = class(TDataModule)
  30. bxIPAddressForm: TBXBubble;
  31. bxDWordToIPv4: TBXBubble;
  32. bxConvertToDottedIPv4: TBXBubble;
  33. procedure bxIPAddressFormTest(Sender: TBXBubble);
  34. procedure bxDWordToIPv4Test(Sender: TBXBubble);
  35. procedure bxConvertToDottedIPv4Test(Sender: TBXBubble);
  36. private
  37. { Private declarations }
  38. public
  39. { Public declarations }
  40. end;
  41. var
  42. dmodIPAddressForm: TdmodIPAddressForm;
  43. implementation
  44. uses IdCoreGlobal;
  45. {$R *.dfm}
  46. const
  47. IPTest1 = '206.191.158.55';
  48. IPHex1 = '0xCEBF9E37';
  49. IPDottedHex1 = '0xCE.0xBF.0x9E.0x37';
  50. IPOctal1 = '0316.0277.0236.067';
  51. IPDWord1 = 3468664375;
  52. IPTest2 = '127.0.0.1';
  53. IPHex2 = '0x7F000001';
  54. IPDottedHex2 = '0x7F.0x00.0x00.0x01';
  55. IPOctal2 = '0177.000.000.001';
  56. IPDWord2 = 2130706433;
  57. IPTest3 = '207.46.131.13';
  58. IPDWord3 = 031713501415;
  59. procedure TdmodIPAddressForm.bxIPAddressFormTest(Sender: TBXBubble);
  60. var LRes : String;
  61. LD : Cardinal;
  62. begin
  63. LRes := IPv4ToHex(IPTest1);
  64. bxIPAddressForm.Check( LRes =IPHex1 ,'IPv4ToHex('+IPTest1+') must equal '+IPHex1+': equals '+LRes);
  65. LRes := IPv4ToHex(IPTest1,True);
  66. bxIPAddressForm.Check( LRes=IPDottedHex1 ,'IPv4ToHex('+IPTest1+',True) must equal '+IPDottedHex1+': equals '+LRes);
  67. LRes := IPv4ToOctal(IPTest1);
  68. bxIPAddressForm.Check( LRes=IPOctal1 ,'IPv4ToOctal('+IPTest1+') must equal '+IPOctal1+': equals '+LRes);
  69. LD := IPv4ToDWord(IPTest1);
  70. bxIPAddressForm.Check( LD=IPDWord1 ,'IPv4ToDWord('+IPTest1+') must equal '+IntToStr(IPDWord1)+': equals '+IntToStr(LD));
  71. LRes := IPv4ToHex(IPTest2);
  72. bxIPAddressForm.Check( LRes =IPHex2 ,'IPv4ToHex('+IPTest2+') must equal '+IPHex2+': equals '+LRes);
  73. LRes := IPv4ToHex(IPTest2,True);
  74. bxIPAddressForm.Check( LRes=IPDottedHex2 ,'IPv4ToHex('+IPTest2+',True) must equal '+IPDottedHex2+': equals '+LRes);
  75. LRes := IPv4ToOctal(IPTest2);
  76. bxIPAddressForm.Check( LRes=IPOctal2 ,'IPv4ToOctal('+IPTest2+') must equal '+IPOctal2+': equals '+LRes);
  77. LD := IPv4ToDWord(IPTest2);
  78. bxIPAddressForm.Check( LD=IPDWord2 ,'IPv4ToDWord('+IPTest2+') must equal '+IntToStr(IPDWord2)+': equals '+IntToStr(LD));
  79. end;
  80. procedure TdmodIPAddressForm.bxDWordToIPv4Test(Sender: TBXBubble);
  81. var LRes : String;
  82. begin
  83. //MakeDWordIntoIPv4Address
  84. LRes := MakeDWordIntoIPv4Address(IPDWord1);
  85. bxDWordToIPv4.Check(LRes =IPTest1,'Must be '+IPTest1+' was '+LRes);
  86. LRes := MakeDWordIntoIPv4Address(IPDWord2);
  87. bxDWordToIPv4.Check(LRes =IPTest2,'Must be '+IPTest2+' was '+LRes);
  88. end;
  89. procedure TdmodIPAddressForm.bxConvertToDottedIPv4Test(Sender: TBXBubble);
  90. //These are based on
  91. //http://www.pc-help.org/obscure.htm
  92. const
  93. EXPECTED = '206.191.158.55';
  94. TEST1 = '3468664375';
  95. TEST2 = '7763631671';
  96. TEST3 = '16353566263';
  97. TEST4 = '235396898359';
  98. TEST5 = '0xCeBF9e37';
  99. TEST6 = '0x9A3F0800CEBF9E37';
  100. TEST7 = '0xCE.0xBF.0x9E.0x37';
  101. TEST8 = '0316.0277.0236.067';
  102. TEST9 = '00000000316.000277.00000236.00000000067';
  103. TEST10 = '0xCE.191.0236.0x37';
  104. TEST11 = '206.12557879';
  105. TEST12 = '206.191.40503';
  106. TEST13 = '0xCE.0xBF9E37';
  107. TEST14 = '0xCE.0xBF.0x9E37';
  108. TEST15 = '0316.057717067';
  109. TEST16 = '0316.0xBF9E37';
  110. TEST17 = '206.0277.0x9E37';
  111. var LRes : String;
  112. begin
  113. // DWord
  114. // 3468664375
  115. LRes := MakeCanonicalIPv4Address(TEST1);
  116. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST1+' Error: Got '+LRes+' Expected: '+EXPECTED );
  117. //7763631671
  118. LRes := MakeCanonicalIPv4Address(TEST2);
  119. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST2+' Error: Got '+LRes+' Expected: '+EXPECTED );
  120. //16353566263
  121. LRes := MakeCanonicalIPv4Address(TEST3);
  122. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST3+' Error: Got '+LRes+' Expected: '+EXPECTED );
  123. //235396898359
  124. LRes := MakeCanonicalIPv4Address(TEST4);
  125. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST4+' Error: Got '+LRes+' Expected: '+EXPECTED );
  126. //hexidecimal
  127. //0xCeBF9e37
  128. LRes := MakeCanonicalIPv4Address(TEST5);
  129. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST5+' Error: Got '+LRes+' Expected: '+EXPECTED );
  130. //0x9A3F0800CEBF9E37
  131. LRes := MakeCanonicalIPv4Address(TEST6);
  132. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST6+' Error: Got '+LRes+' Expected: '+EXPECTED );
  133. // 0xCE.0xBF.0x9E.0x37
  134. LRes := MakeCanonicalIPv4Address(TEST7);
  135. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST7+' Error: Got '+LRes+' Expected: '+EXPECTED );
  136. //octal
  137. //'0316.0277.0236.067'
  138. LRes := MakeCanonicalIPv4Address(TEST8);
  139. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST8+' Error: Got '+LRes+' Expected: '+EXPECTED );
  140. //00000000316.000277.00000236.00000000067
  141. LRes := MakeCanonicalIPv4Address(TEST8);
  142. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST8+' Error: Got '+LRes+' Expected: '+EXPECTED );
  143. //'00000000316.000277.00000236.00000000067'
  144. LRes := MakeCanonicalIPv4Address(TEST9);
  145. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST9+' Error: Got '+LRes+' Expected: '+EXPECTED );
  146. //mixed formats
  147. //hex, dec, oct, hex
  148. //0xCE.191.0236.0x37
  149. LRes := MakeCanonicalIPv4Address(TEST10);
  150. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST10+' Error: Got '+LRes+' Expected: '+EXPECTED );
  151. //206.12557879
  152. //dec and dword
  153. LRes := MakeCanonicalIPv4Address(TEST11);
  154. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST11+' Error: Got '+LRes+' Expected: '+EXPECTED );
  155. //206.191.40503
  156. //dec, dec, dword
  157. LRes := MakeCanonicalIPv4Address(TEST12);
  158. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST12+' Error: Got '+LRes+' Expected: '+EXPECTED );
  159. //0xCE.0xBF9E37
  160. //hex and hex
  161. LRes := MakeCanonicalIPv4Address(TEST13);
  162. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST13+' Error: Got '+LRes+' Expected: '+EXPECTED );
  163. //0xCE.0xBF.0x9E37
  164. //hex, hex, hex
  165. LRes := MakeCanonicalIPv4Address(TEST14);
  166. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST14+' Error: Got '+LRes+' Expected: '+EXPECTED );
  167. //0316.057717067
  168. //octal, octal
  169. LRes := MakeCanonicalIPv4Address(TEST15);
  170. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST15+' Error: Got '+LRes+' Expected: '+EXPECTED );
  171. //0316.0xBF9E37
  172. //octal, hex
  173. LRes := MakeCanonicalIPv4Address(TEST16);
  174. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST16+' Error: Got '+LRes+' Expected: '+EXPECTED );
  175. //206.0277.0x9E37
  176. //dec, octal, hex
  177. LRes := MakeCanonicalIPv4Address(TEST17);
  178. bxConvertToDottedIPv4.Check(LRes=EXPECTED,'From: '+TEST17+' Error: Got '+LRes+' Expected: '+EXPECTED );
  179. end;
  180. end.