Merge pull request #41 from blackducksw/ubuntu_14
[ohcount] / test / unit / ruby / gestalt / jasper_definitions_test.rb
1 require 'test/unit'
2 require File.dirname(__FILE__) + '/../test_helper.rb'
3
4 include Ohcount
5 include Ohcount::Gestalt
6
7 class DefinitionsTest < Ohcount::Test
8
9   def test_jasper_reports_java
10                 java = SourceFile.new("foo.java", :contents => <<-INLINE_JAVA
11       public class Employee implements Serializable {
12         private net.sf.jasperreports.report myReport;
13       }
14                 INLINE_JAVA
15     )
16                 assert platform_names(java.gestalts).include?('jaspersoft')
17                 assert platform_names(java.gestalts).include?('jasper_reports')
18                 assert platform_names(java.gestalts).include?('jasper_reports_java')
19   end
20
21   def test_jasper_reports_via_maven
22                 java = SourceFile.new("pom.xml", :contents => <<-INLINE_POM
23         <project>
24           <groupId>dzrealms</groupId>
25           <artifactId>HelloWorld</artifactId>
26           <version>1.0</version>
27           <dependencies>
28             <dependency>
29               <groupId>jasperreports</groupId>
30               <artifactId>jasperreports</artifactId>
31               <version>2.0.5</version>
32             </dependency>
33           </dependencies>
34         </project>
35     INLINE_POM
36     )
37                 assert platform_names(java.gestalts).include?('jaspersoft')
38                 assert platform_names(java.gestalts).include?('jasper_reports')
39                 assert platform_names(java.gestalts).include?('jasper_reports_java')
40   end
41
42   def test_jasper_server_java
43                 java = SourceFile.new("foo.java", :contents => <<-INLINE_JAVA
44       public class Employee implements Serializable {
45         private com.jaspersoft.jasperserver;
46       }
47                 INLINE_JAVA
48     )
49                 assert platform_names(java.gestalts).include?('jaspersoft')
50                 assert platform_names(java.gestalts).include?('jasper_server')
51                 assert platform_names(java.gestalts).include?('jasper_server_java')
52   end
53
54   def test_jasper_intelligence
55                 java = SourceFile.new("foo.java", :contents => <<-INLINE_JAVA
56       public class Employee implements Serializable {
57         private com.jaspersoft.ji;
58       }
59                 INLINE_JAVA
60     )
61                 assert platform_names(java.gestalts).include?('jaspersoft')
62                 assert platform_names(java.gestalts).include?('jasper_intelligence')
63   end
64
65         def test_jasper_server
66                 expected = ['scripting', 'ruby', 'jaspersoft', 'jasper_server', 'jasper_server_keyword']
67
68                 rb = SourceFile.new('jasper.rb', :contents => 'def jasper_server; nil ; end')
69                 assert_platforms(expected, rb.gestalts)
70
71                 rb = SourceFile.new('jasper.rb', :contents => 'def jasperserver; nil ; end')
72                 assert_platforms(expected, rb.gestalts)
73
74                 rb = SourceFile.new('jasper.rb', :contents => 'js = JasperServer.new()')
75                 assert_platforms(expected, rb.gestalts)
76
77                 rb = SourceFile.new('jasper.rb', :contents => 'jasper-server')
78                 assert_platforms(expected, rb.gestalts)
79         end
80
81         def test_jasper_reports
82                 expected = ['scripting', 'ruby', 'jaspersoft', 'jasper_reports', 'jasper_reports_keyword']
83
84                 rb = SourceFile.new('jasper.rb', :contents => 'def jasper_reports; nil ; end')
85                 assert_platforms(expected, rb.gestalts)
86
87                 rb = SourceFile.new('jasper.rb', :contents => 'def jasperreports; nil ; end')
88                 assert_platforms(expected, rb.gestalts)
89
90                 rb = SourceFile.new('jasper.rb', :contents => 'def JasperReport; nil ; end')
91                 assert_platforms(expected, rb.gestalts)
92
93                 rb = SourceFile.new('jasper.rb', :contents => 'jasper-report')
94                 assert_platforms(expected, rb.gestalts)
95         end
96
97         def test_jasper_ireport
98                 rb = SourceFile.new('jasper.rb', :contents => 'ireport = nil')
99                 assert !platform_names(rb.gestalts).include?('jasper_ireport')
100
101                 rb = SourceFile.new('jasper.rb', :contents => 'jasper = nil')
102                 assert !platform_names(rb.gestalts).include?('jasper_ireport')
103
104                 rb = SourceFile.new('jasper.rb', :contents => 'jasper_ireport = nil')
105                 assert platform_names(rb.gestalts).include?('jasper_ireport')
106         end
107
108         protected
109
110         def assert_platforms(expected_names, actual)
111                 assert_equal(expected_names.sort, platform_names(actual).sort)
112         end
113
114         def platform_names(gestalts)
115                 gestalts.map { |g| g.type == :platform && g.name }.compact
116         end
117 end