toperator5.pp 2.7 KB

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