toperator5.pp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. Program toperator5;
  2. uses ucomplex;
  3. const
  4. REAL_ONE = 14.0;
  5. REAL_TWO = 12.0;
  6. REAL_THREE = 1999.0;
  7. IM_ONE = 7.5;
  8. IM_TWO = 15.2;
  9. IM_THREE = 11.1;
  10. procedure fail;
  11. begin
  12. WriteLn('Failed!');
  13. Halt(1);
  14. end;
  15. procedure TestAssign;
  16. var
  17. j: real;
  18. z: complex;
  19. begin
  20. Write('Testing assignment operator...');
  21. j:=12.4;
  22. z:=j;
  23. if trunc(z.re) <> trunc(12.4) then
  24. fail;
  25. WriteLn('Success!');
  26. end;
  27. procedure TestComplexAdd;
  28. var
  29. i,j: complex;
  30. begin
  31. Write('Testing add operator...');
  32. i.re:=REAL_ONE;
  33. i.im:=IM_ONE;
  34. j.re:=REAL_TWO;
  35. j.im:=IM_TWO;
  36. i:=i + j;
  37. if trunc(i.re) <> trunc(REAL_ONE+REAL_TWO) then
  38. fail;
  39. if trunc(i.im) <> trunc(IM_ONE+IM_TWO) then
  40. fail;
  41. WriteLn('Success!');
  42. end;
  43. procedure TestComplexSubtract;
  44. var
  45. i,j: complex;
  46. begin
  47. Write('Testing subtract operator...');
  48. i.re:=REAL_ONE;
  49. i.im:=IM_ONE;
  50. j.re:=REAL_TWO;
  51. j.im:=IM_TWO;
  52. i:=i - j;
  53. if trunc(i.re) <> trunc(REAL_ONE-REAL_TWO) then
  54. fail;
  55. if trunc(i.im) <> trunc(IM_ONE-IM_TWO) then
  56. fail;
  57. WriteLn('Success!');
  58. end;
  59. procedure TestComplexMultiply;
  60. var
  61. i,j: complex;
  62. begin
  63. Write('Testing multiply operator...');
  64. i.re:=REAL_ONE;
  65. i.im:=IM_ONE;
  66. j.re:=REAL_TWO;
  67. j.im:=IM_TWO;
  68. i:=i * j;
  69. if trunc(i.re) <> trunc((REAL_ONE*REAL_TWO)-(IM_ONE*IM_TWO)) then
  70. fail;
  71. if trunc(i.im) <> trunc((IM_ONE*REAL_TWO) + (IM_TWO*REAL_ONE)) then
  72. fail;
  73. WriteLn('Success!');
  74. end;
  75. procedure TestComplexEqual;
  76. var
  77. i,j: complex;
  78. begin
  79. Write('Testing equality operator...');
  80. i.re:=REAL_ONE;
  81. i.im:=IM_ONE;
  82. j.re:=REAL_ONE;
  83. j.im:=IM_ONE;
  84. if not (i = j) then
  85. fail;
  86. WriteLn('Success!');
  87. end;
  88. procedure TestComplexNegate;
  89. var
  90. i : complex;
  91. begin
  92. Write('Testing negate operator...');
  93. i.re:=REAL_ONE;
  94. i.im:=IM_ONE;
  95. i:=-i;
  96. if trunc(i.re) <> trunc(-REAL_ONE) then
  97. fail;
  98. if trunc(i.im) <> trunc(-IM_ONE) then
  99. fail;
  100. WriteLn('Success!');
  101. end;
  102. Begin
  103. TestAssign;
  104. TestComplexAdd;
  105. TestComplexSubtract;
  106. TestComplexMultiply;
  107. TestComplexEqual;
  108. TestComplexNegate;
  109. end.
  110. {
  111. $Log$
  112. Revision 1.1 2002-09-08 11:54:23 carl
  113. * operator overloading interactive tests
  114. }