limelight 0.2.1-java → 0.3.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 (111) hide show
  1. data/bin/ll.bat +1 -1
  2. data/lib/i4jruntime.jar +0 -0
  3. data/lib/junit-4.4.jar +0 -0
  4. data/lib/limelight.jar +0 -0
  5. data/lib/limelight/animation.rb +3 -3
  6. data/lib/limelight/builtin/players.rb +2 -1
  7. data/lib/limelight/builtin/players/combo_box.rb +8 -2
  8. data/lib/limelight/builtin/players/image.rb +47 -0
  9. data/lib/limelight/builtin/styles.rb +1 -1
  10. data/lib/limelight/casting_director.rb +70 -39
  11. data/lib/limelight/commands/command.rb +150 -0
  12. data/lib/limelight/commands/create_command.rb +79 -0
  13. data/lib/limelight/commands/freeze_command.rb +113 -0
  14. data/lib/limelight/commands/open_command.rb +49 -0
  15. data/lib/limelight/commands/pack_command.rb +45 -0
  16. data/lib/limelight/dsl/build_exception.rb +51 -0
  17. data/lib/limelight/dsl/menu_bar.rb +71 -0
  18. data/lib/limelight/dsl/production_builder.rb +71 -0
  19. data/lib/limelight/dsl/prop_builder.rb +155 -0
  20. data/lib/limelight/dsl/stage_builder.rb +105 -0
  21. data/lib/limelight/dsl/styles_builder.rb +134 -0
  22. data/lib/limelight/file_loader.rb +46 -0
  23. data/lib/limelight/gems.rb +45 -0
  24. data/lib/limelight/java_couplings.rb +7 -2
  25. data/lib/limelight/java_util.rb +2 -15
  26. data/lib/limelight/main.rb +7 -5
  27. data/lib/limelight/producer.rb +87 -66
  28. data/lib/limelight/production.rb +42 -4
  29. data/lib/limelight/prop.rb +84 -70
  30. data/lib/limelight/scene.rb +75 -20
  31. data/lib/limelight/specs/spec_helper.rb +58 -0
  32. data/lib/limelight/stage.rb +11 -6
  33. data/lib/limelight/string.rb +35 -0
  34. data/lib/limelight/studio.rb +29 -0
  35. data/lib/limelight/templates/production_templater.rb +42 -0
  36. data/lib/limelight/templates/scene_templater.rb +41 -0
  37. data/lib/limelight/templates/sources/freezing/limelight_init.rb.template +5 -0
  38. data/lib/limelight/templates/sources/production/init.rb.template +15 -0
  39. data/lib/limelight/templates/sources/production/production.rb.template +9 -0
  40. data/lib/limelight/templates/sources/production/stages.rb.template +17 -0
  41. data/lib/limelight/templates/sources/production/styles.rb.template +12 -0
  42. data/lib/limelight/templates/sources/scene/props.rb.template +6 -0
  43. data/lib/limelight/templates/sources/scene/styles.rb.template +18 -0
  44. data/lib/limelight/templates/templater.rb +128 -0
  45. data/lib/limelight/templates/templater_logger.rb +36 -0
  46. data/lib/limelight/theater.rb +21 -7
  47. data/lib/limelight/util.rb +22 -6
  48. data/lib/limelight/version.rb +2 -2
  49. data/productions/examples/8thlight.com/styles.rb +1 -1
  50. data/productions/examples/langstons_ant/html_javascript/ant.html +1 -1
  51. data/productions/examples/langstons_ant/init.rb +1 -0
  52. data/productions/examples/langstons_ant/players/log.rb +2 -2
  53. data/productions/examples/langstons_ant/players/world.rb +0 -26
  54. data/productions/examples/sandbox.llp +0 -0
  55. data/productions/examples/sandbox/click_me/players/chromaton.rb +10 -4
  56. data/productions/examples/sandbox/floaters/players/floater.rb +4 -2
  57. data/productions/examples/sandbox/gradients/players/spinner.rb +5 -1
  58. data/productions/examples/sandbox/gradients/players/teaser.rb +2 -2
  59. data/productions/examples/sandbox/gradients/players/wave.rb +2 -2
  60. data/productions/examples/sandbox/gradients/players/waves.rb +2 -2
  61. data/productions/examples/sandbox/header.rb +1 -0
  62. data/productions/examples/sandbox/images/logo.png +0 -0
  63. data/productions/examples/sandbox/images_scene/props.rb +25 -0
  64. data/productions/examples/sandbox/images_scene/styles.rb +30 -0
  65. data/productions/examples/sandbox/inputs/styles.rb +1 -1
  66. data/productions/examples/sandbox/scrolling/props.rb +12 -12
  67. data/productions/examples/sandbox/teaser/players/fader.rb +2 -8
  68. data/productions/stage_composer/inspector/styles.rb +2 -2
  69. data/productions/startup/styles.rb +2 -2
  70. data/spec/builtin/players/button_spec.rb +0 -1
  71. data/spec/builtin/players/image_spec.rb +41 -0
  72. data/spec/casting_director_spec.rb +114 -44
  73. data/spec/commands/command_spec.rb +18 -0
  74. data/spec/commands/create_command_spec.rb +74 -0
  75. data/spec/commands/freeze_command_spec.rb +59 -0
  76. data/spec/commands/open_command_spec.rb +30 -0
  77. data/spec/commands/pack_command_spec.rb +23 -0
  78. data/spec/dsl/production_builder_spec.rb +46 -0
  79. data/spec/{prop_builder_spec.rb → dsl/prop_builder_spec.rb} +80 -24
  80. data/spec/{stage_builder_spec.rb → dsl/stage_builder_spec.rb} +4 -4
  81. data/spec/{styles_builder_spec.rb → dsl/styles_builder_spec.rb} +6 -6
  82. data/spec/{loaders/file_loader_spec.rb → file_loader_spec.rb} +4 -4
  83. data/spec/gems_spec.rb +83 -0
  84. data/spec/java_util_spec.rb +1 -17
  85. data/spec/main_spec.rb +17 -0
  86. data/spec/producer_spec.rb +89 -79
  87. data/spec/production_spec.rb +28 -3
  88. data/spec/prop_spec.rb +82 -16
  89. data/spec/scene_spec.rb +73 -3
  90. data/spec/spec_helper.rb +37 -1
  91. data/spec/stage_spec.rb +10 -1
  92. data/spec/string_spec.rb +35 -0
  93. data/spec/studio_spec.rb +14 -0
  94. data/spec/styles_spec.rb +14 -0
  95. data/spec/templates/production_templater_spec.rb +44 -0
  96. data/spec/templates/scene_templater_spec.rb +25 -0
  97. data/spec/templates/templater_logger_spec.rb +38 -0
  98. data/spec/templates/templater_spec.rb +104 -0
  99. data/spec/theater_spec.rb +12 -21
  100. metadata +75 -23
  101. data/bin/icons/splash.png +0 -0
  102. data/lib/limelight/build_exception.rb +0 -48
  103. data/lib/limelight/commands.rb +0 -52
  104. data/lib/limelight/loaders/file_scene_loader.rb +0 -49
  105. data/lib/limelight/menu_bar.rb +0 -68
  106. data/lib/limelight/production_builder.rb +0 -66
  107. data/lib/limelight/prop_builder.rb +0 -119
  108. data/lib/limelight/stage_builder.rb +0 -103
  109. data/lib/limelight/styles_builder.rb +0 -131
  110. data/spec/commands_spec.rb +0 -34
  111. data/spec/production_builder_spec.rb +0 -48
@@ -3,21 +3,15 @@
3
3
 
4
4
  module Fader
5
5
 
6
- def self.extended(extended_block)
7
- puts "#{self}.extended by #{extended_block}"
8
- end
9
-
10
6
  def mouse_entered(e)
11
7
  @color = style.background_color
12
- @base_alpha = (style.background_color[4..-1] + style.background_color[4..-1]).hex
8
+ @base_alpha = @color[7..-1].hex
13
9
 
14
10
  @step = (255 - @base_alpha) / 50
15
11
  @step = 1 if @step == 0
16
12
  @current_alpha = @base_alpha
17
- @lastUpdate = Time.now
13
+
18
14
  @animation = animate(:updates_per_second => 25) do
19
- puts "last update delay: #{Time.now - @lastUpdate}"
20
- @lastUpdate = Time.now
21
15
  @current_alpha += @step
22
16
  if @current_alpha < @base_alpha
23
17
  @current_alpha = @base_alpha
@@ -60,8 +60,8 @@ style_name {
60
60
  height "100%"
61
61
  vertical_alignment :center
62
62
  horizontal_alignment :right
63
- getHorizontalScrollBar :off
64
- getVerticalScrollBar :off
63
+ horizontal_scrollbar :off
64
+ vertical_scrollbar :off
65
65
  }
66
66
 
67
67
  style_value {
@@ -30,7 +30,7 @@ intro {
30
30
  width "100%"
31
31
  text_color :white
32
32
  font_face "Arial Rounded MT Bold"
33
- font_style "italics"
33
+ font_style "italic"
34
34
  font_size 25
35
35
  }
36
36
 
@@ -73,7 +73,7 @@ browse_button {
73
73
  width "100%"
74
74
  text_color :white
75
75
  font_face "Arial Rounded MT Bold"
76
- font_style "italics"
76
+ font_style "italic"
77
77
  font_size 25
78
78
  hover {
79
79
  text_color "#67b313"
@@ -9,7 +9,6 @@ require 'limelight/builtin/players/button'
9
9
  describe Limelight::Builtin::Players::Button do
10
10
 
11
11
  before(:each) do
12
- @scene = Limelight::Scene.new(:casting_director => make_mock("caster", :fill_cast => nil))
13
12
  @prop = Limelight::Prop.new
14
13
  @prop.include_player(Limelight::Builtin::Players::Button)
15
14
  end
@@ -0,0 +1,41 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+ require 'limelight/builtin/players/image'
3
+ require 'limelight/prop'
4
+
5
+ describe Limelight::Builtin::Players::Image do
6
+
7
+ before(:each) do
8
+ # @scene = Limelight::Scene.new(:casting_director => make_mock("caster", :fill_cast => nil))
9
+ @prop = Limelight::Prop.new
10
+ @prop.include_player(Limelight::Builtin::Players::Image)
11
+ end
12
+
13
+ it "should have a ImagePanel" do
14
+ image_panel = @prop.panel.children[0]
15
+ image_panel.class.should == Limelight::UI::Model::ImagePanel
16
+ @prop.image_panel.should be(image_panel)
17
+ end
18
+
19
+ it "should have an image" do
20
+ @prop.image = "some/path_to/image.png"
21
+ @prop.panel.children[0].imageFile.should == "some/path_to/image.png";
22
+ @prop.image.should == "some/path_to/image.png";
23
+ end
24
+
25
+ it "should have rotation" do
26
+ @prop.rotation = 180
27
+ @prop.rotation.should == 180
28
+ @prop.image_panel.rotation.should == 180
29
+ end
30
+
31
+ it "should have scaled" do
32
+ @prop.scaled?.should == true
33
+ @prop.image_panel.scaled.should == true
34
+
35
+ @prop.scaled = false;
36
+
37
+ @prop.scaled?.should == false
38
+ @prop.image_panel.scaled.should == false
39
+ end
40
+
41
+ end
@@ -3,13 +3,19 @@
3
3
 
4
4
  require File.expand_path(File.dirname(__FILE__) + "/spec_helper")
5
5
  require 'limelight/casting_director'
6
- require 'limelight/prop_builder'
6
+ require 'limelight/dsl/prop_builder'
7
+ require 'limelight/production'
8
+ require 'limelight/file_loader'
7
9
 
8
10
  describe Limelight::CastingDirector do
9
11
 
10
12
  before(:each) do
11
- @scene = Limelight::Scene.new(:casting_director => make_mock("casting_director", :fill_cast => nil), :path => "scene_path")
12
- @loader = make_mock("loader")
13
+ TestDir.clean
14
+ $casted_props = []
15
+ $casted_players = []
16
+ @scene = Limelight::Scene.new(:casting_director => make_mock("casting_director", :fill_cast => nil), :path => TestDir.path("scene_path"))
17
+ @scene.illuminate
18
+ @loader = Limelight::FileLoader.for_root(TestDir.root)
13
19
  @casting_director = Limelight::CastingDirector.new(@loader)
14
20
  end
15
21
 
@@ -17,78 +23,142 @@ describe Limelight::CastingDirector do
17
23
  @root = Limelight::Prop.new(options)
18
24
  @scene << @root
19
25
  end
26
+
27
+ def prepare_player(location, name, src = nil)
28
+ if src == nil
29
+ src = "module #{name.camalized}; def self.extended(prop); $casted_props << prop; $casted_players << self; end; end;"
30
+ end
31
+ TestDir.create_file("#{location}/players/#{name}.rb", src)
32
+ end
20
33
 
21
34
  it "should include default players" do
22
- prepare_fake_player("root")
35
+ prepare_player("scene_path", "root")
23
36
  make_root(:name => "root")
24
37
 
25
- @root.should_receive(:include_player).with("root module")
26
-
27
38
  @casting_director.fill_cast(@root)
39
+
40
+ $casted_props.length.should == 1
41
+ $casted_props[0].should == @root
42
+ $casted_players[0].name.should include("Root")
43
+ @root.is_a?($casted_players[0]).should == true
28
44
  end
29
-
30
- def prepare_fake_player(name)
31
- @loader.should_receive(:exists?).with("scene_path/players/#{name}.rb").and_return(true)
32
- @loader.should_receive(:path_to).with("scene_path/players/#{name}.rb").and_return("scene_path/players/#{name}.rb")
33
- Kernel.should_receive(:load).with("scene_path/players/#{name}.rb").and_return(true)
34
- Object.should_receive(:const_defined?).with(name.camalized).and_return(true)
35
- Object.should_receive(:const_get).with(name.camalized).and_return("#{name} module")
45
+
46
+ it "should not creat the player in the scene's cast and not currupt the global namespace" do
47
+ prepare_player("scene_path", "root")
48
+ make_root(:name => "root")
49
+
50
+ @casting_director.fill_cast(@root)
51
+
52
+ Object.const_defined?("Root").should == false
53
+ @scene.cast.const_defined?("Root").should == true
36
54
  end
37
55
 
38
56
  it "should not load any default players if they don't exist" do
39
57
  make_root(:name => "root")
40
- @loader.stub!(:exists?).and_return false
41
-
42
58
  @root.should_not_receive(:include_player)
43
- @child.should_not_receive(:include_player)
44
- @grandchild.should_not_receive(:include_player)
45
59
 
46
60
  @casting_director.fill_cast(@root)
61
+
62
+ $casted_props.length.should == 0
63
+ $casted_players.length.should == 0
47
64
  end
48
65
 
49
66
  it "should not load any players if they don't define a module with the right name" do
50
67
  make_root(:name => "root")
51
- @loader.stub!(:exists?).and_return(true)
52
- @loader.stub!(:path_to).and_return("blah")
53
- Kernel.stub!(:load).and_return(true)
54
- Object.stub!(:const_defined?).and_return(false)
55
-
68
+ prepare_player("scene_path", "root", "# empty file")
56
69
  @root.should_not_receive(:include_player)
57
-
70
+
58
71
  @casting_director.fill_cast(@root)
72
+
73
+ $casted_props.length.should == 0
74
+ $casted_players.length.should == 0
59
75
  end
60
-
76
+
61
77
  it "should load builtin players" do
62
- @loader.stub!(:exists?).and_return(false)
63
78
  make_root(:name => "root", :players => "button")
64
-
79
+
65
80
  @casting_director.fill_cast(@root)
66
-
81
+
67
82
  @root.is_a?(Limelight::Builtin::Players::Button).should == true
68
83
  end
69
-
84
+
70
85
  it "should load custom players" do
71
- @loader.stub!(:exists?).and_return(false)
72
- prepare_fake_player("custom_player")
86
+ prepare_player("scene_path", "custom_player")
73
87
  make_root(:name => "root", :players => "custom_player")
74
-
75
- @root.should_receive(:include_player).with("custom_player module")
76
-
88
+
77
89
  @casting_director.fill_cast(@root)
78
- end
79
-
90
+
91
+ $casted_props[0].should == @root
92
+ $casted_players[0].name.should include("CustomPlayer");
93
+ @root.is_a?($casted_players[0]).should == true
94
+ end
95
+
80
96
  it "should handle multiple players" do
81
- @loader.stub!(:exists?).and_return(false)
82
- prepare_fake_player("root")
83
- prepare_fake_player("custom_player")
84
-
97
+ prepare_player("scene_path", "root")
98
+ prepare_player("scene_path", "custom_player")
99
+
85
100
  make_root(:name => "root", :players => "custom_player button")
86
-
87
- @root.should_receive(:include_player).with("root module")
88
- @root.should_receive(:include_player).with("custom_player module")
89
- @root.should_receive(:include_player).with(Limelight::Builtin::Players::Button)
90
-
101
+
102
+ @casting_director.fill_cast(@root)
103
+
104
+ $casted_props[0].should == @root
105
+ $casted_players[0].name.should include("Root");
106
+ @root.is_a?($casted_players[0]).should == true
107
+ @root.is_a?(Limelight::Builtin::Players::Button).should == true
108
+ $casted_players[1].name.should include("CustomPlayer");
109
+ @root.is_a?($casted_players[1]).should == true
110
+ end
111
+
112
+ it "should load shared custom players" do
113
+ production = Limelight::Production.new(TestDir.root)
114
+ @scene.production = production
115
+
116
+ prepare_player("scene_path", "root")
117
+ prepare_player(".", "shared_player")
118
+ make_root(:name => "root", :players => "shared_player")
119
+
120
+ @casting_director.fill_cast(@root)
121
+
122
+ $casted_props[0].should == @root
123
+ $casted_players[0].name.should include("Root");
124
+ $casted_players[1].name.should include("SharedPlayer");
125
+ @root.is_a?($casted_players[0]).should == true
126
+ @root.is_a?($casted_players[1]).should == true
127
+ end
128
+
129
+ it "should not allow casting without a scene" do
130
+ lambda { @casting_director.fill_cast(Limelight::Prop.new) }.should raise_error(Limelight::LimelightException, "Cannot cast a Prop without a Scene.")
131
+ end
132
+
133
+ it "should not reload known players in a scene" do
134
+ prepare_player("scene_path", "root")
135
+
136
+ make_root(:name => "root")
137
+ @casting_director.fill_cast(@root)
138
+ first_root_player = $casted_players[0]
139
+
140
+ prepare_player("scene_path", "root", "module Root; def foo; end; end;")
141
+ make_root(:name => "root")
142
+ @casting_director.fill_cast(@root)
143
+
144
+ @root.should_not respond_to(:foo)
145
+ @root.is_a?(first_root_player).should == true
146
+ end
147
+
148
+ it "should not reload known players in a scene even with a new casting director" do
149
+ prepare_player("scene_path", "root")
150
+
151
+ make_root(:name => "root")
152
+ @casting_director.fill_cast(@root)
153
+ first_root_player = $casted_players[0]
154
+
155
+ @casting_director = Limelight::CastingDirector.new(@loader)
156
+ prepare_player("scene_path", "root", "module Root; def foo; end; end;")
157
+ make_root(:name => "root")
91
158
  @casting_director.fill_cast(@root)
159
+
160
+ @root.should_not respond_to(:foo)
161
+ @root.is_a?(first_root_player).should == true
92
162
  end
93
163
 
94
164
  end
@@ -0,0 +1,18 @@
1
+ #- Copyright 2008 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/commands/command'
6
+
7
+ describe Limelight::Commands::Command do
8
+
9
+ before(:each) do
10
+ end
11
+
12
+ it "should allow subclassed to be installed" do
13
+ myclass = class MyClass < Limelight::Commands::Command; install_as "mine"; end;
14
+
15
+ Limelight::Commands::LISTING["mine"].should == myclass
16
+ end
17
+
18
+ end
@@ -0,0 +1,74 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+ require 'limelight/commands/create_command'
3
+ require 'limelight/templates/production_templater'
4
+ require 'limelight/templates/scene_templater'
5
+
6
+
7
+ describe Limelight::Commands::CreateCommand do
8
+
9
+ before(:all) do
10
+ @command_class = Limelight::Commands::CreateCommand
11
+ end
12
+
13
+ before(:each) do
14
+ @command = @command_class.new
15
+ @command.instance_eval("def parse_error(e=nil); raise 'Usage called! ' + e + e.backtrace.inspect; end;")
16
+ end
17
+
18
+ it "should be listed" do
19
+ Limelight::Commands::LISTING["create"].should == @command_class
20
+ end
21
+
22
+ it "should create a production" do
23
+ production_templater = make_mock("production_templater")
24
+ Limelight::Templates::ProductionTemplater.should_receive(:new).with("blah", "default_scene").and_return(production_templater)
25
+ scene_templater = make_mock("scene_templater")
26
+ Limelight::Templates::SceneTemplater.should_receive(:new).with("blah/default_scene").and_return(scene_templater)
27
+ production_templater.should_receive(:generate)
28
+ scene_templater.should_receive(:generate)
29
+
30
+ @command.run(["production", "blah"])
31
+ end
32
+
33
+ it "should create a scene" do
34
+ Limelight::Templates::ProductionTemplater.should_not_receive(:new)
35
+ scene_templater = make_mock("scene_templater")
36
+ Limelight::Templates::SceneTemplater.should_receive(:new).with("prod/some_scene").and_return(scene_templater)
37
+ scene_templater.should_receive(:generate)
38
+
39
+ @command.run(["scene", "prod/some_scene"])
40
+ end
41
+
42
+ it "should print useage on invalid template type" do
43
+ @command.should_receive(:parse_error).at_least(:once)
44
+
45
+ @command.run(["blah"])
46
+ end
47
+
48
+ it "should print useage on missing paths" do
49
+ @command.should_receive(:parse_error).at_least(:once)
50
+
51
+ @command.run(["production"])
52
+ end
53
+
54
+ it "should have a default scene name" do
55
+ @command.parse ["production", "blah"]
56
+
57
+ @command.default_scene_name.should == "default_scene"
58
+ @command.template_type.should == "production"
59
+ @command.path.should == "blah"
60
+ end
61
+
62
+ it "should parse a scene option" do
63
+ @command.parse ["-s", "scene_name", "production", "blah"]
64
+ @command.default_scene_name.should == "scene_name"
65
+ @command.template_type.should == "production"
66
+ @command.path.should == "blah"
67
+
68
+ @command.parse ["--scene=another_scene", "production", "blah"]
69
+ @command.default_scene_name.should == "another_scene"
70
+ @command.template_type.should == "production"
71
+ @command.path.should == "blah"
72
+ end
73
+
74
+ end
@@ -0,0 +1,59 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+ require 'limelight/commands/freeze_command'
3
+
4
+ describe Limelight::Commands::FreezeCommand do
5
+
6
+ before(:all) do
7
+ @command_class = Limelight::Commands::FreezeCommand
8
+ @command = @command_class.new
9
+ end
10
+
11
+ before(:each) do
12
+ @command = @command_class.new
13
+ @command.instance_eval("def usage(e=nil); raise 'Usage called! ' + e; end;")
14
+ end
15
+
16
+ it "should be listed" do
17
+ Limelight::Commands::LISTING["freeze"].should == @command_class
18
+ end
19
+
20
+ it "should parse no options" do
21
+ @command.parse ["some_gem"]
22
+
23
+ @command.gem_name.should == "some_gem"
24
+ @command.production_path.should == "."
25
+ @command.gem_version.should == nil
26
+ end
27
+
28
+ it "should parse production path option" do
29
+ @command.parse ["-p", "prod/path", "some_gem"]
30
+ @command.gem_name.should == "some_gem"
31
+ @command.production_path.should == "prod/path"
32
+
33
+ @command.parse ["--production=prod/path2", "some_gem"]
34
+ @command.gem_name.should == "some_gem"
35
+ @command.production_path.should == "prod/path2"
36
+ end
37
+
38
+ it "should parse version option" do
39
+ @command.parse ["-v", "1.2.3", "some_gem"]
40
+ @command.gem_name.should == "some_gem"
41
+ @command.gem_version.should == "1.2.3"
42
+
43
+ @command.parse ["--version=3.2.1", "some_gem"]
44
+ @command.gem_name.should == "some_gem"
45
+ @command.gem_version.should == "3.2.1"
46
+ end
47
+
48
+ it "should check if it's a gem file" do
49
+ @command.is_gem_file?("some.gem").should == true
50
+ @command.is_gem_file?("some-java_0.2.1.gem").should == true
51
+ @command.is_gem_file?("/some.gem").should == true
52
+ @command.is_gem_file?("/dir/dir2/some.gem").should == true
53
+ @command.is_gem_file?("../dir/dir2/some.gem").should == true
54
+
55
+ @command.is_gem_file?("some_gem").should == false
56
+ @command.is_gem_file?("some_gem-java.0.3.1").should == false
57
+ end
58
+
59
+ end