javaclass 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (175) hide show
  1. data/Rakefile +67 -56
  2. data/Readme.txt +42 -39
  3. data/example_task.rb +172 -0
  4. data/examples/check_interface_names.rb +44 -0
  5. data/examples/corpus.rb +19 -0
  6. data/examples/count_classes_in_modules.rb +38 -0
  7. data/examples/cumulative_dependencies.rb +39 -0
  8. data/examples/find_all_imported_types.rb +44 -0
  9. data/examples/find_referenced_modules.rb +53 -0
  10. data/examples/find_unreferenced_classes.rb +65 -0
  11. data/examples/generate_class_lists.rb +67 -43
  12. data/examples/profiler_scratchpad.rb +33 -0
  13. data/examples/simple_usage.rb +42 -0
  14. data/history.txt +29 -7
  15. data/javaclass.gemspec +31 -0
  16. data/lib/javaclass/adder_tree.rb +92 -0
  17. data/lib/javaclass/analyse/dependencies.rb +52 -0
  18. data/lib/javaclass/{metric/metrics.txt → analyse/ideas.txt} +2 -2
  19. data/lib/javaclass/analyse/transitive_dependencies.rb +52 -0
  20. data/lib/javaclass/classfile/access_flag_constants.rb +24 -0
  21. data/lib/javaclass/classfile/access_flags.rb +49 -26
  22. data/lib/javaclass/classfile/class_format_error.rb +37 -0
  23. data/lib/javaclass/classfile/class_magic.rb +16 -8
  24. data/lib/javaclass/classfile/class_version.rb +19 -25
  25. data/lib/javaclass/classfile/constant_pool.rb +110 -45
  26. data/lib/javaclass/classfile/constants/base.rb +33 -12
  27. data/lib/javaclass/classfile/constants/double_reference.rb +55 -41
  28. data/lib/javaclass/classfile/constants/single_reference.rb +29 -21
  29. data/lib/javaclass/classfile/constants/value.rb +43 -33
  30. data/lib/javaclass/classfile/java_class_header.rb +72 -46
  31. data/lib/javaclass/classfile/java_class_header_as_java_name.rb +33 -0
  32. data/lib/javaclass/classfile/java_class_header_shortcuts.rb +19 -0
  33. data/lib/javaclass/classfile/references.rb +21 -19
  34. data/lib/javaclass/classlist/class_entry.rb +26 -27
  35. data/lib/javaclass/classlist/jar_searcher.rb +34 -25
  36. data/lib/javaclass/classlist/list.rb +31 -31
  37. data/lib/javaclass/classlist/package_entry.rb +25 -24
  38. data/lib/javaclass/classpath/any_classpath.rb +48 -0
  39. data/lib/javaclass/classpath/class_not_found_error.rb +20 -0
  40. data/lib/javaclass/classpath/classpaths.txt +2 -2
  41. data/lib/javaclass/classpath/composite_classpath.rb +56 -54
  42. data/lib/javaclass/classpath/convention_classpath.rb +38 -0
  43. data/lib/javaclass/classpath/eclipse_classpath.rb +74 -0
  44. data/lib/javaclass/classpath/factory.rb +65 -0
  45. data/lib/javaclass/classpath/file_classpath.rb +47 -0
  46. data/lib/javaclass/classpath/folder_classpath.rb +42 -44
  47. data/lib/javaclass/classpath/jar_classpath.rb +91 -52
  48. data/lib/javaclass/classpath/java_home_classpath.rb +24 -13
  49. data/lib/javaclass/classpath/maven_classpath.rb +44 -0
  50. data/lib/javaclass/classpath/temporary_unpacker.rb +111 -0
  51. data/lib/javaclass/classpath/tracking_classpath.rb +144 -0
  52. data/lib/javaclass/classscanner/ideas.txt +3 -0
  53. data/lib/javaclass/classscanner/imported_types.rb +29 -0
  54. data/lib/javaclass/classscanner/scanners.rb +29 -0
  55. data/lib/javaclass/delegate_directive.rb +15 -0
  56. data/lib/javaclass/dsl/caching_classpath.rb +38 -0
  57. data/lib/javaclass/dsl/classpath_analysers.rb +27 -0
  58. data/lib/javaclass/dsl/java_name_factory.rb +79 -0
  59. data/lib/javaclass/dsl/loader.rb +42 -0
  60. data/lib/javaclass/dsl/loading_classpath.rb +53 -0
  61. data/lib/javaclass/dsl/mixin.rb +54 -0
  62. data/lib/javaclass/gems/zip_file.rb +154 -0
  63. data/lib/javaclass/java_language.rb +50 -0
  64. data/lib/javaclass/java_name.rb +329 -55
  65. data/lib/javaclass/java_name_scanner.rb +95 -0
  66. data/lib/javaclass/resources/iso_3166_countries.txt +240 -0
  67. data/lib/javaclass/resources/jdk0_packages.txt +6 -0
  68. data/lib/javaclass/resources/jdk1_packages.txt +6 -0
  69. data/lib/javaclass/resources/jdk2_packages.txt +4 -0
  70. data/lib/javaclass/resources/jdk3_packages.txt +6 -0
  71. data/lib/javaclass/resources/jdk4_packages.txt +22 -0
  72. data/lib/javaclass/resources/jdk5_packages.txt +5 -0
  73. data/lib/javaclass/resources/jdk6_packages.txt +7 -0
  74. data/lib/javaclass/resources/jdk7_packages.txt +0 -0
  75. data/lib/javaclass/resources/jdk_packages.txt +53 -0
  76. data/lib/javaclass/resources/reserved_words.txt +50 -0
  77. data/lib/javaclass/string_hexdump.rb +76 -0
  78. data/lib/javaclass/string_ux.rb +21 -10
  79. data/lib/javaclass.rb +16 -41
  80. data/license.txt +28 -0
  81. data/planned.txt +13 -0
  82. data/test/data/Object_102.class +0 -0
  83. data/test/data/Runnable_102.class +0 -0
  84. data/test/data/access_flags/AccessFlagsTestAnnotation.class +0 -0
  85. data/test/data/access_flags/AccessFlagsTestAnnotation.java +3 -0
  86. data/test/data/access_flags/AccessFlagsTestEnum$1.class +0 -0
  87. data/test/data/access_flags/AccessFlagsTestEnum.class +0 -0
  88. data/test/data/access_flags/AccessFlagsTestEnum.java +6 -0
  89. data/test/data/access_flags/AccessFlagsTestInner$1.class +0 -0
  90. data/test/data/access_flags/AccessFlagsTestInner$2.class +0 -0
  91. data/test/data/access_flags/AccessFlagsTestInner.class +0 -0
  92. data/test/data/access_flags/AccessFlagsTestInner.java +13 -0
  93. data/test/data/access_flags/AccessFlagsTestPackage.class +0 -0
  94. data/test/data/access_flags/AccessFlagsTestPackage.java +1 -1
  95. data/test/data/api/packagename/AccessFlagsTestPublic.class +0 -0
  96. data/test/data/class_version/ClassVersionTest17.class +0 -0
  97. data/test/data/class_version/make.bat +6 -2
  98. data/test/data/eclipse_classpath/classes/ClassVersionTest12.class +0 -0
  99. data/test/data/eclipse_classpath/lib/JarClasspathTest.jar +0 -0
  100. data/test/data/eclipse_classpath/test-classes/ClassVersionTest13.class +0 -0
  101. data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/ClassVersionTest10.class +0 -0
  102. data/test/data/folder_classpath/{JarClasspathTestFolder → classes}/package/ClassVersionTest11.class +0 -0
  103. data/test/data/jar_classpath/JarClasspathTest.jar +0 -0
  104. data/test/data/jar_classpath/JarClasspathTest.zip +0 -0
  105. data/test/data/jar_classpath/JarClasspathTestManifest.jar +0 -0
  106. data/test/data/jar_classpath/JarClasspathTestMultiManifest.jar +0 -0
  107. data/test/data/jar_classpath/make.bat +6 -2
  108. data/test/data/jar_searcher/BrokenRunnable_102.class +0 -0
  109. data/test/data/java_home_classpath/jdk118/lib/classes.zip +0 -0
  110. data/test/data/java_name_scanner/META-INF/MANIFEST.MF +12 -0
  111. data/test/data/java_name_scanner/plugin.xml +18 -0
  112. data/test/data/maven_classpath/module/pom.xml +8 -0
  113. data/test/data/maven_classpath/module/target/classes/ClassVersionTest12.class +0 -0
  114. data/test/data/maven_classpath/pom.xml +8 -0
  115. data/test/data/maven_classpath/target/classes/ClassVersionTest10.class +0 -0
  116. data/test/data/maven_classpath/target/test-classes/ClassVersionTest11.class +0 -0
  117. data/test/data/transitive_dependencies/A.class +0 -0
  118. data/test/data/transitive_dependencies/A.java +5 -0
  119. data/test/data/transitive_dependencies/B.class +0 -0
  120. data/test/data/transitive_dependencies/B.java +3 -0
  121. data/test/data/transitive_dependencies/C.class +0 -0
  122. data/test/data/transitive_dependencies/C.java +3 -0
  123. data/test/data/transitive_dependencies/Start.class +0 -0
  124. data/test/data/transitive_dependencies/Start.java +4 -0
  125. data/test/data/transitive_dependencies/make.bat +3 -0
  126. data/test/data/zip_file/commons-math-2.2-broken.zip +0 -0
  127. data/test/data/zip_file/regenerated-with-7zip.zip +0 -0
  128. data/test/data/zip_file/regenerated-with-jar.zip +0 -0
  129. data/test/dot_classpath.rb +33 -0
  130. data/test/logging_folder_classpath.rb +19 -0
  131. data/test/setup.rb +1 -1
  132. data/test/test_access_flags.rb +58 -32
  133. data/test/test_adder_tree.rb +78 -0
  134. data/test/test_any_classpath.rb +39 -0
  135. data/test/test_base.rb +9 -7
  136. data/test/test_caching_classpath.rb +41 -0
  137. data/test/test_class_entry.rb +60 -60
  138. data/test/test_class_magic.rb +31 -0
  139. data/test/test_class_version.rb +25 -25
  140. data/test/test_composite_classpath.rb +22 -23
  141. data/test/test_constant_pool.rb +37 -13
  142. data/test/test_convention_classpath.rb +39 -0
  143. data/test/test_eclipse_classpath.rb +73 -0
  144. data/test/test_factory.rb +61 -0
  145. data/test/test_folder_classpath.rb +26 -10
  146. data/test/test_imported_types.rb +34 -0
  147. data/test/test_jar_classpath.rb +29 -14
  148. data/test/test_jar_searcher.rb +27 -14
  149. data/test/test_java_class_header.rb +22 -10
  150. data/test/test_java_class_header_as_java_name.rb +41 -0
  151. data/test/test_java_home_classpath.rb +17 -11
  152. data/test/test_java_name.rb +204 -64
  153. data/test/test_java_name_factory.rb +52 -0
  154. data/test/test_java_name_scanner.rb +24 -0
  155. data/test/test_javaclass_api.rb +43 -0
  156. data/test/test_list.rb +58 -44
  157. data/test/test_load_directive.rb +34 -0
  158. data/test/test_maven_classpath.rb +46 -0
  159. data/test/test_package_entry.rb +27 -22
  160. data/test/test_references.rb +14 -14
  161. data/test/test_string_hexdump.rb +24 -0
  162. data/test/test_string_ux.rb +18 -106
  163. data/test/test_tracking_classpath.rb +112 -0
  164. data/test/test_transitive_dependencies.rb +31 -0
  165. data/test/test_unpacking_jar_classpath.rb +43 -0
  166. data/test/test_zip_file.rb +33 -0
  167. data/test/ts_all_tests.rb +80 -18
  168. data/thanks.txt +2 -0
  169. metadata +151 -22
  170. data/lib/javaclass/classpath/port_ClassPathEntry.java +0 -202
  171. data/lib/javaclass/classpath/port_ClassPathEntryFactory.java +0 -311
  172. data/lib/javaclass/classpath/port_DirectoryRepository.java +0 -24
  173. data/lib/javaclass/metric/ccd.rb +0 -68
  174. data/lib/javaclass/metric/class_usage.rb +0 -41
  175. data/test/test_javaclass.rb +0 -22
@@ -1,3 +1,3 @@
1
1
  package packagename;
2
2
 
3
- class AccessFlagsTestPackage { }
3
+ class AccessFlagsTestPackage implements AccessFlagsTestInterface { }
@@ -3,11 +3,11 @@ if exist ClassVersionTest*.class del ClassVersionTest*.class
3
3
  setlocal
4
4
 
5
5
  call profile102
6
- javac -classpath %CLASSPATH% ClassVersionTest.java
6
+ javac -classpath "%CLASSPATH%" ClassVersionTest.java
7
7
  ren ClassVersionTest.class ClassVersionTest10.class
8
8
 
9
9
  call profile118
10
- javac -classpath %CLASSPATH% ClassVersionTest.java
10
+ javac -classpath "%CLASSPATH%" ClassVersionTest.java
11
11
  ren ClassVersionTest.class ClassVersionTest11.class
12
12
 
13
13
  call profile122
@@ -30,6 +30,10 @@ call profile160
30
30
  javac ClassVersionTest.java
31
31
  ren ClassVersionTest.class ClassVersionTest16.class
32
32
 
33
+ call profile170
34
+ javac ClassVersionTest.java
35
+ ren ClassVersionTest.class ClassVersionTest17.class
36
+
33
37
  endlocal
34
38
 
35
39
  pause
@@ -3,12 +3,13 @@ if exist JarClasspathTest*.* del JarClasspathTest*.*
3
3
  md JarClasspathTestFolder\package
4
4
  copy ..\class_version\ClassVersionTest10.class JarClasspathTestFolder
5
5
  copy ..\class_version\ClassVersionTest11.class JarClasspathTestFolder\package
6
+ copy ..\class_version\ClassVersionTest11.class .
6
7
 
7
8
  cd JarClasspathTestFolder
8
9
  jar -cf ..\JarClasspathTest.jar .
9
- cd ..
10
10
 
11
- call winzip -a JarClasspathTest.zip ClassVersionTest10.class
11
+ call 7za a -bd -tzip ..\JarClasspathTest.zip ClassVersionTest10.class
12
+ cd ..
12
13
 
13
14
  echo Class-Path: JarClasspathTest.jar > manifest.txt
14
15
  jar -cfm JarClasspathTestManifest.jar manifest.txt ClassVersionTest11.class
@@ -21,4 +22,7 @@ echo lib/xercesImpl-2.5.jar lib/js-1.5R4.1.jar>> manifest.txt
21
22
  jar -cfm JarClasspathTestMultiManifest.jar manifest.txt ClassVersionTest11.class
22
23
  del manifest.txt
23
24
 
25
+ rmdir /S /Q JarClasspathTestFolder
26
+ del *.class
27
+
24
28
  pause
@@ -0,0 +1,12 @@
1
+ Manifest-Version: 1.0
2
+ Bundle-ManifestVersion: 2
3
+ Bundle-Name: Some Plug-in
4
+ Bundle-SymbolicName: some.plugin;singleton:=true
5
+ Bundle-Version: 1.0.0.qualifier
6
+ Bundle-Activator: some.plugin.Activator
7
+ Bundle-Vendor: Codecop
8
+ Require-Bundle: org.eclipse.core.runtime,
9
+ org.eclipse.ui
10
+ Bundle-ActivationPolicy: lazy
11
+ Bundle-ClassPath: .
12
+ Bundle-RequiredExecutionEnvironment: J2SE-1.5
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <?eclipse version="3.2"?>
3
+ <plugin>
4
+ <extension
5
+ point="org.eclipse.ui.commands">
6
+ <command
7
+ id="some..treeReOrder"
8
+ name="Re Order Event">
9
+ </command>
10
+ </extension>
11
+ <extension
12
+ point="some.sessionSecurityCheck">
13
+ <sessionSecurityCheck
14
+ class="some.PrivilegeCheck">
15
+ </sessionSecurityCheck>
16
+ </extension>
17
+
18
+ </plugin>
@@ -0,0 +1,8 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>maven_classpath</groupId>
5
+ <artifactId>module</artifactId>
6
+ <version>0.0.1-SNAPSHOT</version>
7
+ <name>MavenClasspath Submodule</name>
8
+ </project>
@@ -0,0 +1,8 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>maven_classpath</groupId>
5
+ <artifactId>maven_classpath</artifactId>
6
+ <version>0.0.1-SNAPSHOT</version>
7
+ <name>MavenClasspath</name>
8
+ </project>
@@ -0,0 +1,5 @@
1
+ public class A {
2
+
3
+ private B b = new B();
4
+ private C c = new C();
5
+ }
@@ -0,0 +1,3 @@
1
+ public class B {
2
+
3
+ }
@@ -0,0 +1,3 @@
1
+ public class C {
2
+
3
+ }
@@ -0,0 +1,4 @@
1
+ public class Start {
2
+ private A a = new A();
3
+ private C c = new C();
4
+ }
@@ -0,0 +1,3 @@
1
+ if exist *.class del *.class
2
+ javac *.java
3
+ pause
@@ -0,0 +1,33 @@
1
+ module TestJavaClass
2
+ module TestClasspath
3
+
4
+ module DotClasspath
5
+ def create_dot_classpath
6
+ dot_classpath = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
7
+ <classpath>
8
+ <classpathentry kind=\"src\" path=\"src\" />
9
+ <classpathentry kind=\"src\" path=\"test\" output=\"test-classes\" />
10
+ <classpathentry kind=\"con\" path=\"org.eclipse.jdt.launching.JRE_CONTAINER\" />
11
+ <classpathentry kind=\"lib\" path=\"lib/JarClasspathTest.jar\" />
12
+ <classpathentry kind=\"var\" path=\"TEST/jar_classpath/JarClasspathTest.zip\" />
13
+ <classpathentry kind=\"con\" path=\"org.eclipse.jdt.junit.JUNIT_CONTAINER/4\" />
14
+ <classpathentry kind=\"output\" path=\"classes\" />
15
+ </classpath>"
16
+ File.open(dot_classpath_file, "w") { |f| f.print dot_classpath }
17
+ end
18
+
19
+ def dot_classpath_file
20
+ File.join(eclipse_classpath, '.classpath')
21
+ end
22
+
23
+ def eclipse_classpath
24
+ "#{TEST_DATA_PATH}/eclipse_classpath"
25
+ end
26
+
27
+ def remove_dot_classpath
28
+ File.delete dot_classpath_file
29
+ end
30
+ end
31
+
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ require File.dirname(__FILE__) + '/setup'
2
+ require 'javaclass/classpath/folder_classpath'
3
+
4
+ module JavaClass
5
+ module Classpath
6
+
7
+ # Add a field +was_called+ to see if the load_binary was called.
8
+ class FolderClasspath
9
+ alias :__old_load_binary :load_binary
10
+
11
+ def load_binary(classname)
12
+ @was_called = true
13
+ __old_load_binary(classname)
14
+ end
15
+ attr_accessor :was_called
16
+ end
17
+
18
+ end
19
+ end
data/test/setup.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'test/unit'
1
+ require 'test/unit'
2
2
  require 'test/unit/testcase'
3
3
 
4
4
  # Base require of tests.
@@ -3,66 +3,92 @@ require 'javaclass/classfile/java_class_header'
3
3
 
4
4
  module TestJavaClass
5
5
  module TestClassFile
6
-
6
+
7
7
  class TestAccessFlags < Test::Unit::TestCase
8
-
8
+
9
9
  def setup
10
- @cls = {}
11
- %w[Public Package Abstract Interface Final Public$Inner Public$StaticInner Public$InnerInterface].each do |t|
12
- eval("@#{t.sub(/Public\$/, '').downcase} = JavaClass::ClassFile::JavaClassHeader.new(load_class('access_flags/AccessFlagsTest#{t}')).access_flags")
10
+ %w[Public Package Abstract Interface Final Enum Annotation
11
+ Public$Inner Public$StaticInner Public$InnerInterface Enum$1 Inner Inner$1 Inner$2].each do |t|
12
+ binary_data = load_class("access_flags/AccessFlagsTest#{t}")
13
+ clazz = JavaClass::ClassFile::JavaClassHeader.new(binary_data)
14
+ variable_name = t.sub(/Public\$/, 'public_').
15
+ sub(/Inner\$1/, 'anonymous').
16
+ sub(/Inner\$2/, 'static_anonymous').
17
+ sub(/Enum\$1/, 'enum_inner').
18
+ downcase
19
+ eval("@#{variable_name} = clazz.access_flags")
13
20
  end
14
21
  end
15
-
22
+
23
+ def test_flags_hex
24
+ assert_equal('0021', @public.flags_hex)
25
+ assert_equal('0020', @package.flags_hex)
26
+ end
27
+
16
28
  def test_accessible_eh
17
29
  assert(@public.accessible?)
18
30
  assert(!@package.accessible?)
19
- assert(@abstract.accessible?)
20
- assert(@interface.accessible?)
21
- assert(@final.accessible?)
22
31
  end
23
-
32
+
24
33
  def test_public_eh
25
34
  assert(@public.public?)
26
- end
27
-
35
+ assert(!@package.public?)
36
+ end
37
+
28
38
  def test_interface_eh
29
39
  assert(!@public.interface?)
30
- assert(!@package.interface?)
31
40
  assert(!@abstract.interface?)
32
41
  assert(@interface.interface?)
33
- assert(!@final.interface?)
34
- assert(@innerinterface.interface?)
42
+ assert(@public_innerinterface.interface?)
43
+ assert(@annotation.interface?)
35
44
  end
36
-
45
+
37
46
  def test_abstract_eh
38
47
  assert(!@public.abstract?)
39
- assert(!@package.abstract?)
40
48
  assert(@abstract.abstract?)
41
49
  assert(@interface.abstract?)
42
- assert(!@final.abstract?)
43
- assert(@innerinterface.abstract?)
50
+ assert(@public_innerinterface.abstract?)
51
+ assert(@annotation.abstract?)
44
52
  end
45
-
53
+
46
54
  def test_final_eh
47
55
  assert(!@public.final?)
48
- assert(!@package.final?)
49
56
  assert(!@abstract.final?)
50
57
  assert(!@interface.final?)
51
58
  assert(@final.final?)
59
+ assert(!@enum.final?) # because we have a inner class
60
+ assert(@enum_inner.final?)
61
+ end
62
+
63
+ def test_enum_eh
64
+ assert(!@public.enum?)
65
+ assert(@enum.enum?)
66
+ assert(@enum_inner.enum?)
67
+ end
68
+
69
+ # def test_inner_eh
70
+ # assert(!@public.inner?)
71
+ # assert(!@public_inner.inner?)
72
+ # assert(!@inner.inner?)
73
+ # assert(!@anonymous.inner?)
74
+ # assert(!@static_anonymous.inner?)
75
+ # assert(!@enum_inner.inner?)
76
+ # end
77
+
78
+ def test_annotation_eh
79
+ assert(!@public.annotation?)
80
+ assert(!@public_innerinterface.annotation?)
81
+ assert(!@interface.annotation?)
82
+ assert(@annotation.annotation?)
52
83
  end
53
84
 
54
- # def test_inner_eh
55
- # assert(!@public.inner?)
56
- # assert(!@package.inner?)
57
- # assert(!@abstract.inner?)
58
- # assert(!@interface.inner?)
59
- # assert(!@final.inner?)
60
- # assert(@inner.inner?)
61
- # assert(@staticinner.inner?)
62
- # assert(@innerinterface.inner?)
63
- # end
85
+ def test_class_new_jdk10_fix
86
+ flags = JavaClass::ClassFile::JavaClassHeader.new(load_class('Runnable_102')).access_flags
87
+ assert(flags.abstract?)
88
+ assert(flags.interface?)
89
+ end
64
90
 
65
91
  end
66
-
92
+
67
93
  end
68
94
  end
@@ -0,0 +1,78 @@
1
+ require File.dirname(__FILE__) + '/setup'
2
+ require 'javaclass/adder_tree'
3
+
4
+ class TestAdderTree < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @tree = AdderTree.new(0)
8
+ end
9
+
10
+ def test_data
11
+ assert_equal(0, @tree.data)
12
+ end
13
+
14
+ def test_to_a
15
+ assert_equal([0], @tree.to_a)
16
+ end
17
+
18
+ def test_add
19
+ @tree.add(1)
20
+ assert_equal([0, [1]], @tree.to_a)
21
+ node = @tree.add(2)
22
+ assert_equal([0, [1, 2]], @tree.to_a)
23
+
24
+ node.add(3)
25
+ assert_equal([0, [1, 2, [3]]], @tree.to_a)
26
+ end
27
+
28
+ def test_size
29
+ assert_equal(1, @tree.size)
30
+ @tree.add(1)
31
+ assert_equal(2, @tree.size)
32
+ @tree.add(2)
33
+ assert_equal(3, @tree.size)
34
+ end
35
+
36
+ def test_levels
37
+ assert_equal(1, @tree.levels)
38
+ node = @tree.add(1)
39
+ assert_equal(2, @tree.levels)
40
+ node.add(2)
41
+ assert_equal(3, @tree.levels)
42
+ end
43
+
44
+ def test_children
45
+ assert_equal(0, @tree.children.size)
46
+ @tree.add(1)
47
+ assert_equal(1, @tree.children.size)
48
+
49
+ assert_equal(1, @tree.children[0].data)
50
+ end
51
+
52
+ def test_contain_eh_itself
53
+ assert(@tree.contain?(0))
54
+ assert_nil(@tree.contain?(1))
55
+ end
56
+
57
+ def test_contain_eh
58
+ assert_nil(@tree.contain?(1))
59
+ @tree.add(1)
60
+ assert(@tree.contain?(1))
61
+ end
62
+
63
+ def test_level
64
+ assert_equal(0, @tree.level)
65
+ node = @tree.add(1)
66
+ assert_equal(0, @tree.level)
67
+ assert_equal(1, node.level)
68
+ node.add(2)
69
+ assert_equal(1, node.level)
70
+ end
71
+
72
+ def test_root
73
+ assert_equal(0, @tree.root.data)
74
+ node = @tree.add(1)
75
+ assert_equal(0, node.root.data)
76
+ end
77
+
78
+ end
@@ -0,0 +1,39 @@
1
+ require File.dirname(__FILE__) + '/setup'
2
+ require 'javaclass/classpath/any_classpath'
3
+
4
+ module TestJavaClass
5
+ module TestClasspath
6
+
7
+ class TestAnyClasspath < Test::Unit::TestCase
8
+
9
+ def test_includes_eh
10
+ # @cpe = JavaClass::Classpath::AnyClasspath.new(TEST_DATA_PATH)
11
+ # # from folder
12
+ # assert(@cpe.includes?('access_flags.AccessFlagsTestAbstract'))
13
+ # # from jar, would have another package
14
+ # assert(@cpe.includes?('packagename/PublicClass'))
15
+ # # from jar, would have any package
16
+ # assert(@cpe.includes?('ClassVersionTest10'))
17
+ end
18
+
19
+ def test_find_jars_direct
20
+ @cpe = JavaClass::Classpath::AnyClasspath.new("#{TEST_DATA_PATH}/jar_classpath")
21
+ assert_equal(4, @cpe.elements.size)
22
+ assert_equal(File.expand_path("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTest.zip"), @cpe.elements[1].to_s)
23
+ end
24
+
25
+ def test_find_jars_recursive
26
+ @cpe = JavaClass::Classpath::AnyClasspath.new("#{TEST_DATA_PATH}/eclipse_classpath")
27
+ assert_equal(1, @cpe.elements.size)
28
+ end
29
+
30
+ def test_find_jars_single
31
+ @cpe = JavaClass::Classpath::AnyClasspath.new("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTest.zip")
32
+ assert_equal(1, @cpe.elements.size)
33
+ assert_equal(File.expand_path("#{TEST_DATA_PATH}/jar_classpath/JarClasspathTest.zip"), @cpe.elements[0].to_s)
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+ end
data/test/test_base.rb CHANGED
@@ -4,23 +4,25 @@ require 'javaclass/classfile/constants/base'
4
4
  module TestJavaClass
5
5
  module TestClassFile
6
6
  module TestConstants
7
-
7
+
8
8
  class TestBase < Test::Unit::TestCase
9
-
9
+
10
10
  class ConstantClass < JavaClass::ClassFile::Constants::Base; # ZenTest SKIP mock class
11
- def initialize(name=nil); super(name); end
11
+ def initialize(name=nil)
12
+ super(name)
13
+ end
12
14
  end
13
-
15
+
14
16
  def test_name
15
17
  v = ConstantClass.new
16
18
  assert_equal('Class', v.name)
17
-
19
+
18
20
  v = ConstantClass.new('Bubu')
19
21
  assert_equal('Bubu', v.name)
20
22
  end
21
-
23
+
22
24
  end
23
-
25
+
24
26
  end
25
27
  end
26
28
  end
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/setup'
2
+ require 'javaclass/dsl/caching_classpath'
3
+ require File.dirname(__FILE__) + '/logging_folder_classpath'
4
+ require File.dirname(__FILE__) + '/test_folder_classpath'
5
+
6
+ module TestJavaClass
7
+ module TestDsl
8
+
9
+ class TestCachingClasspath < TestClasspath::TestFolderClasspath
10
+ # extend TestFolderClasspath to execute all tests again
11
+
12
+ def test_new_wrong_type
13
+ assert_raise(ArgumentError){
14
+ JavaClass::Dsl::CachingClasspath.new('3')
15
+ }
16
+ end
17
+
18
+ def setup
19
+ super
20
+ class << @cpe
21
+ def load(*obj)
22
+ load_binary(*obj)
23
+ end
24
+ end
25
+ @cpe = JavaClass::Dsl::CachingClasspath.new(@cpe)
26
+ end
27
+
28
+ def test_load_cached
29
+ @cpe.was_called = false
30
+ @cpe.load('ClassVersionTest10')
31
+ assert(@cpe.was_called)
32
+
33
+ # load again, now it's still false
34
+ @cpe.was_called = false
35
+ @cpe.load('ClassVersionTest10')
36
+ assert(!@cpe.was_called)
37
+ end
38
+ end
39
+
40
+ end
41
+ end