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.
- data/bin/icons/icon.ico +0 -0
- data/bin/icons/icon_48.gif +0 -0
- data/bin/icons/limelight.icns +0 -0
- data/bin/limelight +5 -0
- data/bin/ll +10 -0
- data/bin/ll.bat +5 -0
- data/lib/init.rb +16 -0
- data/lib/limelight.jar +0 -0
- data/lib/limelight/animation.rb +41 -0
- data/lib/limelight/builtin/players.rb +16 -0
- data/lib/limelight/builtin/players/button.rb +39 -0
- data/lib/limelight/builtin/players/check_box.rb +50 -0
- data/lib/limelight/builtin/players/combo_box.rb +89 -0
- data/lib/limelight/builtin/players/combo_box_popup_list.rb +19 -0
- data/lib/limelight/builtin/players/combo_box_popup_list_item.rb +21 -0
- data/lib/limelight/builtin/players/curtains.rb +23 -0
- data/lib/limelight/builtin/players/image.rb +54 -0
- data/lib/limelight/builtin/players/password_box.rb +34 -0
- data/lib/limelight/builtin/players/radio_button.rb +65 -0
- data/lib/limelight/builtin/players/stage_mover.rb +31 -0
- data/lib/limelight/builtin/players/stage_sizer.rb +34 -0
- data/lib/limelight/builtin/players/text_area.rb +34 -0
- data/lib/limelight/builtin/players/text_box.rb +34 -0
- data/lib/limelight/builtin/styles.rb +35 -0
- data/lib/limelight/builtin/utilities_production/alert/players/alert.rb +11 -0
- data/lib/limelight/builtin/utilities_production/alert/props.rb +8 -0
- data/lib/limelight/builtin/utilities_production/alert/styles.rb +14 -0
- data/lib/limelight/builtin/utilities_production/incompatible_version/props.rb +20 -0
- data/lib/limelight/builtin/utilities_production/incompatible_version/styles.rb +12 -0
- data/lib/limelight/builtin/utilities_production/production.rb +62 -0
- data/lib/limelight/builtin/utilities_production/stages.rb +12 -0
- data/lib/limelight/builtin/utilities_production/styles.rb +53 -0
- data/lib/limelight/button_group_cache.rb +11 -0
- data/lib/limelight/casting_director.rb +112 -0
- data/lib/limelight/client/playbills.rb +86 -0
- data/lib/limelight/commands/command.rb +168 -0
- data/lib/limelight/commands/create_command.rb +98 -0
- data/lib/limelight/commands/freeze_command.rb +131 -0
- data/lib/limelight/commands/help_command.rb +61 -0
- data/lib/limelight/commands/open_command.rb +60 -0
- data/lib/limelight/commands/pack_command.rb +45 -0
- data/lib/limelight/commands/unpack_command.rb +44 -0
- data/lib/limelight/commands/version_command.rb +31 -0
- data/lib/limelight/data.rb +37 -0
- data/lib/limelight/dsl/build_exception.rb +55 -0
- data/lib/limelight/dsl/menu_bar.rb +71 -0
- data/lib/limelight/dsl/prop_builder.rb +155 -0
- data/lib/limelight/dsl/stage_builder.rb +105 -0
- data/lib/limelight/dsl/styles_builder.rb +157 -0
- data/lib/limelight/file_chooser.rb +68 -0
- data/lib/limelight/file_filter.rb +33 -0
- data/lib/limelight/file_loader.rb +46 -0
- data/lib/limelight/gems.rb +51 -0
- data/lib/limelight/java_couplings.rb +66 -0
- data/lib/limelight/java_util.rb +49 -0
- data/lib/limelight/limelight_exception.rb +24 -0
- data/lib/limelight/main.rb +108 -0
- data/lib/limelight/paint_action.rb +27 -0
- data/lib/limelight/pen.rb +83 -0
- data/lib/limelight/producer.rb +179 -0
- data/lib/limelight/production.rb +169 -0
- data/lib/limelight/prop.rb +367 -0
- data/lib/limelight/scene.rb +151 -0
- data/lib/limelight/specs/spec_helper.rb +87 -0
- data/lib/limelight/specs/test_scene_opener.rb +60 -0
- data/lib/limelight/stage.rb +292 -0
- data/lib/limelight/string.rb +38 -0
- data/lib/limelight/studio.rb +185 -0
- data/lib/limelight/styles.rb +347 -0
- data/lib/limelight/templates/production_templater.rb +49 -0
- data/lib/limelight/templates/scene_templater.rb +47 -0
- data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
- data/lib/limelight/templates/sources/production/init.rb.template +15 -0
- data/lib/limelight/templates/sources/production/production.rb.template +49 -0
- data/lib/limelight/templates/sources/production/spec/spec_helper.rb.template +12 -0
- data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
- data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
- data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
- data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
- data/lib/limelight/templates/sources/scene_spec/scene_spec.rb.template +13 -0
- data/lib/limelight/templates/templater.rb +131 -0
- data/lib/limelight/templates/templater_logger.rb +39 -0
- data/lib/limelight/theater.rb +77 -0
- data/lib/limelight/util.rb +65 -0
- data/lib/limelight/util/downloader.rb +115 -0
- data/lib/limelight/version.rb +20 -0
- data/productions/examples/8thlight.com/about/about.txt +24 -0
- data/productions/examples/8thlight.com/about/props.rb +11 -0
- data/productions/examples/8thlight.com/about/styles.rb +2 -0
- data/productions/examples/8thlight.com/footer.rb +6 -0
- data/productions/examples/8thlight.com/home/props.rb +28 -0
- data/productions/examples/8thlight.com/home/styles.rb +2 -0
- data/productions/examples/8thlight.com/images/anvil.jpg +0 -0
- data/productions/examples/8thlight.com/images/bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/botticelli.jpg +0 -0
- data/productions/examples/8thlight.com/images/button_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/canvas_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/footer_bg.jpg +0 -0
- data/productions/examples/8thlight.com/images/header.jpg +0 -0
- data/productions/examples/8thlight.com/images/moses.jpg +0 -0
- data/productions/examples/8thlight.com/images/statemachine_thumbnail.png +0 -0
- data/productions/examples/8thlight.com/images/thumbnail_book.jpg +0 -0
- data/productions/examples/8thlight.com/menu.rb +11 -0
- data/productions/examples/8thlight.com/services/props.rb +11 -0
- data/productions/examples/8thlight.com/services/services.txt +8 -0
- data/productions/examples/8thlight.com/services/styles.rb +2 -0
- data/productions/examples/8thlight.com/stages.rb +8 -0
- data/productions/examples/8thlight.com/styles.rb +210 -0
- data/productions/examples/calculator/players/button.rb +24 -0
- data/productions/examples/calculator/players/calculator.rb +15 -0
- data/productions/examples/calculator/players/calculator_model.rb +13 -0
- data/productions/examples/calculator/props.rb +23 -0
- data/productions/examples/calculator/styles.rb +36 -0
- data/productions/examples/langstons_ant/html_javascript/ant.css +39 -0
- data/productions/examples/langstons_ant/html_javascript/ant.html +22 -0
- data/productions/examples/langstons_ant/html_javascript/ant.js +23 -0
- data/productions/examples/langstons_ant/init.rb +4 -0
- data/productions/examples/langstons_ant/players/ant.rb +103 -0
- data/productions/examples/langstons_ant/players/log.rb +29 -0
- data/productions/examples/langstons_ant/players/start_stop_button.rb +37 -0
- data/productions/examples/langstons_ant/players/world.rb +35 -0
- data/productions/examples/langstons_ant/props.rb +22 -0
- data/productions/examples/langstons_ant/styles.rb +104 -0
- data/productions/examples/sandbox/alerts/incompatible_production/default_scene/props.rb +10 -0
- data/productions/examples/sandbox/alerts/incompatible_production/default_scene/styles.rb +32 -0
- data/productions/examples/sandbox/alerts/incompatible_production/production.rb +52 -0
- data/productions/examples/sandbox/alerts/incompatible_production/spec/default_scene/default_scene_spec.rb +16 -0
- data/productions/examples/sandbox/alerts/incompatible_production/spec/spec_helper.rb +8 -0
- data/productions/examples/sandbox/alerts/incompatible_production/stages.rb +20 -0
- data/productions/examples/sandbox/alerts/incompatible_production/styles.rb +15 -0
- data/productions/examples/sandbox/alerts/players/alerts.rb +17 -0
- data/productions/examples/sandbox/alerts/props.rb +10 -0
- data/productions/examples/sandbox/alerts/styles.rb +46 -0
- data/productions/examples/sandbox/background_images/props.rb +22 -0
- data/productions/examples/sandbox/background_images/styles.rb +40 -0
- data/productions/examples/sandbox/click_me/players/chromaton.rb +52 -0
- data/productions/examples/sandbox/click_me/props.rb +8 -0
- data/productions/examples/sandbox/click_me/styles.rb +11 -0
- data/productions/examples/sandbox/floaters/players/floater.rb +108 -0
- data/productions/examples/sandbox/floaters/players/surface.rb +21 -0
- data/productions/examples/sandbox/floaters/props.rb +10 -0
- data/productions/examples/sandbox/floaters/styles.rb +24 -0
- data/productions/examples/sandbox/frameing/players/sandbox.rb +17 -0
- data/productions/examples/sandbox/frameing/props.rb +35 -0
- data/productions/examples/sandbox/frameing/styles.rb +45 -0
- data/productions/examples/sandbox/gradients/players/spinner.rb +20 -0
- data/productions/examples/sandbox/gradients/players/teaser.rb +19 -0
- data/productions/examples/sandbox/gradients/players/wave.rb +19 -0
- data/productions/examples/sandbox/gradients/players/waves.rb +19 -0
- data/productions/examples/sandbox/gradients/props.rb +13 -0
- data/productions/examples/sandbox/gradients/styles.rb +47 -0
- data/productions/examples/sandbox/header.rb +22 -0
- data/productions/examples/sandbox/homer/players/homer.rb +24 -0
- data/productions/examples/sandbox/homer/props.rb +10 -0
- data/productions/examples/sandbox/homer/styles.rb +16 -0
- data/productions/examples/sandbox/images/arch.jpg +0 -0
- data/productions/examples/sandbox/images/beach.jpg +0 -0
- data/productions/examples/sandbox/images/homer.jpg +0 -0
- data/productions/examples/sandbox/images/limelight_spotlight.jpg +0 -0
- data/productions/examples/sandbox/images/logo.png +0 -0
- data/productions/examples/sandbox/images/marilyn.jpg +0 -0
- data/productions/examples/sandbox/images/space.png +0 -0
- data/productions/examples/sandbox/images_scene/props.rb +36 -0
- data/productions/examples/sandbox/images_scene/styles.rb +34 -0
- data/productions/examples/sandbox/inputs/players/button_input.rb +48 -0
- data/productions/examples/sandbox/inputs/players/check_box_input.rb +40 -0
- data/productions/examples/sandbox/inputs/players/combo_box_input.rb +41 -0
- data/productions/examples/sandbox/inputs/players/radio_button_input.rb +43 -0
- data/productions/examples/sandbox/inputs/players/text_area_input.rb +36 -0
- data/productions/examples/sandbox/inputs/players/text_box_input.rb +36 -0
- data/productions/examples/sandbox/inputs/props.rb +40 -0
- data/productions/examples/sandbox/inputs/styles.rb +39 -0
- data/productions/examples/sandbox/kiosk/players/kiosk.rb +39 -0
- data/productions/examples/sandbox/kiosk/props.rb +9 -0
- data/productions/examples/sandbox/kiosk/styles.rb +37 -0
- data/productions/examples/sandbox/players/sandbox.rb +11 -0
- data/productions/examples/sandbox/rounded_corners/players/box.rb +11 -0
- data/productions/examples/sandbox/rounded_corners/props.rb +22 -0
- data/productions/examples/sandbox/rounded_corners/styles.rb +17 -0
- data/productions/examples/sandbox/scrolling/players/add_button.rb +19 -0
- data/productions/examples/sandbox/scrolling/players/cell.rb +15 -0
- data/productions/examples/sandbox/scrolling/props.rb +45 -0
- data/productions/examples/sandbox/scrolling/styles.rb +33 -0
- data/productions/examples/sandbox/sketching/players/sketchpad.rb +46 -0
- data/productions/examples/sandbox/sketching/props.rb +25 -0
- data/productions/examples/sandbox/sketching/styles.rb +35 -0
- data/productions/examples/sandbox/sounds/bird.au +0 -0
- data/productions/examples/sandbox/sounds/cat.au +0 -0
- data/productions/examples/sandbox/sounds/cow.au +0 -0
- data/productions/examples/sandbox/sounds/dog.au +0 -0
- data/productions/examples/sandbox/sounds/donkey.au +0 -0
- data/productions/examples/sandbox/sounds/duck.au +0 -0
- data/productions/examples/sandbox/sounds/players/clip.rb +10 -0
- data/productions/examples/sandbox/sounds/props.rb +10 -0
- data/productions/examples/sandbox/sounds/styles.rb +17 -0
- data/productions/examples/sandbox/spec/alerts/alerts_spec.rb +16 -0
- data/productions/examples/sandbox/stage_handles/players/sizer.rb +35 -0
- data/productions/examples/sandbox/stage_handles/props.rb +17 -0
- data/productions/examples/sandbox/stage_handles/styles.rb +58 -0
- data/productions/examples/sandbox/stages.rb +8 -0
- data/productions/examples/sandbox/styles.rb +35 -0
- data/productions/examples/sandbox/teaser/players/fader.rb +58 -0
- data/productions/examples/sandbox/teaser/props.rb +14 -0
- data/productions/examples/sandbox/teaser/styles.rb +21 -0
- data/productions/examples/tutorials/tutorial_1/players/sample.rb +11 -0
- data/productions/examples/tutorials/tutorial_1/props.rb +9 -0
- data/productions/examples/tutorials/tutorial_1/styles.rb +25 -0
- data/productions/playbills.lll +1 -0
- data/productions/stage_composer/init.rb +10 -0
- data/productions/stage_composer/inspector/players/inspector.rb +80 -0
- data/productions/stage_composer/inspector/players/prop_row.rb +12 -0
- data/productions/stage_composer/inspector/players/prop_tree.rb +33 -0
- data/productions/stage_composer/inspector/players/style_table.rb +12 -0
- data/productions/stage_composer/inspector/players/style_value.rb +16 -0
- data/productions/stage_composer/inspector/props.rb +19 -0
- data/productions/stage_composer/inspector/styles.rb +71 -0
- data/productions/stage_composer/lib/init.rb +5 -0
- data/productions/stage_composer/lib/limelight/composer/controller.rb +51 -0
- data/productions/stage_composer/lib/limelight/composer/lethargy.rb +24 -0
- data/productions/stage_composer/production.rb +6 -0
- data/productions/stage_composer/stages.rb +15 -0
- data/productions/startup/images/logo.png +0 -0
- data/productions/startup/images/splash.png +0 -0
- data/productions/startup/production.rb +52 -0
- data/productions/startup/spec/default_scene/default_scene_spec.rb +16 -0
- data/productions/startup/spec/spec_helper.rb +8 -0
- data/productions/startup/stages.rb +9 -0
- data/productions/startup/styles.rb +15 -0
- data/productions/startup/welcome/players/browse_button.rb +10 -0
- data/productions/startup/welcome/players/download_button.rb +17 -0
- data/productions/startup/welcome/players/sandbox_button.rb +11 -0
- data/productions/startup/welcome/props.rb +23 -0
- data/productions/startup/welcome/styles.rb +103 -0
- data/spec/limelight/builtin/players/button_spec.rb +20 -0
- data/spec/limelight/builtin/players/check_box_spec.rb +29 -0
- data/spec/limelight/builtin/players/combo_box_spec.rb +29 -0
- data/spec/limelight/builtin/players/image_spec.rb +43 -0
- data/spec/limelight/builtin/players/password_box_spec.rb +27 -0
- data/spec/limelight/builtin/players/radio_button_spec.rb +64 -0
- data/spec/limelight/builtin/players/stage_mover_spec.rb +36 -0
- data/spec/limelight/builtin/players/stage_sizer_spec.rb +40 -0
- data/spec/limelight/builtin/players/text_area_spec.rb +27 -0
- data/spec/limelight/builtin/players/text_box_spec.rb +27 -0
- data/spec/limelight/builtin/utilities_production/spec_helper.rb +7 -0
- data/spec/limelight/builtin/utilities_production/utilities_production_spec.rb +146 -0
- data/spec/limelight/casting_director_spec.rb +164 -0
- data/spec/limelight/client/playbills_spec.rb +79 -0
- data/spec/limelight/commands/command_spec.rb +26 -0
- data/spec/limelight/commands/create_command_spec.rb +108 -0
- data/spec/limelight/commands/freeze_command_spec.rb +143 -0
- data/spec/limelight/commands/help_command_spec.rb +42 -0
- data/spec/limelight/commands/open_command_spec.rb +52 -0
- data/spec/limelight/commands/pack_command_spec.rb +26 -0
- data/spec/limelight/commands/unpack_command_spec.rb +47 -0
- data/spec/limelight/data_spec.rb +36 -0
- data/spec/limelight/dsl/prop_builder_spec.rb +245 -0
- data/spec/limelight/dsl/stage_builder_spec.rb +90 -0
- data/spec/limelight/dsl/styles_builder_spec.rb +194 -0
- data/spec/limelight/file_chooser_spec.rb +64 -0
- data/spec/limelight/file_filter_spec.rb +29 -0
- data/spec/limelight/file_loader_spec.rb +28 -0
- data/spec/limelight/gems_spec.rb +92 -0
- data/spec/limelight/java_util_spec.rb +37 -0
- data/spec/limelight/main_spec.rb +40 -0
- data/spec/limelight/paint_action_spec.rb +30 -0
- data/spec/limelight/pen_spec.rb +62 -0
- data/spec/limelight/producer_spec.rb +210 -0
- data/spec/limelight/production_spec.rb +100 -0
- data/spec/limelight/prop_spec.rb +431 -0
- data/spec/limelight/scene_spec.rb +173 -0
- data/spec/limelight/stage_spec.rb +202 -0
- data/spec/limelight/string_spec.rb +38 -0
- data/spec/limelight/studio_spec.rb +157 -0
- data/spec/limelight/styles_spec.rb +53 -0
- data/spec/limelight/templates/production_templater_spec.rb +66 -0
- data/spec/limelight/templates/scene_templater_spec.rb +51 -0
- data/spec/limelight/templates/templater_logger_spec.rb +41 -0
- data/spec/limelight/templates/templater_spec.rb +107 -0
- data/spec/limelight/theater_spec.rb +72 -0
- data/spec/limelight/util/downloader_spec.rb +92 -0
- data/spec/spec_helper.rb +70 -0
- 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
|