PageRenderTime 112ms CodeModel.GetById 23ms RepoModel.GetById 0ms app.codeStats 0ms

/rpython/rlib/test/test_rjvm.py

https://bitbucket.org/unbit/pypy
Python | 44 lines | 37 code | 5 blank | 2 comment | 2 complexity | 8be9c2375ce82d8d754d58822ebce8e1 MD5 | raw file
Possible License(s): Apache-2.0
  1. import py
  2. py.test.skip('this is outdated. Check the jvm-improvements branch')
  3. try:
  4. import jpype
  5. except ImportError:
  6. py.test.skip("In Progress...")
  7. from rpython.rlib.rjvm import java, JavaWrapper, JavaClassWrapper, JavaInstanceWrapper, JavaMethodWrapper, JavaStaticMethodWrapper
  8. def test_static_method():
  9. assert isinstance(java.lang, JavaWrapper)
  10. assert isinstance(java.lang.Math, JavaClassWrapper)
  11. assert isinstance(java.lang.Math.abs, JavaStaticMethodWrapper)
  12. result = java.lang.Math.abs(-42)
  13. assert isinstance(result, int)
  14. assert result == 42
  15. def test_class_instantiate():
  16. al = java.util.ArrayList()
  17. assert isinstance(al, JavaInstanceWrapper)
  18. assert isinstance(al.add, JavaMethodWrapper)
  19. al.add("test")
  20. assert al.get(0) == "test"
  21. def test_reflection():
  22. py.test.skip('in progress')
  23. al_class = java.lang.Class.forName("java.util.ArrayList")
  24. assert isinstance(al_class, JavaInstanceWrapper)
  25. #meths = al_class.__javaclass__.getDeclaredMethods()
  26. constructors = al_class.getDeclaredConstructors()
  27. meths = al_class.getDeclaredMethods()
  28. al = constructors[0].newInstance([])
  29. al_org = java.util.ArrayList()
  30. assert isinstance(al, JavaInstanceWrapper)
  31. assert isinstance(al.add, JavaMethodWrapper)
  32. al_add = meths[2]
  33. assert isinstance(al_add, JavaInstanceWrapper)
  34. assert isinstance(al_add.invoke, JavaMethodWrapper)
  35. # This fail, but work on the command line
  36. al_add.invoke(al_org, ["Hello"])
  37. assert al_org[0] == "Hello"
  38. al_add.invoke(al, ["Hello"])
  39. assert al[0] == "Hello"