JavaClass.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. import org.freepascal.rtl.*;
  2. import org.freepascal.test.*;
  3. public class JavaClass
  4. {
  5. public static void main(String[] args) throws java.lang.Exception
  6. {
  7. TMyClass t = new TMyClass();
  8. tintfclass intfclass;
  9. tintfclass2 intfclass2;
  10. tinterface1 intf1;
  11. tinterface3 intf3;
  12. tinterface4 intf4;
  13. Object obj = new trec();
  14. System.out.println(((trec)obj).a);
  15. // check referencing a nested class
  16. tisclass1.tisclass1nested nestedclass = new tisclass1.tisclass1nested();
  17. System.out.println("t.test(10,8) should return 3: "+t.test(10,8));
  18. System.out.println("t.test(20,1) should return -1: "+t.test(20,1));
  19. t.setintfield(123);
  20. System.out.println("t.getintfield should return 123: "+t.getintfield());
  21. t.setstaticbytefield((byte)42);
  22. System.out.println("t.getstaticbytefield should return 42: "+t.getstaticbytefield());
  23. System.out.println("myrec.a should return 42: "+test.myrec.a);
  24. System.out.println("myrec.b should return 1234: "+test.myrec.b);
  25. System.out.println("TMyClass.rec.c should return 5678: "+TMyClass.rec.c);
  26. System.out.println("test.tcl should return 4: "+test.tcl);
  27. System.out.println("test.tcrec.a should return 1: "+test.tcrec.a);
  28. System.out.println("test.tcrec.e should return 5: "+test.tcrec.e);
  29. System.out.println("test.tcnestrec.r.d should return 4: "+test.tcnestrec.r.d);
  30. System.out.println("test.tcnestrec.r.arr[1] should return 6: "+test.tcnestrec.arr[1]);
  31. TMyClass.settestglobal(654321);
  32. System.out.println("TMyClass.gettestglobal should return 654321: "+TMyClass.gettestglobal());
  33. System.out.println("TMyClass.staticmul3(3) should return 9: "+TMyClass.staticmul3(3));
  34. System.out.println("testset should return 0: "+test.testset());
  35. System.out.println("testloop should return 0: "+test.testloop());
  36. System.out.println("testfloat should return 0: "+test.testfloat());
  37. System.out.println("testint2real should return 0: "+test.testint2real());
  38. System.out.println("testcnvint1 should return 0: "+test.testcnvint1());
  39. System.out.println("TestCmpListOneShort should return 0: "+test.TestCmpListOneShort());
  40. System.out.println("TestCmpListTwoShort should return 0: "+test.TestCmpListTwoShort());
  41. System.out.println("TestCmpListOneWord should return 0: "+test.TestCmpListOneWord());
  42. System.out.println("TestCmpListTwoWord should return 0: "+test.TestCmpListTwoWord());
  43. System.out.println("TestCmpListRangesOneShort should return 0: "+test.TestCmpListRangesOneShort());
  44. System.out.println("TestCmpListRangesTwoShort should return 0: "+test.TestCmpListRangesTwoShort());
  45. System.out.println("TestCmpListRangesOneWord should return 0: "+test.TestCmpListRangesOneWord());
  46. System.out.println("TestCmpListRangesTwoWord should return 0: "+test.TestCmpListRangesTwoWord());
  47. System.out.println("TestCmpListRangesThreeWord should return 0: "+test.TestCmpListRangesThreeWord());
  48. System.out.println("TestCmpListOneInt64 should return 0: "+test.TestCmpListOneInt64());
  49. System.out.println("TestCmpListTwoInt64 should return 0: "+test.TestCmpListTwoInt64());
  50. System.out.println("TestCmpListThreeInt64 should return 0: "+test.TestCmpListThreeInt64());
  51. System.out.println("TestCmpListRangesOneInt64 should return 0: "+test.TestCmpListRangesOneInt64());
  52. System.out.println("TestCmpListRangesTwoInt64 should return 0: "+test.TestCmpListRangesTwoInt64());
  53. System.out.println("testsqr should return 0: "+test.testsqr());
  54. System.out.println("testtrunc should return 0: "+test.testtrunc());
  55. System.out.println("testdynarr should return 0: "+test.testdynarr());
  56. System.out.println("testdynarr2 should return 0: "+test.testdynarr2());
  57. System.out.println("testbitcastintfloat should return 0: "+test.testbitcastintfloat());
  58. System.out.println("testis should return 0: "+test.testis());
  59. System.out.println("testneg should return 0: "+test.testneg());
  60. System.out.println("testtry1 should return 0: "+test.testtry1());
  61. System.out.println("testtry2 should return 0: "+test.testtry2());
  62. System.out.println("testtryfinally1 should return 0: "+test.testtryfinally1());
  63. System.out.println("testtryfinally2 should return 0: "+test.testtryfinally2());
  64. System.out.println("testtryfinally3 should return 0: "+test.testtryfinally3());
  65. System.out.println("testsmallarr1 should return 0: "+test.testsmallarr1());
  66. System.out.println("testsmallarr2 should return 0: "+test.testsmallarr2());
  67. System.out.println("testsmallarr3 should return 0: "+test.testsmallarr3());
  68. System.out.println("testsmallarr4 should return 0: "+test.testsmallarr4());
  69. System.out.println("testopenarr1 should return 0: "+test.testopenarr1());
  70. System.out.println("testopenarr2 should return 0: "+test.testopenarr2());
  71. System.out.println("testopenarr3 should return 0: "+test.testopenarr3());
  72. System.out.println("testopendynarr should return 0: "+test.testopendynarr());
  73. System.out.println("testrec1 should return 0: "+test.testrec1());
  74. System.out.println("testrec2 should return 0: "+test.testrec2());
  75. System.out.println("testopenarr1rec should return 0: "+test.testopenarr1rec());
  76. System.out.println("test.unitintconst should be 3: "+test.unitintconst);
  77. System.out.println("test.unitfloatconst should be 2.0: "+test.unitfloatconst);
  78. System.out.println("test.unitdoubleconst should be 0.1: "+test.unitdoubleconst);
  79. System.out.println("TMyclass.classintconst should be 4: "+TMyClass.classintconst);
  80. System.out.println("TMyclass.classfloatconst should be 3.0: "+TMyClass.classfloatconst);
  81. System.out.println();
  82. intfclass = new tintfclass();
  83. intf1 = intfclass;
  84. intfclass2 = new tintfclass2();
  85. System.out.println("intfclass.test(int) should return 10: "+intfclass.test(9));
  86. System.out.println("intf1.test(int) should return 10: "+intf1.test(9));
  87. System.out.println("intfclass.test(byte) should return 11: "+intfclass.test((byte)9));
  88. System.out.println("intfclass2.intf4test(int64) should return -2: "+intfclass2.intf4test((long)-12345*2-133));
  89. System.out.println("tinterface2.iconst should be 4: "+tinterface2.iconst);
  90. intfclass.Free();
  91. System.out.println(" *** Note: string tests expect that Java source file is compiled with '-encoding utf-8' and test is run with '-Dfile.encoding=UTF-8'");
  92. System.out.println("testunicodestring should return ~ê∂êºîƒ~©¬ -- ê = \u00ea ⊗ = \u2297: "+test.testunicodestring());
  93. System.out.println(" equal: "+test.testunicodestring().equals("~ê∂êºîƒ~©¬"));
  94. System.out.println("testunicodestring2 should return <\\\r\n\">: <"+test.testunicodestring2()+">");
  95. System.out.println(" equal: "+test.testunicodestring2().equals("\\\r\n\""));
  96. System.out.println("testunicodestring3 should return abcdef: "+test.testunicodestring3("abc"));
  97. System.out.println(" equal: "+test.testunicodestring3("abc").equals("abcdef"));
  98. System.out.println("testunicodestring4 should return ax2def: "+test.testunicodestring4("abcdef"));
  99. System.out.println(" equal: "+test.testunicodestring4("abcdef").equals("ax2def"));
  100. System.out.println("testunicodestring5 should return abcdefghij: "+test.testunicodestring5());
  101. System.out.println(" equal: "+test.testunicodestring5().equals("abcdefghij"));
  102. System.out.println("testunicodestring6 should return abcdefghi: "+test.testunicodestring6());
  103. System.out.println(" equal: "+test.testunicodestring6().equals("abcdefghi"));
  104. System.out.println("testunicodestring7 should return xbcdefghi: "+test.testunicodestring7());
  105. System.out.println(" equal: "+test.testunicodestring7().equals("xbcdefghi"));
  106. /* regular expression to transform numerical print statements into tests with exceptions:
  107. * search: System\.out\.println\(".*should (?:return|be) ([^:]*): "\+([^\r]*)\);
  108. * replace: if (\2 != \1)\r throw new Exception("Invalid result for \2");
  109. */
  110. if (t.test(10,8) != 3)
  111. throw new Exception("Invalid result for t.test(10,8)");
  112. if (t.test(20,1) != -1)
  113. throw new Exception("Invalid result for t.test(20,1)");
  114. if (t.getintfield() != 123)
  115. throw new Exception("Invalid result for t.getintfield()");
  116. if (t.getstaticbytefield() != 42)
  117. throw new Exception("Invalid result for t.getstaticbytefield()");
  118. if (test.myrec.a != 42)
  119. throw new Exception("Invalid result for test.myrec.a");
  120. if (test.myrec.b != 1234)
  121. throw new Exception("Invalid result for test.myrec.b");
  122. if (test.tcl != 4)
  123. throw new Exception("Invalid result for test.tcl");
  124. if (test.tcrec.a != 1)
  125. throw new Exception("Invalid result for test.tcrec.a");
  126. if (test.tcrec.e != 5)
  127. throw new Exception("Invalid result for test.tcrec.e");
  128. if (test.tcnestrec.r.d != 4)
  129. throw new Exception("Invalid result for test.tcnestrec.r.d");
  130. if (test.tcnestrec.arr[1] != 6)
  131. throw new Exception("Invalid result for test.tcnestrec.arr[1]");
  132. if (TMyClass.gettestglobal() != 654321)
  133. throw new Exception("Invalid result for TMyClass.gettestglobal()");
  134. if (TMyClass.staticmul3(3) != 9)
  135. throw new Exception("Invalid result for TMyClass.staticmul3(3)");
  136. if (test.testset() != 0)
  137. throw new Exception("Invalid result for test.testset()");
  138. if (test.testloop() != 0)
  139. throw new Exception("Invalid result for test.testloop()");
  140. if (test.testfloat() != 0)
  141. throw new Exception("Invalid result for test.testfloat()");
  142. if (test.testint2real() != 0)
  143. throw new Exception("Invalid result for test.testint2real()");
  144. if (test.testcnvint1() != 0)
  145. throw new Exception("Invalid result for test.testcnvint1()");
  146. if (test.TestCmpListOneShort() != 0)
  147. throw new Exception("Invalid result for test.TestCmpListOneShort()");
  148. if (test.TestCmpListTwoShort() != 0)
  149. throw new Exception("Invalid result for test.TestCmpListTwoShort()");
  150. if (test.TestCmpListOneWord() != 0)
  151. throw new Exception("Invalid result for test.TestCmpListOneWord()");
  152. if (test.TestCmpListTwoWord() != 0)
  153. throw new Exception("Invalid result for test.TestCmpListTwoWord()");
  154. if (test.TestCmpListRangesOneShort() != 0)
  155. throw new Exception("Invalid result for test.TestCmpListRangesOneShort()");
  156. if (test.TestCmpListRangesTwoShort() != 0)
  157. throw new Exception("Invalid result for test.TestCmpListRangesTwoShort()");
  158. if (test.TestCmpListRangesOneWord() != 0)
  159. throw new Exception("Invalid result for test.TestCmpListRangesOneWord()");
  160. if (test.TestCmpListRangesTwoWord() != 0)
  161. throw new Exception("Invalid result for test.TestCmpListRangesTwoWord()");
  162. if (test.TestCmpListRangesThreeWord() != 0)
  163. throw new Exception("Invalid result for test.TestCmpListRangesThreeWord()");
  164. if (test.TestCmpListOneInt64() != 0)
  165. throw new Exception("Invalid result for test.TestCmpListOneInt64()");
  166. if (test.TestCmpListTwoInt64() != 0)
  167. throw new Exception("Invalid result for test.TestCmpListTwoInt64()");
  168. if (test.TestCmpListThreeInt64() != 0)
  169. throw new Exception("Invalid result for test.TestCmpListThreeInt64()");
  170. if (test.TestCmpListRangesOneInt64() != 0)
  171. throw new Exception("Invalid result for test.TestCmpListRangesOneInt64()");
  172. if (test.TestCmpListRangesTwoInt64() != 0)
  173. throw new Exception("Invalid result for test.TestCmpListRangesTwoInt64()");
  174. if (test.testsqr() != 0)
  175. throw new Exception("Invalid result for test.testsqr()");
  176. if (test.testtrunc() != 0)
  177. throw new Exception("Invalid result for test.testtrunc()");
  178. if (test.testdynarr() != 0)
  179. throw new Exception("Invalid result for test.testdynarr()");
  180. if (test.testdynarr2() != 0)
  181. throw new Exception("Invalid result for test.testdynarr2()");
  182. if (test.testbitcastintfloat() != 0)
  183. throw new Exception("Invalid result for test.testbitcastintfloat()");
  184. if (test.testis() != 0)
  185. throw new Exception("Invalid result for test.testis()");
  186. if (test.testneg() != 0)
  187. throw new Exception("Invalid result for test.testneg()");
  188. if (test.testtry1() != 0)
  189. throw new Exception("Invalid result for test.testtry1()");
  190. if (test.testtry2() != 0)
  191. throw new Exception("Invalid result for test.testtry2()");
  192. if (test.testtryfinally1() != 0)
  193. throw new Exception("Invalid result for test.testtryfinally1()");
  194. if (test.testtryfinally2() != 0)
  195. throw new Exception("Invalid result for test.testtryfinally2()");
  196. if (test.testtryfinally3() != 0)
  197. throw new Exception("Invalid result for test.testtryfinally3()");
  198. if (test.testsmallarr1() != 0)
  199. throw new Exception("Invalid result for test.testsmallarr1()");
  200. if (test.testsmallarr2() != 0)
  201. throw new Exception("Invalid result for test.testsmallarr2()");
  202. if (test.testsmallarr3() != 0)
  203. throw new Exception("Invalid result for test.testsmallarr3()");
  204. if (test.testsmallarr4() != 0)
  205. throw new Exception("Invalid result for test.testsmallarr4()");
  206. if (test.testopenarr1() != 0)
  207. throw new Exception("Invalid result for test.testopenarr1()");
  208. if (test.testopenarr2() != 0)
  209. throw new Exception("Invalid result for test.testopenarr2()");
  210. if (test.testopenarr3() != 0)
  211. throw new Exception("Invalid result for test.testopenarr3()");
  212. if (test.testopendynarr() != 0)
  213. throw new Exception("Invalid result for test.testopendynarr()");
  214. if (test.unitintconst != 3)
  215. throw new Exception("Invalid result for test.unitintconst");
  216. if (test.unitfloatconst != 2.0)
  217. throw new Exception("Invalid result for test.unitfloatconst");
  218. if (test.unitdoubleconst != 0.1)
  219. throw new Exception("Invalid result for test.unitdoubleconst");
  220. if (TMyClass.classintconst != 4)
  221. throw new Exception("Invalid result for TMyClass.classintconst");
  222. if (TMyClass.classfloatconst != 3.0)
  223. throw new Exception("Invalid result for TMyClass.classfloatconst");
  224. if (TMyClass.classdoubleconst != 0.3)
  225. throw new Exception("Invalid result for TMyClass.classdoubleconst");
  226. if (intfclass.test(9) != 10)
  227. throw new Exception("Invalid result for intfclass.test(9)");
  228. if (intf1.test(9) != 10)
  229. throw new Exception("Invalid result for intf1.test(9)");
  230. if (intfclass.test((byte)9) != 11)
  231. throw new Exception("Invalid result for intfclass.test((byte)9)");
  232. if (intfclass2.intf4test((long)-12345*2-133) != -2)
  233. throw new Exception("Invalid result for intfclass2.intf4test((long)-12345*2-133)");
  234. if (tinterface2.iconst != 4)
  235. throw new Exception("Invalid result for tinterface2.iconst");
  236. if (test.testrec1() != 0)
  237. throw new Exception("Invalid result for test.testrec1()");
  238. if (test.testopenarr1rec() != 0)
  239. throw new Exception("Invalid result for test.testopenarr1rec()");
  240. if (test.testrec2() != 0)
  241. throw new Exception("Invalid result for test.testrec2()");
  242. }
  243. }