2 require File.dirname(__FILE__) + '/../../../../ruby/gestalt'
5 include Ohcount::Gestalt
7 class DefinitionsTest < Ohcount::Test
9 def test_zend_framework
10 assert_gestalts 'zend_framework', [
11 Base.new(:platform,'php'),
12 Base.new(:platform,'zendframework'),
13 Base.new(:platform,'scripting')
18 assert_gestalts 'php', [
19 Base.new(:platform,'php'),
20 Base.new(:platform,'scripting')
25 assert_gestalts 'wx_widgets', [
26 Base.new(:platform,'wxwidgets'),
27 Base.new(:platform, 'native_code')
31 def test_eclipse_platform
32 assert_gestalts 'eclipse_platform', [
33 Base.new(:platform,'java'),
34 Base.new(:platform,'eclipseplatform')
38 def test_win32_not_enough
39 assert_gestalts 'win32_not_enough', [
40 Base.new(:platform, 'native_code')
45 assert_gestalts 'win32_enough', [
46 Base.new(:platform, 'win32'),
47 Base.new(:platform, 'native_code')
51 def test_ruby_just_enough
52 assert_gestalts 'ruby_just_enough', [
53 Base.new(:platform, 'ruby'),
54 Base.new(:platform, 'scripting'),
55 Base.new(:platform, 'native_code'),
59 def test_ruby_not_enough
60 assert_gestalts 'ruby_not_enough', [
61 Base.new(:platform, 'native_code')
66 assert_gestalts 'cakephp', [
67 Base.new(:platform, 'php'),
68 Base.new(:platform, 'cakephp'),
69 Base.new(:platform, 'scripting'),
74 assert_platform('symfony', :php, :symfony, :scripting)
78 assert_platform('pear', :php, :pear, :scripting)
82 assert_platform('moodle', :php, :moodle, :scripting)
85 def test_spring_framework
86 assert_gestalts 'spring_framework', [
87 Base.new(:platform, 'java'),
88 Base.new(:platform, 'springframework')
93 assert_platform('rails', :ruby, :rails, :scripting)
97 assert_platform('jquery', :javascript, :jquery, :scripting)
101 h = SourceFile.new("sample.html", :contents => '<SCRIPT TYPE="text/javascript" SRC="http://ajax.googleapis.com/ajax/libs/dojo/1.3/dojo/dojo.xd.js"></SCRIPT>')
102 expected_gestalts = [ Base.new(:platform, "dojo") ]
103 assert_equal expected_gestalts.sort, h.gestalts.sort
107 h = SourceFile.new("sample.html", :contents => '<script type="text/javascript" src="http://yui.yahooapis.com/2.7.0/build/yahoo/yahoo-min.js" ></script>')
108 expected_gestalts = [ Base.new(:platform, "yui") ]
109 assert_equal expected_gestalts.sort, h.gestalts.sort
113 assert_platform('python', :python, :scripting)
117 assert_platform('mac', :mac, :native_code)
121 assert_platform('plist', :mac)
125 assert_platform('posix', :posix, :native_code)
129 assert_platform('xwindows', :xwindows, :native_code)
133 assert_platform('kde', :kde, :native_code)
137 assert_platform('msdos', :msdos, :native_code)
141 assert_platform('gtk', :gtk, :native_code)
145 assert_platform('drupal', :php, :drupal, :scripting)
149 assert_tool('vs_1', :visualstudio)
153 assert_tool('eclipse', :eclipse)
157 assert_tool('netbeans', :netbeans)
161 asm = SourceFile.new("foo.S", :contents => <<-INLINE_ASM
166 expected_gestalts = [
167 Base.new(:platform, 'arm')
170 assert_equal expected_gestalts.sort, asm.gestalts.sort
173 def test_arm_from_c_keywords
174 c = SourceFile.new("foo.c", :contents => <<-INLINE_C
178 expected_gestalts = [
179 Base.new(:platform, 'arm'),
180 Base.new(:platform, 'native_code')
182 assert_equal expected_gestalts, c.gestalts
186 asm = SourceFile.new("foo.S", :contents => <<-INLINE_ASM
191 expected_gestalts = [
192 Base.new(:platform, 'arm'),
193 Base.new(:platform, 'arm_neon')
196 assert_equal expected_gestalts.sort, asm.gestalts.sort
199 def test_moblin_clutter
200 c = SourceFile.new("foo.c", :contents => <<-INLINE_C
201 clutter_actor_queue_redraw (CLUTTER_ACTOR(label));
204 expected_gestalts = [
205 Base.new(:platform, 'clutter'),
206 Base.new(:platform, 'moblin'),
207 Base.new(:platform, 'mid_combined'),
208 Base.new(:platform, 'native_code')
211 assert_equal expected_gestalts.sort, c.gestalts.sort
214 def test_moblin_by_filename
215 c = SourceFile.new("moblin-netbook-system-tray.h", :contents => <<-INLINE_PERL
219 expected_gestalts = [
220 Base.new(:platform, 'moblin_misc'),
221 Base.new(:platform, 'moblin'),
222 Base.new(:platform, 'mid_combined'),
223 Base.new(:platform, 'native_code')
226 assert_equal expected_gestalts.sort, c.gestalts.sort
229 def test_moblin_by_keyword
230 c = SourceFile.new("foo.c", :contents => <<-INLINE_PERL
231 proxy = dbus_g_proxy_new_for_name (conn, "org.moblin.connman",
234 expected_gestalts = [
235 Base.new(:platform, 'moblin_misc'),
236 Base.new(:platform, 'moblin'),
237 Base.new(:platform, 'mid_combined'),
238 Base.new(:platform, 'native_code')
241 assert_equal expected_gestalts.sort, c.gestalts.sort
245 c = SourceFile.new("foo.c", :contents => <<-INLINE_C
246 button = nbtk_button_new_with_label ("Back");
249 expected_gestalts = [
250 Base.new(:platform, 'nbtk'),
251 Base.new(:platform, 'mid_combined'),
252 Base.new(:platform, 'moblin'),
253 Base.new(:platform, 'native_code')
256 assert_equal expected_gestalts.sort, c.gestalts.sort
261 java = SourceFile.new("foo.java", :contents => <<-INLINE_C
262 import android.app.Activity;
263 // import dont.import.this;
267 names = java.gestalts.map { |g| g.name if g.type == :platform }.compact
268 assert names.include?('java')
269 assert names.include?('android')
270 assert names.include?('mid_combined')
274 objective_c = SourceFile.new("foo.m", :contents => <<-OBJECTIVE_C
275 #import <Foundation/Foundation.h>
276 #import <UIKit/UIKit.h>
277 #import "WhackABugApp.h"
279 int main(int argc, char *argv[]) {
280 NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
281 int ret = UIApplicationMain(argc, argv, [WhackABugApp class]);
288 expected_gestalts = [
289 Base.new(:platform, 'iphone'),
290 Base.new(:platform, 'mid_combined')
293 assert_equal expected_gestalts.sort, objective_c.gestalts.sort
297 c = SourceFile.new("foo.c", :contents => <<-INLINE_C
298 HildonWindow *window;
301 expected_gestalts = [
302 Base.new(:platform, 'hildon'),
303 Base.new(:platform, 'maemo'),
304 Base.new(:platform, 'native_code'),
305 Base.new(:platform, 'mid_combined')
308 assert_equal expected_gestalts.sort, c.gestalts.sort
312 make = SourceFile.new("makefile", :contents => <<-INLINE_MAKEFILE
316 expected_gestalts = [
317 Base.new(:platform, 'xl_flag'),
318 Base.new(:platform, 'atom')
320 assert_equal expected_gestalts.sort, make.gestalts.sort
323 def test_atom_windows
324 make = SourceFile.new("makefile", :contents => <<-INLINE_MAKEFILE
328 expected_gestalts = [
329 Base.new(:platform, 'xl_flag'),
330 Base.new(:platform, 'atom')
332 assert_equal expected_gestalts.sort, make.gestalts.sort
335 def test_not_atom_windows
336 make = SourceFile.new("makefile", :contents => <<-INLINE_MAKEFILE
340 expected_gestalts = []
341 assert_equal expected_gestalts.sort, make.gestalts.sort
345 make = SourceFile.new("makefile", :contents => <<-INLINE_MAKEFILE
346 COMPILE_FLAGS=-xSSE3_ATOM_FLAG
349 expected_gestalts = [
350 Base.new(:platform, 'sse3_atom_flag'),
351 Base.new(:platform, 'atom')
353 assert_equal expected_gestalts.sort, make.gestalts.sort
356 def test_intel_compiler
358 make = SourceFile.new("Makefile", :contents => <<-INLINE_MAKEFILE
362 expected_gestalts = [
363 Base.new(:platform, 'intel_compiler'),
365 assert_equal expected_gestalts.sort, make.gestalts.sort
369 java = SourceFile.new("foo.java", :contents => <<-INLINE_JAVA
370 import com.sun.identity.authentication;
373 platforms = java.gestalts.map { |g| g.name if g.type == :platform }.compact
374 assert platforms.include?('java')
375 assert platforms.include?('opensso')
379 csharp = SourceFile.new("bam.cs", :contents => <<-INLINE_CSHARP
381 using Microsoft.WindowsMobile.DirectX;
384 expected_gestalts = [
385 Base.new(:platform, 'windows_ce_incomplete'),
386 Base.new(:platform, 'dot_net'),
389 assert_equal expected_gestalts.sort, csharp.gestalts.sort
393 make = SourceFile.new("Makefile", :contents => <<-INLINE_MAKEFILE
397 expected_gestalts = [
398 Base.new(:platform, 'gcc'),
400 assert_equal expected_gestalts.sort, make.gestalts.sort
404 c = SourceFile.new("foo.c", :contents => <<-INLINE_C
408 expected_gestalts = [
409 Base.new(:platform, 'native_code'),
411 assert_equal expected_gestalts.sort, c.gestalts.sort
415 as = SourceFile.new("sample.as", :contents => 'greet.text = "Hello, world";')
416 expected_gestalts = [ Base.new(:platform, "flash") ]
417 assert_equal expected_gestalts.sort, as.gestalts.sort
421 as = SourceFile.new("sample.mxml", :contents => <<-MXML
422 <?xml version="1.0" encoding="utf-8"?>
423 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"></mx:Application>
426 expected_gestalts = [ Base.new(:platform, 'flex') ]
427 assert_equal expected_gestalts.sort, as.gestalts.sort