tfpsock1.pp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. program addrtest;
  2. {$mode objfpc}{$H+}
  3. uses
  4. fpsockets;
  5. const
  6. IN4Val = '127.0.0.1';
  7. IN6Val = '132:42::1';
  8. IN6ValAlt = '132:42:0::1';
  9. Function TestIN4Addr: String;
  10. var
  11. Addr: TNetworkAddress;
  12. begin
  13. Result:='';
  14. Addr:=IN4Address(IN4Val);
  15. if (Addr.AddressType<>atIN4) or (Addr.Address<>IN4Val) then
  16. Exit('Error with IN4Address Constructor function');
  17. end;
  18. Function TestIN6Addr: String;
  19. var
  20. Addr: TNetworkAddress;
  21. begin
  22. Result:='';
  23. Addr:=IN6Address(IN6Val);
  24. if (Addr.AddressType<>atIN6) or (Addr.Address<>IN6Val) then
  25. Exit('Error with IN6Address Constructor function');
  26. end;
  27. Function TestAddrDispatch: String;
  28. var
  29. Addr: TNetworkAddress;
  30. begin
  31. Result:='';
  32. Addr:=INAddr(IN4Val);
  33. if (Addr.AddressType<>atIN4) or (Addr.Address<>IN4Val) then
  34. Exit('Error with INAddr Constructor function');
  35. Addr:=INAddr(IN6Val);
  36. if (Addr.AddressType<>atIN6) or (Addr.Address<>IN6Val) then
  37. Exit('Error with INAddr Constructor function');
  38. Addr:=IN4Val;
  39. if (Addr.AddressType<>atIN4) or (Addr.Address<>IN4Val) then
  40. Exit('Error with Address Assignment Operator');
  41. Addr:=IN6Val;
  42. if (Addr.AddressType<>atIN6) or (Addr.Address<>IN6Val) then
  43. Exit('Error with Address Assignment Operator');
  44. end;
  45. Function TestIN6Equality: String;
  46. var
  47. A1, A2: TNetworkAddress;
  48. begin
  49. Result:='';
  50. if not IN6Equal(IN6Val, IN6ValAlt) then
  51. Exit('IN6 Comparison failed');
  52. A1:=IN6Address(IN6Val);
  53. A2:=IN6Address(IN6ValAlt);
  54. if not (A1 = A2) then
  55. Exit('IN6 = Comparison failed');
  56. if A1 <> A2 then
  57. Exit('IN6 <> Comparison failed');
  58. end;
  59. Procedure DoTest(aTest,aResult : String);
  60. begin
  61. if aResult<>'' then
  62. begin
  63. writeln(aTest,' failed : ',aResult);
  64. Halt(1);
  65. end
  66. else
  67. Writeln(aTest,' OK.');
  68. end;
  69. begin
  70. DoTest('TestIN4Addr',TestIN4Addr);
  71. DoTest('TestIN6Addr',TestIN6Addr);
  72. DoTest('TestAddrDispatch',TestAddrDispatch);
  73. DoTest('TestIN6Equality',TestIN6Equality);
  74. end.