flonkerton 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -72,8 +72,11 @@ See [examples](/apillet/flonkerton/tree/master/examples/).
72
72
  ## Related Projects
73
73
 
74
74
  * [Chingu](http://github.com/ippa/chingu)
75
+ * [Compote](http://github.com/HakubJozak/compote)
75
76
  * [Exuberant](http://github.com/adamsanderson/lexery/tree/master/lib/exuberant)
76
77
  * [FWD](http://github.com/walski/FWD)
78
+ * [Gosu Extensions](http://github.com/floere/gosu_extensions)
79
+ * [Grandpa](http://github.com/arirusso/grandpa)
77
80
  * [Lotu](http://github.com/lobo-tuerto/lotu)
78
81
  * [Nimo](http://github.com/moonpxi/nimo)
79
82
  * [PuitUniverse](http://github.com/oneup/puituniverse)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "flonkerton"
3
- s.version = "0.0.1"
3
+ s.version = "0.0.2"
4
4
  s.summary = "Gosu toys for the bored rubyist."
5
5
  s.description = "A simple framework that aims to improve your Gosu experience."
6
6
  s.authors = ["Ariel H. Pillet"]
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
10
10
 
11
11
  s.rubyforge_project = "flonkerton"
12
12
  s.add_dependency "gosu", ">= 0.7.19"
13
- s.add_development_dependency "protest", ">= 0.3.1"
14
- s.add_development_dependency "rr", ">= 0.10.11"
13
+ s.add_development_dependency "protest", ">= 0.4.1"
14
+ s.add_development_dependency "override", ">= 0.0.10"
15
15
  s.add_development_dependency "watchr", ">= 0.6"
16
16
  end
@@ -8,7 +8,7 @@ class File
8
8
  end
9
9
 
10
10
  module Flonkerton
11
- VERSION = '0.0.1'
11
+ VERSION = '0.0.2'
12
12
  LIB_PATH = File.dirname(File.expand_path(__FILE__))
13
13
  CURRENT_PATH = File.dirname(File.expand_path($0))
14
14
 
@@ -1,4 +1,4 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
2
 
3
3
  Protest.context('A Game example') do
4
4
  module Example
@@ -108,8 +108,6 @@ Protest.context('A Game example') do
108
108
  end
109
109
 
110
110
  it "should work." do
111
- assert_nothing_raised do
112
- Flonkerton::Game.start(Example::LogoScreen)
113
- end
111
+ Flonkerton::Game.start(Example::LogoScreen)
114
112
  end
115
113
  end
@@ -1,9 +1,7 @@
1
1
  require 'protest'
2
- require 'rr'
2
+ require 'override'
3
3
  require File.dirname(__FILE__) + '/../lib/flonkerton'
4
4
 
5
- class Protest::TestCase
6
- include RR::Adapters::TestUnit
7
- end
5
+ include Override
8
6
 
9
- Protest.report_with(:documentation)
7
+ Protest.report_with(:documentation)
@@ -1,4 +1,10 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
1
+ require File.expand_path(File.dirname(__FILE__) + '/test_helper.rb')
2
+
3
+ class Protest::TestCase
4
+ def window
5
+ @@window ||= Flonkerton::Window.new
6
+ end
7
+ end
2
8
 
3
9
  Protest.describe('Flonkerton') do
4
10
  it 'has a CONFIG hash.' do
@@ -37,72 +43,82 @@ Protest.describe('Flonkerton') do
37
43
  end
38
44
 
39
45
  Protest.describe('A Game Window') do
40
- setup do
41
- @window = Flonkerton::Window.new
42
- end
43
-
44
46
  it 'has a current screen. (default: WelcomeScreen)' do
45
- assert_kind_of Flonkerton::WelcomeScreen, @window.screen
47
+ assert window.screen.is_a?(Flonkerton::WelcomeScreen)
46
48
  end
47
49
 
48
50
  it 'has a next screen. (default: nil)' do
49
- assert_nil @window.next_screen
50
- end
51
-
52
- it 'updates the current screen.' do
53
- mock(@window.screen).update
54
- @window.update
51
+ assert window.next_screen.nil?
55
52
  end
56
53
 
57
- it 'draws the current screen.' do
58
- mock(@window.screen).draw
59
- @window.draw
60
- end
54
+ context('when running') do
55
+ module Example
56
+ class LogoScreen < Flonkerton::Screen
57
+ def setup
58
+ params[:log] = Array.new
59
+ end
61
60
 
62
- it 'passes button_down events to the current screen.' do
63
- mock(@window.screen).button_down(Gosu::KbA)
64
- @window.button_down(Gosu::KbA)
65
- end
61
+ def button_down(id)
62
+ params[:log] << 'press'
63
+ end
66
64
 
67
- it 'passes button_up events to the current screen.' do
68
- mock(@window.screen).button_up(Gosu::KbA)
69
- @window.button_up(Gosu::KbA)
70
- end
65
+ def button_up(id)
66
+ params[:log] << 'release'
67
+ end
71
68
 
72
- context('when working with several screens') do
73
- module Example
74
- class LogoScreen < Flonkerton::Screen
75
69
  def update
70
+ params[:log] << 'update'
71
+ end
72
+
73
+ def draw
74
+ params[:log] << 'draw'
76
75
  go_to(GameScreen)
77
76
  end
78
77
  end
79
78
  class GameScreen < Flonkerton::Screen
80
- def update
81
- go_to(CreditsScreen)
79
+ def setup
80
+ params[:log] << 'new screen'
82
81
  end
83
82
  end
84
- class CreditsScreen < Flonkerton::Screen; end
85
83
  end
86
84
 
87
- it 'can switch between them.' do
88
- @window = Flonkerton::Window.new(Example::LogoScreen)
89
- assert_kind_of Example::LogoScreen, @window.screen
90
- @window.update
91
- assert_kind_of Example::GameScreen, @window.screen
92
- @window.update
93
- assert_kind_of Example::CreditsScreen, @window.screen
85
+ setup do
86
+ window.next_screen = Example::LogoScreen
87
+ window.update
88
+ end
89
+
90
+ it 'draw and update the current screen.' do
91
+ assert window.params[:log].empty?
92
+
93
+ # Fake a Gosu::Window.show loop iteration
94
+ #
95
+ window.button_down(Gosu::KbSpace)
96
+ window.button_up(Gosu::KbSpace)
97
+ window.update
98
+ window.draw
99
+
100
+ result = {:log => ['press', 'release', 'update', 'draw']}
101
+ assert_equal result, window.params
102
+
103
+ # Change screen on next tick
104
+ window.update
105
+
106
+ assert window.params[:log].include?('new screen')
107
+ end
108
+
109
+ after do
110
+ window.params.clear
94
111
  end
95
112
  end
96
113
 
97
114
  it 'has a params hash.' do
98
- assert_equal Hash.new, @window.params
115
+ assert_equal Hash.new, window.params
99
116
  end
100
117
  end
101
118
 
102
119
  Protest.describe('A Screen') do
103
120
  setup do
104
- @game = Flonkerton::Window.new
105
- @screen = Flonkerton::Screen.new(@game)
121
+ @screen = Flonkerton::Screen.new(window)
106
122
  end
107
123
 
108
124
  # Gosu::Window methods
@@ -116,18 +132,20 @@ Protest.describe('A Screen') do
116
132
  end
117
133
 
118
134
  it 'has mouse coordinates.' do
119
- assert_kind_of Numeric, @screen.mouse_x
120
- assert_kind_of Numeric, @screen.mouse_y
135
+ assert @screen.mouse_x.is_a?(Numeric)
136
+ assert @screen.mouse_y.is_a?(Numeric)
121
137
  end
122
138
 
123
139
  it 'closes itself when Escape is pressed.' do
124
- mock(@screen).close
140
+ override(@screen, :close => lambda { params[:close] = true })
141
+
142
+ assert @screen.params.empty?
125
143
  @screen.button_down(Gosu::KbEscape)
144
+ assert !@screen.params.empty?
126
145
  end
127
146
 
128
147
  it 'knows if a button is down.' do
129
- stub(@game).button_down?(Gosu::KbA) { true }
130
- stub(@game).button_down?(Gosu::KbZ) { false }
148
+ override(window, :button_down? => lambda {|id| id == Gosu::KbA })
131
149
  assert @screen.button_down?(Gosu::KbA)
132
150
  assert !@screen.button_down?(Gosu::KbZ)
133
151
  end
@@ -135,38 +153,19 @@ Protest.describe('A Screen') do
135
153
  # Empty methods to override.
136
154
  #
137
155
  it 'can setup before game loop.' do
138
- assert_respond_to @screen, :setup
156
+ assert @screen.respond_to?(:setup)
139
157
  end
140
158
 
141
159
  it 'check button_up events while in game loop.' do
142
- assert_respond_to @screen, :button_up
160
+ assert @screen.respond_to?(:button_up)
143
161
  end
144
162
 
145
163
  it 'updates game logic while in game loop.' do
146
- assert_respond_to @screen, :update
164
+ assert @screen.respond_to?(:update)
147
165
  end
148
166
 
149
167
  it 'draws while in game loop.' do
150
- assert_respond_to @screen, :draw
151
- end
152
-
153
- it 'can switch to another screen.' do
154
- module Example
155
- class LogoScreen < Flonkerton::Screen
156
- def update
157
- go_to(GameScreen)
158
- end
159
- end
160
- class GameScreen < Flonkerton::Screen
161
- def update
162
- close
163
- end
164
- end
165
- end
166
-
167
- @game = Flonkerton::Window.new(Example::LogoScreen)
168
- mock(@game).next_screen=(Example::GameScreen)
169
- @game.update
168
+ assert @screen.respond_to?(:draw)
170
169
  end
171
170
 
172
171
  it 'shares a params hash with other screens.' do
@@ -196,13 +195,11 @@ Protest.describe('A Screen') do
196
195
  end
197
196
 
198
197
  it 'can close itself.' do
199
- mock(@game).close
200
- @screen.close
198
+ assert @screen.respond_to?(:close) # ...
201
199
  end
202
200
 
203
201
  it 'can clip an image.' do
204
- mock(@game).clip_to(10, 20, 200, 300)
205
- @screen.clip_to(10, 20, 200, 300)
202
+ assert @screen.respond_to?(:clip_to) # ...
206
203
  end
207
204
 
208
205
  it 'calls setup method after initialization.' do
@@ -219,75 +216,82 @@ Protest.describe('A Screen') do
219
216
  end
220
217
 
221
218
  Protest.describe('A WelcomeScreen') do
219
+ module DrawLog
220
+ def data
221
+ @data ||= []
222
+ end
223
+
224
+ def draw options = {}
225
+ data << options[:text]
226
+ end
227
+
228
+ def wrote? text
229
+ data.include? text
230
+ end
231
+ end
232
+ Flonkerton::Font.send(:include, DrawLog)
233
+
222
234
  setup do
223
- @game = Flonkerton::Window.new
224
- @welcome_screen = Flonkerton::WelcomeScreen.new(@game)
235
+ @welcome_screen = Flonkerton::WelcomeScreen.new(window)
225
236
  end
226
237
 
227
238
  it 'shows a brief explanation about Flonkerton.' do
228
- mock(Flonkerton::Fonts[:default]).draw(:text => 'Welcome')
239
+ font = Flonkerton::Fonts[:default]
240
+ assert !font.wrote?('Welcome')
229
241
  @welcome_screen.draw
242
+ assert font.wrote?('Welcome')
230
243
  end
231
244
  end
232
245
 
233
246
  Protest.describe('A Sample') do
234
247
  setup do
235
- @game = Flonkerton::Window.new
236
- @sample = Flonkerton::Sample.new(@game, 'media/select.wav')
248
+ @sample = Flonkerton::Sample.new(window, 'media/select.wav')
237
249
  end
238
250
 
239
251
  it 'is a Gosu::Sample.' do
240
- assert_kind_of Gosu::Sample, @sample
252
+ assert @sample.is_a?(Gosu::Sample)
241
253
  end
242
254
  end
243
255
 
244
256
  Protest.describe('A Song') do
245
257
  setup do
246
- @game = Flonkerton::Window.new
247
- @song = Flonkerton::Song.new(@game, 'media/catch_me_song.ogg')
258
+ @song = Flonkerton::Song.new(window, 'media/catch_me_song.ogg')
248
259
  end
249
260
 
250
261
  it 'is a Gosu::Song.' do
251
- assert_kind_of Gosu::Song, @song
262
+ assert @song.is_a?(Gosu::Song)
252
263
  end
253
264
 
254
265
  it 'has a loop method.' do
255
- mock(@song).play(true)
256
- @song.loop
266
+ assert @song.respond_to?(:loop) # ...
257
267
  end
258
268
  end
259
269
 
260
270
  Protest.describe('A Font') do
261
271
  setup do
262
- @game = Flonkerton::Window.new
263
- @font = Flonkerton::Font.new(@game, 'media/ArcadeClassic.ttf')
272
+ @font = Flonkerton::Font.new(window, 'media/ArcadeClassic.ttf')
264
273
  end
265
274
 
266
275
  it 'is a Gosu::Font.' do
267
- assert_kind_of Gosu::Font, @font
276
+ assert @font.is_a?(Gosu::Font)
268
277
  end
269
278
 
270
279
  it 'has a draw method that takes an options hash.' do
271
- assert_nothing_raised do
272
- @font.draw :text => 'test', :color => Gosu::Color::RED
273
- end
280
+ @font.draw :text => 'test', :color => Gosu::Color::RED
274
281
  end
275
282
  end
276
283
 
277
284
  Protest.describe('An Image') do
278
285
  setup do
279
- @game = Flonkerton::Window.new
280
- @image = Flonkerton::Image.new(@game, 'media/gosu_logo.png')
286
+ @image = Flonkerton::Image.new(window, 'media/gosu_logo.png')
281
287
  end
282
288
 
283
289
  it 'is a Gosu::Image.' do
284
- assert_kind_of Gosu::Image, @image
290
+ assert @image.is_a?(Gosu::Image)
285
291
  end
286
292
 
287
293
  it 'has a draw method that takes an options hash.' do
288
- assert_nothing_raised do
289
- @image.draw :x => 20, :mode => :additive
290
- end
294
+ @image.draw :x => 20, :mode => :additive
291
295
  end
292
296
  end
293
297
 
@@ -299,7 +303,7 @@ end
299
303
 
300
304
  Protest.describe('Resource - Fonts') do
301
305
  it 'has a :default font.' do
302
- assert_kind_of Flonkerton::Font, Flonkerton::Fonts[:default]
306
+ assert Flonkerton::Fonts[:default].is_a?(Flonkerton::Font)
303
307
  end
304
308
 
305
309
  it 'loads all fonts in CONFIG[:media_path].' do
@@ -368,12 +372,10 @@ Protest.describe('Resource - Tiles') do
368
372
 
369
373
  # returns Gosu::Image
370
374
  image = tiles.first.first
371
- assert_kind_of Gosu::Image, image
375
+ assert image.is_a?(Gosu::Image)
372
376
 
373
377
  # ..but draw takes a hash, same as Flonkerton::Image
374
- assert_nothing_raised do
375
- image.draw :x => 20, :mode => :additive
376
- end
378
+ image.draw :x => 20, :mode => :additive
377
379
  end
378
380
  end
379
381
 
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flonkerton
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 0
9
- - 1
10
- version: 0.0.1
8
+ - 2
9
+ version: 0.0.2
11
10
  platform: ruby
12
11
  authors:
13
12
  - Ariel H. Pillet
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-05-27 00:00:00 -03:00
17
+ date: 2010-09-17 00:00:00 -03:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 37
30
28
  segments:
31
29
  - 0
32
30
  - 7
@@ -42,28 +40,26 @@ dependencies:
42
40
  requirements:
43
41
  - - ">="
44
42
  - !ruby/object:Gem::Version
45
- hash: 17
46
43
  segments:
47
44
  - 0
48
- - 3
45
+ - 4
49
46
  - 1
50
- version: 0.3.1
47
+ version: 0.4.1
51
48
  type: :development
52
49
  version_requirements: *id002
53
50
  - !ruby/object:Gem::Dependency
54
- name: rr
51
+ name: override
55
52
  prerelease: false
56
53
  requirement: &id003 !ruby/object:Gem::Requirement
57
54
  none: false
58
55
  requirements:
59
56
  - - ">="
60
57
  - !ruby/object:Gem::Version
61
- hash: 33
62
58
  segments:
63
59
  - 0
60
+ - 0
64
61
  - 10
65
- - 11
66
- version: 0.10.11
62
+ version: 0.0.10
67
63
  type: :development
68
64
  version_requirements: *id003
69
65
  - !ruby/object:Gem::Dependency
@@ -74,7 +70,6 @@ dependencies:
74
70
  requirements:
75
71
  - - ">="
76
72
  - !ruby/object:Gem::Version
77
- hash: 7
78
73
  segments:
79
74
  - 0
80
75
  - 6
@@ -144,7 +139,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
139
  requirements:
145
140
  - - ">="
146
141
  - !ruby/object:Gem::Version
147
- hash: 3
148
142
  segments:
149
143
  - 0
150
144
  version: "0"
@@ -153,7 +147,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
147
  requirements:
154
148
  - - ">="
155
149
  - !ruby/object:Gem::Version
156
- hash: 3
157
150
  segments:
158
151
  - 0
159
152
  version: "0"