epall-limelight 0.5.0-java

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 (282) hide show
  1. data/bin/icons/icon.ico +0 -0
  2. data/bin/icons/icon_48.gif +0 -0
  3. data/bin/icons/limelight.icns +0 -0
  4. data/bin/limelight +5 -0
  5. data/bin/ll +10 -0
  6. data/bin/ll.bat +5 -0
  7. data/lib/init.rb +16 -0
  8. data/lib/limelight.jar +0 -0
  9. data/lib/limelight/animation.rb +41 -0
  10. data/lib/limelight/builtin/players.rb +16 -0
  11. data/lib/limelight/builtin/players/button.rb +39 -0
  12. data/lib/limelight/builtin/players/check_box.rb +50 -0
  13. data/lib/limelight/builtin/players/combo_box.rb +89 -0
  14. data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
  15. data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
  16. data/lib/limelight/builtin/players/curtains.rb +23 -0
  17. data/lib/limelight/builtin/players/image.rb +54 -0
  18. data/lib/limelight/builtin/players/password_box.rb +34 -0
  19. data/lib/limelight/builtin/players/radio_button.rb +65 -0
  20. data/lib/limelight/builtin/players/stage_mover.rb +31 -0
  21. data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
  22. data/lib/limelight/builtin/players/text_area.rb +34 -0
  23. data/lib/limelight/builtin/players/text_box.rb +34 -0
  24. data/lib/limelight/builtin/styles.rb +35 -0
  25. data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
  26. data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
  27. data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
  28. data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
  29. data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
  30. data/lib/limelight/builtin/utilities_production/production.rb +62 -0
  31. data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
  32. data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
  33. data/lib/limelight/button_group_cache.rb +11 -0
  34. data/lib/limelight/casting_director.rb +112 -0
  35. data/lib/limelight/client/playbills.rb +86 -0
  36. data/lib/limelight/commands/command.rb +168 -0
  37. data/lib/limelight/commands/create_command.rb +98 -0
  38. data/lib/limelight/commands/freeze_command.rb +131 -0
  39. data/lib/limelight/commands/help_command.rb +61 -0
  40. data/lib/limelight/commands/open_command.rb +60 -0
  41. data/lib/limelight/commands/pack_command.rb +45 -0
  42. data/lib/limelight/commands/unpack_command.rb +44 -0
  43. data/lib/limelight/commands/version_command.rb +31 -0
  44. data/lib/limelight/data.rb +37 -0
  45. data/lib/limelight/dsl/build_exception.rb +55 -0
  46. data/lib/limelight/dsl/menu_bar.rb +71 -0
  47. data/lib/limelight/dsl/prop_builder.rb +155 -0
  48. data/lib/limelight/dsl/stage_builder.rb +105 -0
  49. data/lib/limelight/dsl/styles_builder.rb +157 -0
  50. data/lib/limelight/file_chooser.rb +68 -0
  51. data/lib/limelight/file_filter.rb +33 -0
  52. data/lib/limelight/file_loader.rb +46 -0
  53. data/lib/limelight/gems.rb +51 -0
  54. data/lib/limelight/java_couplings.rb +66 -0
  55. data/lib/limelight/java_util.rb +49 -0
  56. data/lib/limelight/limelight_exception.rb +24 -0
  57. data/lib/limelight/main.rb +108 -0
  58. data/lib/limelight/paint_action.rb +27 -0
  59. data/lib/limelight/pen.rb +83 -0
  60. data/lib/limelight/producer.rb +179 -0
  61. data/lib/limelight/production.rb +169 -0
  62. data/lib/limelight/prop.rb +367 -0
  63. data/lib/limelight/scene.rb +151 -0
  64. data/lib/limelight/specs/spec_helper.rb +87 -0
  65. data/lib/limelight/specs/test_scene_opener.rb +60 -0
  66. data/lib/limelight/stage.rb +292 -0
  67. data/lib/limelight/string.rb +38 -0
  68. data/lib/limelight/studio.rb +185 -0
  69. data/lib/limelight/styles.rb +347 -0
  70. data/lib/limelight/templates/production_templater.rb +49 -0
  71. data/lib/limelight/templates/scene_templater.rb +47 -0
  72. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  73. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  74. data/lib/limelight/templates/sources/production/production.rb.template +49 -0
  75. data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
  76. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  77. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  78. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  79. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  80. data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
  81. data/lib/limelight/templates/templater.rb +131 -0
  82. data/lib/limelight/templates/templater_logger.rb +39 -0
  83. data/lib/limelight/theater.rb +77 -0
  84. data/lib/limelight/util.rb +65 -0
  85. data/lib/limelight/util/downloader.rb +115 -0
  86. data/lib/limelight/version.rb +20 -0
  87. data/productions/examples/8thlight.com/about/about.txt +24 -0
  88. data/productions/examples/8thlight.com/about/props.rb +11 -0
  89. data/productions/examples/8thlight.com/about/styles.rb +2 -0
  90. data/productions/examples/8thlight.com/footer.rb +6 -0
  91. data/productions/examples/8thlight.com/home/props.rb +28 -0
  92. data/productions/examples/8thlight.com/home/styles.rb +2 -0
  93. data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
  94. data/productions/examples/8thlight.com/images/bg.jpg +0 -0
  95. data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
  96. data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
  97. data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
  98. data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
  99. data/productions/examples/8thlight.com/images/header.jpg +0 -0
  100. data/productions/examples/8thlight.com/images/moses.jpg +0 -0
  101. data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
  102. data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
  103. data/productions/examples/8thlight.com/menu.rb +11 -0
  104. data/productions/examples/8thlight.com/services/props.rb +11 -0
  105. data/productions/examples/8thlight.com/services/services.txt +8 -0
  106. data/productions/examples/8thlight.com/services/styles.rb +2 -0
  107. data/productions/examples/8thlight.com/stages.rb +8 -0
  108. data/productions/examples/8thlight.com/styles.rb +210 -0
  109. data/productions/examples/calculator/players/button.rb +24 -0
  110. data/productions/examples/calculator/players/calculator.rb +15 -0
  111. data/productions/examples/calculator/players/calculator_model.rb +13 -0
  112. data/productions/examples/calculator/props.rb +23 -0
  113. data/productions/examples/calculator/styles.rb +36 -0
  114. data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
  115. data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
  116. data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
  117. data/productions/examples/langstons_ant/init.rb +4 -0
  118. data/productions/examples/langstons_ant/players/ant.rb +103 -0
  119. data/productions/examples/langstons_ant/players/log.rb +29 -0
  120. data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
  121. data/productions/examples/langstons_ant/players/world.rb +35 -0
  122. data/productions/examples/langstons_ant/props.rb +22 -0
  123. data/productions/examples/langstons_ant/styles.rb +104 -0
  124. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
  125. data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
  126. data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
  127. data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
  128. data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
  129. data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
  130. data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
  131. data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
  132. data/productions/examples/sandbox/alerts/props.rb +10 -0
  133. data/productions/examples/sandbox/alerts/styles.rb +46 -0
  134. data/productions/examples/sandbox/background_images/props.rb +22 -0
  135. data/productions/examples/sandbox/background_images/styles.rb +40 -0
  136. data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
  137. data/productions/examples/sandbox/click_me/props.rb +8 -0
  138. data/productions/examples/sandbox/click_me/styles.rb +11 -0
  139. data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
  140. data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
  141. data/productions/examples/sandbox/floaters/props.rb +10 -0
  142. data/productions/examples/sandbox/floaters/styles.rb +24 -0
  143. data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
  144. data/productions/examples/sandbox/frameing/props.rb +35 -0
  145. data/productions/examples/sandbox/frameing/styles.rb +45 -0
  146. data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
  147. data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
  148. data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
  149. data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
  150. data/productions/examples/sandbox/gradients/props.rb +13 -0
  151. data/productions/examples/sandbox/gradients/styles.rb +47 -0
  152. data/productions/examples/sandbox/header.rb +22 -0
  153. data/productions/examples/sandbox/homer/players/homer.rb +24 -0
  154. data/productions/examples/sandbox/homer/props.rb +10 -0
  155. data/productions/examples/sandbox/homer/styles.rb +16 -0
  156. data/productions/examples/sandbox/images/arch.jpg +0 -0
  157. data/productions/examples/sandbox/images/beach.jpg +0 -0
  158. data/productions/examples/sandbox/images/homer.jpg +0 -0
  159. data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
  160. data/productions/examples/sandbox/images/logo.png +0 -0
  161. data/productions/examples/sandbox/images/marilyn.jpg +0 -0
  162. data/productions/examples/sandbox/images/space.png +0 -0
  163. data/productions/examples/sandbox/images_scene/props.rb +36 -0
  164. data/productions/examples/sandbox/images_scene/styles.rb +34 -0
  165. data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
  166. data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
  167. data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
  168. data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
  169. data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
  170. data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
  171. data/productions/examples/sandbox/inputs/props.rb +40 -0
  172. data/productions/examples/sandbox/inputs/styles.rb +39 -0
  173. data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
  174. data/productions/examples/sandbox/kiosk/props.rb +9 -0
  175. data/productions/examples/sandbox/kiosk/styles.rb +37 -0
  176. data/productions/examples/sandbox/players/sandbox.rb +11 -0
  177. data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
  178. data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
  179. data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
  180. data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
  181. data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
  182. data/productions/examples/sandbox/scrolling/props.rb +45 -0
  183. data/productions/examples/sandbox/scrolling/styles.rb +33 -0
  184. data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
  185. data/productions/examples/sandbox/sketching/props.rb +25 -0
  186. data/productions/examples/sandbox/sketching/styles.rb +35 -0
  187. data/productions/examples/sandbox/sounds/bird.au +0 -0
  188. data/productions/examples/sandbox/sounds/cat.au +0 -0
  189. data/productions/examples/sandbox/sounds/cow.au +0 -0
  190. data/productions/examples/sandbox/sounds/dog.au +0 -0
  191. data/productions/examples/sandbox/sounds/donkey.au +0 -0
  192. data/productions/examples/sandbox/sounds/duck.au +0 -0
  193. data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
  194. data/productions/examples/sandbox/sounds/props.rb +10 -0
  195. data/productions/examples/sandbox/sounds/styles.rb +17 -0
  196. data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
  197. data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
  198. data/productions/examples/sandbox/stage_handles/props.rb +17 -0
  199. data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
  200. data/productions/examples/sandbox/stages.rb +8 -0
  201. data/productions/examples/sandbox/styles.rb +35 -0
  202. data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
  203. data/productions/examples/sandbox/teaser/props.rb +14 -0
  204. data/productions/examples/sandbox/teaser/styles.rb +21 -0
  205. data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
  206. data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
  207. data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
  208. data/productions/playbills.lll +1 -0
  209. data/productions/stage_composer/init.rb +10 -0
  210. data/productions/stage_composer/inspector/players/inspector.rb +80 -0
  211. data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
  212. data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
  213. data/productions/stage_composer/inspector/players/style_table.rb +12 -0
  214. data/productions/stage_composer/inspector/players/style_value.rb +16 -0
  215. data/productions/stage_composer/inspector/props.rb +19 -0
  216. data/productions/stage_composer/inspector/styles.rb +71 -0
  217. data/productions/stage_composer/lib/init.rb +5 -0
  218. data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
  219. data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
  220. data/productions/stage_composer/production.rb +6 -0
  221. data/productions/stage_composer/stages.rb +15 -0
  222. data/productions/startup/images/logo.png +0 -0
  223. data/productions/startup/images/splash.png +0 -0
  224. data/productions/startup/production.rb +52 -0
  225. data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
  226. data/productions/startup/spec/spec_helper.rb +8 -0
  227. data/productions/startup/stages.rb +9 -0
  228. data/productions/startup/styles.rb +15 -0
  229. data/productions/startup/welcome/players/browse_button.rb +10 -0
  230. data/productions/startup/welcome/players/download_button.rb +17 -0
  231. data/productions/startup/welcome/players/sandbox_button.rb +11 -0
  232. data/productions/startup/welcome/props.rb +23 -0
  233. data/productions/startup/welcome/styles.rb +103 -0
  234. data/spec/limelight/builtin/players/button_spec.rb +20 -0
  235. data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
  236. data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
  237. data/spec/limelight/builtin/players/image_spec.rb +43 -0
  238. data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
  239. data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
  240. data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
  241. data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
  242. data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
  243. data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
  244. data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
  245. data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
  246. data/spec/limelight/casting_director_spec.rb +164 -0
  247. data/spec/limelight/client/playbills_spec.rb +79 -0
  248. data/spec/limelight/commands/command_spec.rb +26 -0
  249. data/spec/limelight/commands/create_command_spec.rb +108 -0
  250. data/spec/limelight/commands/freeze_command_spec.rb +143 -0
  251. data/spec/limelight/commands/help_command_spec.rb +42 -0
  252. data/spec/limelight/commands/open_command_spec.rb +52 -0
  253. data/spec/limelight/commands/pack_command_spec.rb +26 -0
  254. data/spec/limelight/commands/unpack_command_spec.rb +47 -0
  255. data/spec/limelight/data_spec.rb +36 -0
  256. data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
  257. data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
  258. data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
  259. data/spec/limelight/file_chooser_spec.rb +64 -0
  260. data/spec/limelight/file_filter_spec.rb +29 -0
  261. data/spec/limelight/file_loader_spec.rb +28 -0
  262. data/spec/limelight/gems_spec.rb +92 -0
  263. data/spec/limelight/java_util_spec.rb +37 -0
  264. data/spec/limelight/main_spec.rb +40 -0
  265. data/spec/limelight/paint_action_spec.rb +30 -0
  266. data/spec/limelight/pen_spec.rb +62 -0
  267. data/spec/limelight/producer_spec.rb +210 -0
  268. data/spec/limelight/production_spec.rb +100 -0
  269. data/spec/limelight/prop_spec.rb +431 -0
  270. data/spec/limelight/scene_spec.rb +173 -0
  271. data/spec/limelight/stage_spec.rb +202 -0
  272. data/spec/limelight/string_spec.rb +38 -0
  273. data/spec/limelight/studio_spec.rb +157 -0
  274. data/spec/limelight/styles_spec.rb +53 -0
  275. data/spec/limelight/templates/production_templater_spec.rb +66 -0
  276. data/spec/limelight/templates/scene_templater_spec.rb +51 -0
  277. data/spec/limelight/templates/templater_logger_spec.rb +41 -0
  278. data/spec/limelight/templates/templater_spec.rb +107 -0
  279. data/spec/limelight/theater_spec.rb +72 -0
  280. data/spec/limelight/util/downloader_spec.rb +92 -0
  281. data/spec/spec_helper.rb +70 -0
  282. metadata +335 -0
@@ -0,0 +1,64 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/file_chooser'
6
+
7
+ describe Limelight::FileChooser do
8
+
9
+ before(:each) do
10
+ end
11
+
12
+ it "should create a Java file chooser" do
13
+ chooser = Limelight::FileChooser.new()
14
+ chooser.chooser.class.should == javax.swing.JFileChooser
15
+ end
16
+
17
+ it "should set current directory if provided" do
18
+ chooser = Limelight::FileChooser.new(:directory => "/tmp")
19
+
20
+ chooser.chooser.getCurrentDirectory().getAbsolutePath().should == "/tmp"
21
+ end
22
+
23
+ it "should have a title if provided" do
24
+ chooser = Limelight::FileChooser.new(:title => "Some Title")
25
+
26
+ chooser.chooser.getDialogTitle().should == "Some Title"
27
+ end
28
+
29
+ it "should have a filter if provided" do
30
+ chooser = Limelight::FileChooser.new(:description => "Description") { "filter" }
31
+
32
+ filter = chooser.chooser.getFileFilter()
33
+ filter.description.should == "Description"
34
+ filter.filter.call.should == "filter"
35
+ end
36
+
37
+ it "should return nil if no file was selected" do
38
+ chooser = Limelight::FileChooser.new(:parent => "parent")
39
+ chooser.chooser.should_receive(:showOpenDialog).with("parent").and_return(javax.swing.JFileChooser::CANCEL_OPTION)
40
+
41
+ chooser.choose_file.should == nil
42
+ end
43
+
44
+ it "should return the absolute path if a file was selected" do
45
+ chooser = Limelight::FileChooser.new(:parent => "parent")
46
+ chooser.chooser.should_receive(:showOpenDialog).with("parent").and_return(javax.swing.JFileChooser::APPROVE_OPTION)
47
+ selected_file = make_mock("selected file", :absolute_path => "selected file's absolute path")
48
+ chooser.chooser.should_receive(:getSelectedFile).and_return(selected_file)
49
+
50
+ chooser.choose_file.should == "selected file's absolute path"
51
+ end
52
+
53
+ it "should default to files and directories but allow directory only and file only" do
54
+ chooser = Limelight::FileChooser.new
55
+ chooser.chooser.file_selection_mode.should == javax.swing.JFileChooser::FILES_AND_DIRECTORIES
56
+
57
+ chooser = Limelight::FileChooser.new(:directories_only => true)
58
+ chooser.chooser.file_selection_mode.should == javax.swing.JFileChooser::DIRECTORIES_ONLY
59
+
60
+ chooser = Limelight::FileChooser.new(:files_only => true)
61
+ chooser.chooser.file_selection_mode.should == javax.swing.JFileChooser::FILES_ONLY
62
+ end
63
+
64
+ end
@@ -0,0 +1,29 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/file_filter'
6
+
7
+ describe Limelight::FileFilter do
8
+
9
+ before(:each) do
10
+ end
11
+
12
+ it "should have a description and a block" do
13
+ filter = Limelight::FileFilter.new("Some Description") { "blah" }
14
+
15
+ filter.description.should == "Some Description"
16
+ filter.filter.call.should == "blah"
17
+ end
18
+
19
+ it "should have implement java interface" do
20
+ filter = Limelight::FileFilter.new("Some Description") { |file| file.name == "good" }
21
+
22
+ filter.getDescription().should == "Some Description"
23
+ bad_file = make_mock("file", :name => "bad")
24
+ good_file = make_mock("file", :name => "good")
25
+ filter.accept(bad_file).should == false
26
+ filter.accept(good_file).should == true
27
+ end
28
+
29
+ end
@@ -0,0 +1,28 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/file_loader'
6
+
7
+ describe Limelight::FileLoader do
8
+
9
+ before(:each) do
10
+ @loader = Limelight::FileLoader.for_root("/Users/micahmartin/Projects/limelight/example")
11
+ end
12
+
13
+ it "should load path parts" do
14
+ @loader.root.should == "/Users/micahmartin/Projects/limelight/example"
15
+ end
16
+
17
+ it "should calculate relative file paths" do
18
+ @loader.path_to(".").should == "/Users/micahmartin/Projects/limelight/example"
19
+ @loader.path_to("..").should == "/Users/micahmartin/Projects/limelight"
20
+ @loader.path_to("images/blah.gif").should == "/Users/micahmartin/Projects/limelight/example/images/blah.gif"
21
+ end
22
+
23
+ it "should know absolute paths" do
24
+ @loader.path_to("/").should == "/"
25
+ @loader.path_to("/Users").should == "/Users"
26
+ end
27
+
28
+ end
@@ -0,0 +1,92 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require "limelight/gems"
6
+ require 'limelight/production'
7
+
8
+ describe Limelight::Gems do
9
+
10
+ before(:each) do
11
+ @production = Limelight::Production.new(TestDir.path("prod"))
12
+ end
13
+
14
+ it "should know the load path" do
15
+ Limelight::Gems.load_path.should be($:)
16
+ Limelight::Gems.current_production = @production
17
+ end
18
+
19
+ it "add a gem to load path" do
20
+ path = []
21
+ Limelight::Gems.stub!(:load_path).and_return(path)
22
+
23
+ Limelight::Gems.install("gem_dir_name", ["lib"])
24
+
25
+ path.length.should == 1
26
+ path[0].should == File.join(@production.gems_directory, "gem_dir_name/lib")
27
+ end
28
+
29
+ it "add a gem to the beginning of the load path" do
30
+ path = ["foo"]
31
+ Limelight::Gems.stub!(:load_path).and_return(path)
32
+
33
+ Limelight::Gems.install("gem_dir_name", ["lib"])
34
+
35
+ path.length.should == 2
36
+ path[0].should == File.join(@production.gems_directory, "gem_dir_name/lib")
37
+ path[1].should == "foo"
38
+ end
39
+
40
+ it "add a gem to the beginning of the load path in the same order provided" do
41
+ path = ["foo"]
42
+ Limelight::Gems.stub!(:load_path).and_return(path)
43
+
44
+ Limelight::Gems.install("gem_dir_name", ["lib", "src", "ruby"])
45
+
46
+ path.length.should == 4
47
+ path[0].should == File.join(@production.gems_directory, "gem_dir_name/lib")
48
+ path[1].should == File.join(@production.gems_directory, "gem_dir_name/src")
49
+ path[2].should == File.join(@production.gems_directory, "gem_dir_name/ruby")
50
+ path[3].should == "foo"
51
+ end
52
+
53
+ describe "finding gems" do
54
+
55
+ before(:each) do
56
+ TestDir.clean
57
+ end
58
+
59
+ it "should load all the gems in a production" do
60
+ TestDir.create_file("prod/__resources/gems/gems/gem1/limelight_init.rb", "Limelight::Gems.install('gem1', ['fee'])")
61
+ TestDir.create_file("prod/__resources/gems/gems/gem2/limelight_init.rb", "Limelight::Gems.install('gem2', ['fie'])")
62
+ TestDir.create_file("prod/__resources/gems/gems/gem3/limelight_init.rb", "Limelight::Gems.install('gem3', ['foe', 'fum'])")
63
+ path = []
64
+ Limelight::Gems.stub!(:load_path).and_return(path)
65
+
66
+ Limelight::Gems.install_gems_in_production(@production)
67
+
68
+ path.length.should == 4
69
+ path[0].should == File.join(@production.gems_directory, "gem1/fee")
70
+ path[1].should == File.join(@production.gems_directory, "gem2/fie")
71
+ path[2].should == File.join(@production.gems_directory, "gem3/foe")
72
+ path[3].should == File.join(@production.gems_directory, "gem3/fum")
73
+ end
74
+
75
+ it "should gracefully handle missing gems dir" do
76
+ TestDir.establish_dir("prod")
77
+
78
+ path = []
79
+ Limelight::Gems.stub!(:load_path).and_return(path)
80
+ Limelight::Gems.install_gems_in_production(@production)
81
+
82
+ path.length.should == 0
83
+ end
84
+
85
+ it "should set the gem home and gem path to the __resources/gems so that using the gem command within frozen gems will work" do
86
+ Gem.should_receive(:use_paths).with(@production.gems_root, Gem.default_path)
87
+
88
+ Limelight::Gems.install_gems_in_production(@production)
89
+ end
90
+ end
91
+
92
+ end
@@ -0,0 +1,37 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/java_util'
6
+
7
+ describe Class do
8
+
9
+ class TestClass
10
+ attr_accessor :foo, :bar
11
+ getters :foo, :bar
12
+ setters :foo, :bar
13
+ end
14
+
15
+ before(:each) do
16
+ @obj = TestClass.new
17
+ end
18
+
19
+ it "should have java setters" do
20
+ @obj.setFoo("foo value")
21
+ @obj.setBar("bar value")
22
+
23
+ @obj.foo.should == "foo value"
24
+ @obj.bar.should == "bar value"
25
+ end
26
+
27
+ it "should have java getters" do
28
+ @obj.foo = "foo value"
29
+ @obj.bar = "bar value"
30
+
31
+ @obj.getFoo().should == "foo value"
32
+ @obj.getBar().should == "bar value"
33
+ end
34
+
35
+ end
36
+
37
+
@@ -0,0 +1,40 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/main'
6
+
7
+ describe Limelight::Main do
8
+
9
+ before(:each) do
10
+ @mock_output = StringIO.new
11
+ Limelight::Commands.output = @mock_output
12
+ end
13
+
14
+ it "should run the specified command" do
15
+ command_class = make_mock("command_class")
16
+ command = make_mock("command")
17
+
18
+ Limelight::Commands.should_receive(:[]).with("mock").and_return(command_class)
19
+ command_class.should_receive(:new).and_return(command)
20
+ command.should_receive(:run).with(["1", "2", "3"])
21
+
22
+ Limelight::Main.run(["mock", "1", "2", "3"])
23
+ end
24
+
25
+ it "should handle --version option" do
26
+ Limelight::Main.run(["--version"])
27
+
28
+ @mock_output.string.should == "Limelight, version #{Limelight::VERSION::STRING}\n"
29
+ end
30
+
31
+ it "should print usage" do
32
+ begin
33
+ Limelight::Main.run(["garbage"])
34
+ rescue SystemExit
35
+ end
36
+
37
+ @mock_output.string.include?("Usage: limelight").should == true
38
+ end
39
+
40
+ end
@@ -0,0 +1,30 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/paint_action'
6
+
7
+ describe Limelight::PaintAction do
8
+
9
+ before(:each) do
10
+ end
11
+
12
+ it "should take a block in constructor" do
13
+ block = Proc.new { |pen| }
14
+ action = Limelight::PaintAction.new(&block)
15
+
16
+ action.block.should == block
17
+ end
18
+
19
+ it "should pass pen into the block" do
20
+ local_pen = nil
21
+ action = Limelight::PaintAction.new { |pen| local_pen = pen }
22
+
23
+ graphics = make_mock("graphics", :setColor => nil, :setStroke => nil, :setRenderingHint => nil)
24
+ action.invoke(graphics)
25
+
26
+ local_pen.class.should == Limelight::Pen
27
+ local_pen.context.should == graphics
28
+ end
29
+
30
+ end
@@ -0,0 +1,62 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/pen'
6
+
7
+ describe Limelight::Pen do
8
+
9
+ before(:each) do
10
+ @context = make_mock("context", :setColor => nil, :setStroke => nil, :setRenderingHint => nil)
11
+ @pen = Limelight::Pen.new(@context)
12
+ end
13
+
14
+ it "should default to a think black stroke" do
15
+ @context.should_receive(:setColor).with(java.awt.Color::black)
16
+ @context.should_receive(:setStroke).with(java.awt.BasicStroke.new(1))
17
+ @context.should_receive(:setRenderingHint).with(java.awt.RenderingHints::KEY_ANTIALIASING, java.awt.RenderingHints::VALUE_ANTIALIAS_OFF)
18
+
19
+ @pen = Limelight::Pen.new(@context)
20
+
21
+ @pen.context.should be(@context)
22
+ end
23
+
24
+ it "should allow setting the color" do
25
+ @context.should_receive(:setColor).with(java.awt.Color::blue)
26
+
27
+ @pen.color = "blue"
28
+ end
29
+
30
+ it "should allow setting the width" do
31
+ @context.should_receive(:setStroke).with(java.awt.BasicStroke.new(5))
32
+
33
+ @pen.width = 5
34
+ end
35
+
36
+ it "should allow setting smooth on" do
37
+ @context.should_receive(:setRenderingHint).with(java.awt.RenderingHints::KEY_ANTIALIASING, java.awt.RenderingHints::VALUE_ANTIALIAS_ON)
38
+
39
+ @pen.smooth = true
40
+ end
41
+
42
+ it "should draw a line" do
43
+ @context.should_receive(:drawLine).with(1, 2, 3, 4)
44
+
45
+ @pen.draw_line(1, 2, 3, 4)
46
+ end
47
+
48
+ it "should draw a rectangle" do
49
+ @context.should_receive(:drawRect).with(1, 2, 3, 4)
50
+
51
+ @pen.draw_rectangle(1, 2, 3, 4)
52
+ end
53
+
54
+ it "should fill a rectangle" do
55
+ @pen.color = "blue"
56
+
57
+ @context.should_receive(:fillRect).with(1, 2, 3, 4)
58
+
59
+ @pen.fill_rectangle(1, 2, 3, 4)
60
+ end
61
+
62
+ end
@@ -0,0 +1,210 @@
1
+ #- Copyright � 2008-2009 8th Light, Inc. All Rights Reserved.
2
+ #- Limelight and all included source files are distributed under terms of the GNU LGPL.
3
+
4
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
5
+ require 'limelight/producer'
6
+
7
+ describe Limelight::Producer do
8
+
9
+ before(:each) do
10
+ TestDir.clean
11
+ Limelight::Studio.reset
12
+ @root_dir = TestDir.path("test_prod")
13
+ @producer = Limelight::Producer.new(@root_dir)
14
+ end
15
+
16
+ it "should have loader on creation" do
17
+ @producer.production.root.root.should == @root_dir
18
+ end
19
+
20
+ it "should take an optional theater on creation" do
21
+ theater = make_mock("theater")
22
+ producer = Limelight::Producer.new("/tmp", theater)
23
+
24
+ producer.theater.should == theater
25
+ end
26
+
27
+ it "should build a new theater if none is passing in constructor" do
28
+ @producer.theater.should_not == nil
29
+ @producer.theater.class.should == Limelight::Theater
30
+ end
31
+
32
+ it "should load props" do
33
+ TestDir.create_file("test_prod/props.rb", "child :id => 321")
34
+
35
+ scene = @producer.load_props(:path => TestDir.path("test_prod"), :casting_director => make_mock("casting_director", :fill_cast => nil))
36
+ scene.illuminate
37
+ scene.children.size.should == 1
38
+ scene.children[0].name.should == "child"
39
+ scene.children[0].id.should == "321"
40
+ end
41
+
42
+ it "should load props even when props.rd doesn't exist." do
43
+ scene = @producer.load_props(:path => TestDir.path("test_prod"), :casting_director => make_mock("casting_director", :fill_cast => nil))
44
+ scene.children.size.should == 0
45
+ end
46
+
47
+ it "should load builtin styles" do
48
+ styles = @producer.load_styles(Limelight::Scene.new())
49
+
50
+ styles["limelight_builtin_players_combo_box_popup_list"].should_not == nil
51
+ end
52
+
53
+ it "should load styles" do
54
+ TestDir.create_file("test_prod/styles.rb", "alpha { width 100 }")
55
+ Limelight::Studio.stub!(:builtin_styles).and_return({})
56
+
57
+ styles = @producer.load_styles(Limelight::Scene.new(:path => TestDir.path("test_prod")))
58
+ styles.size.should == 1
59
+ styles["alpha"].width.should == "100"
60
+ end
61
+
62
+ # Broken in JRuby 1.3
63
+ #
64
+ # it "should format prop errors well" do
65
+ # TestDir.create_file("test_prod/props.rb", "one\n+\nthree")
66
+ #
67
+ # begin
68
+ # result = @producer.load_props(:path => TestDir.path("test_prod"), :casting_director => make_mock("casting_director", :fill_cast => nil))
69
+ # result.should == nil # should never perform
70
+ # rescue Limelight::DSL::BuildException => e
71
+ # e.line_number.should == 3
72
+ # e.filename.should == TestDir.path("test_prod/props.rb")
73
+ # e.message.include?("/props.rb:3: undefined method `+@' for ").should == true
74
+ # end
75
+ # end
76
+ #
77
+ # it "should format styles errors well" do
78
+ # TestDir.create_file("test_prod/styles.rb", "one {}\ntwo {}\n-\nthree {}")
79
+ #
80
+ # begin
81
+ # result = @producer.load_styles(Limelight::Scene.new(:path => TestDir.path("test_prod")))
82
+ # result.should == nil # should never perform
83
+ # rescue Limelight::DSL::BuildException => e
84
+ # e.line_number.should == 4
85
+ # e.filename.should == TestDir.path("test_prod/styles.rb")
86
+ # e.message.include?("/styles.rb:4: undefined method `-@' for #<Java::LimelightStyles::RichStyle:0x").should == true
87
+ # end
88
+ # end
89
+
90
+ it "should load a stage when stages.rb exists" do
91
+ TestDir.create_file("test_prod/stages.rb", "stage 'Default' do\n default_scene 'abc'\n end")
92
+ @producer.should_receive(:open_scene).with("abc", anything)
93
+ Limelight::Gems.should_receive(:install_gems_in_production)
94
+
95
+ @producer.open
96
+ end
97
+
98
+ it "should load a scene when stages.rb doesn't exists" do
99
+ @producer.should_not_receive(:open_stages)
100
+ @producer.should_receive(:open_scene).with(:root, anything)
101
+ Limelight::Gems.should_receive(:install_gems_in_production)
102
+
103
+ @producer.open
104
+ end
105
+
106
+ it "should have one default stage when no stages.rb is provided" do
107
+ @producer.stub!(:open_scene)
108
+ Limelight::Gems.should_receive(:install_gems_in_production)
109
+
110
+ @producer.open
111
+
112
+ @producer.theater.stages.size.should == 1
113
+ @producer.theater["Limelight"].should_not == nil
114
+ end
115
+
116
+ it "should not load a scene when stages.rb doesn't exists and production indicates no default_scene" do
117
+ @producer.should_not_receive(:open_stages)
118
+ @producer.should_not_receive(:open_scene)
119
+ @producer.production.should_receive(:default_scene).and_return(nil)
120
+ Limelight::Gems.should_receive(:install_gems_in_production)
121
+
122
+ @producer.open
123
+ end
124
+
125
+ it "should load a stage but not open it if it has no default scene" do
126
+ TestDir.create_file("test_prod/stages.rb", "stage 'Default' do\n default_scene 'abc'\n end\n\nstage 'Hidden' do\n default_scene nil\n end")
127
+ @producer.should_receive(:open_scene).with("abc", anything)
128
+ Limelight::Gems.should_receive(:install_gems_in_production)
129
+
130
+ @producer.open
131
+ end
132
+
133
+ it "should open a scene" do
134
+ stage = make_mock("stage")
135
+ scene = make_mock("scene")
136
+ @producer.should_receive(:load_props).with(:production => @producer.production, :casting_director => anything, :path => TestDir.path("test_prod/name"), :name => "name").and_return(scene)
137
+ @producer.should_receive(:load_styles).and_return("styles")
138
+ scene.should_receive(:styles=)
139
+ stage.should_receive(:open).with(scene)
140
+
141
+ @producer.open_scene("name", stage)
142
+ end
143
+
144
+ it "should load empty styles if styles.rb doesn't exist" do
145
+ Limelight::Studio.stub!(:builtin_styles).and_return({})
146
+
147
+ @producer.load_styles(Limelight::Scene.new(:path => TestDir.path("test_prod"))).should == {}
148
+ end
149
+
150
+ it "should extend the production if production.rb is present" do
151
+ TestDir.create_file("test_prod/production.rb", "module Production; def name; return 'Fido'; end; def foo; end; end;")
152
+ @producer.stub!(:open_scene)
153
+
154
+ @producer.establish_production
155
+
156
+ @producer.production.name.should == "Fido"
157
+ @producer.production.respond_to?(:foo).should == true
158
+ end
159
+
160
+ it "should load init.rb if it exists" do
161
+ TestDir.create_file("test_prod/init.rb", "")
162
+
163
+ @producer.stub!(:open_scene)
164
+ Kernel.should_receive(:load).with(TestDir.path("test_prod/init.rb"))
165
+ Limelight::Gems.should_receive(:install_gems_in_production)
166
+
167
+ @producer.open
168
+ end
169
+
170
+ it "should not load init.rb when told not to" do
171
+ TestDir.create_file("test_prod/init.rb", "$init_loaded = true")
172
+ Limelight::Gems.should_receive(:install_gems_in_production)
173
+
174
+ $init_loaded = false;
175
+ @producer.load(:ignore_init => true)
176
+
177
+ $init_loaded.should == false;
178
+ end
179
+
180
+ it "should call production_opening, production_loaded, production_opened when opening a production" do
181
+ @producer.stub!(:open_scene)
182
+ Limelight::Gems.should_receive(:install_gems_in_production)
183
+ production = @producer.production
184
+ production.should_receive(:production_opening)
185
+ production.should_receive(:production_loaded)
186
+ production.should_receive(:production_opened)
187
+
188
+ @producer.open
189
+ end
190
+
191
+ it "should check limelight version" do
192
+ @producer.production.should_receive(:minimum_limelight_version).and_return("0.0.0")
193
+ @producer.version_compatible?.should == true
194
+
195
+ @producer.production.should_receive(:minimum_limelight_version).and_return("999.0.0")
196
+ @producer.version_compatible?.should == false
197
+ end
198
+
199
+ it "should allow options such as instance variables to be passed to open_scene" do
200
+ stage = make_mock("stage")
201
+ scene = make_mock("scene")
202
+ @producer.should_receive(:load_props).with(:instance_variables => { :foo => "bar" }, :production => @producer.production, :casting_director => anything, :path => TestDir.path("test_prod/name"), :name => "name").and_return(scene)
203
+ @producer.should_receive(:load_styles).and_return("styles")
204
+ scene.should_receive(:styles=)
205
+ stage.should_receive(:open).with(scene)
206
+
207
+ @producer.open_scene("name", stage, :instance_variables => { :foo => "bar" })
208
+ end
209
+
210
+ end