tmath2.pp 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. Program TestCardinal;
  2. { Tests different features of the cardinal type }
  3. { We must also test range checking thereafter }
  4. Procedure TestEqualAssign;
  5. var
  6. l : longint;
  7. i : cardinal;
  8. j : cardinal;
  9. Begin
  10. l:=$80000000; { longint }
  11. i:=l; { longint -> cardinal }
  12. j:=i; { cardinal -> cardinal }
  13. l:=j; { cardinal -> longint }
  14. end;
  15. Procedure TestBiggerAssign;
  16. var
  17. b: byte;
  18. c: char;
  19. s: shortint;
  20. i: integer;
  21. w: word;
  22. j: cardinal;
  23. Begin
  24. b:=0;
  25. c:=#$7f;
  26. s:=120;
  27. i:=16384;
  28. w:=32767;
  29. j:=b; { byte -> cardinal }
  30. { THIS LINE CRASHES THE COMPILER FPC v0.99.5a }
  31. { j:=c;} { char -> cardinal }
  32. j:=ord(c);{ char -> cardinal }
  33. j:=s; { shortint -> cardinal }
  34. j:=i; { integer -> cardinal }
  35. j:=w; { word -> cardinal }
  36. end;
  37. Procedure TestSmallerAssign;
  38. var
  39. b: byte;
  40. c: char;
  41. s: shortint;
  42. i: integer;
  43. w: word;
  44. j: cardinal;
  45. Begin
  46. j:=$ffffffff;
  47. b:=byte(j);
  48. c:=char(j);
  49. s:=shortint(j);
  50. i:=integer(j);
  51. w:=word(j);
  52. end;
  53. Procedure TestMul;
  54. var
  55. j: cardinal;
  56. k: cardinal;
  57. Begin
  58. j:=1;
  59. k:=$8000000;
  60. j:=j*16384;
  61. j:=j*k
  62. end;
  63. Procedure TestDiv;
  64. var
  65. j: cardinal;
  66. k: cardinal;
  67. Begin
  68. j:=1;
  69. k:=$8000000;
  70. j:=j div 16384;
  71. j:=j div k;
  72. k:=k mod 200;
  73. end;
  74. Procedure TestAdd;
  75. Begin
  76. end;
  77. Procedure TestSub;
  78. Begin
  79. end;
  80. Begin
  81. TestEqualAssign;
  82. TestBiggerAssign;
  83. TestSmallerAssign;
  84. TestMul;
  85. TestDiv;
  86. end.