rubysketch 0.5.2 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,88 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+
4
+ require_relative 'helper'
5
+
6
+
7
+ class TestSound < Test::Unit::TestCase
8
+
9
+ RS = RubySketch
10
+ B = Beeps
11
+
12
+ PATH = 'test.wav'
13
+
14
+ def sound()
15
+ RS::Sound.load PATH
16
+ end
17
+
18
+ def setup()
19
+ B::Sound.new(B::Oscillator.new >> B::Gain.new(gain: 0), 0.1).save PATH
20
+ end
21
+
22
+ def teardown()
23
+ B::SoundPlayer.stop_all
24
+ File.delete PATH if File.exist?(PATH)
25
+ end
26
+
27
+ def test_play()
28
+ s = sound
29
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
30
+ s.play
31
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
32
+ end
33
+
34
+ def test_pause()
35
+ s = sound
36
+ s.play
37
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
38
+ s.pause
39
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
40
+ end
41
+
42
+ def test_stop()
43
+ s = sound
44
+ s.play
45
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
46
+ s.stop
47
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
48
+ end
49
+
50
+ def test_play_end_then_stop()
51
+ s = sound
52
+ s.play
53
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
54
+ sleep 0.2
55
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
56
+ end
57
+
58
+ def test_play_after_pause()
59
+ s = sound
60
+ s.play
61
+ s.pause
62
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
63
+ s.play
64
+ assert_equal [true, false, false], [s.playing?, s.paused?, s.stopped?]
65
+ end
66
+
67
+ def test_stop_after_pause()
68
+ s = sound
69
+ s.play
70
+ s.pause
71
+ assert_equal [false, true, false], [s.playing?, s.paused?, s.stopped?]
72
+ s.stop
73
+ assert_equal [false, false, true], [s.playing?, s.paused?, s.stopped?]
74
+ end
75
+
76
+ def test_save_load()
77
+ s = sound
78
+
79
+ File.delete PATH
80
+ assert_false File.exist? PATH
81
+
82
+ s.save PATH
83
+ assert_true File.exist? PATH
84
+
85
+ assert_nothing_raised {RS::Sound.load(PATH).play}
86
+ end
87
+
88
+ end# TestSound
data/test/test_sprite.rb CHANGED
@@ -6,18 +6,190 @@ require_relative 'helper'
6
6
 
7
7
  class TestSprite < Test::Unit::TestCase
8
8
 
9
+ RS = RubySketch
10
+
9
11
  def sprite(*args, **kwargs)
10
- RubySketch::Sprite.new(*args, **kwargs)
12
+ RS::Sprite.new(*args, **kwargs)
11
13
  end
12
14
 
13
15
  def vec(*args, **kwargs)
14
- Processing::Vector.new(*args, **kwargs)
16
+ RS::Vector.new(*args, **kwargs)
17
+ end
18
+
19
+ def image(w, h)
20
+ RS::Image.new Rays::Image.new(w, h)
15
21
  end
16
22
 
17
23
  def test_initialize()
18
- assert_equal 0, sprite.x
19
- assert_equal 0, sprite.y
20
- assert_equal vec(0, 0), sprite.pos
24
+ assert_equal vec(0, 0), sprite .pos
25
+ assert_equal vec(1, 2), sprite(1, 2) .pos
26
+ assert_equal vec(1, 2), sprite(1, 2, 3, 4).pos
27
+
28
+ assert_equal vec(0, 0), sprite .size
29
+ assert_equal vec(3, 4), sprite(1, 2, 3, 4) .size
30
+ assert_equal vec(5, 6), sprite( image: image(5, 6)).size
31
+ assert_equal vec(5, 6), sprite(1, 2, image: image(5, 6)).size
32
+ assert_equal vec(3, 4), sprite(1, 2, 3, 4, image: image(5, 6)).size
33
+
34
+ assert_equal nil, sprite .image
35
+ assert_equal [1, 2], sprite(image: image(1, 2)).image.size
36
+
37
+ assert_equal nil, sprite.offset
38
+ assert_equal vec(1, 2), sprite(offset: [1, 2]).offset
39
+ assert_equal vec(1, 2), sprite(offset: vec(1, 2)).offset
40
+
41
+ assert_raise {sprite 0, 0, -1, 0}
42
+ assert_raise {sprite 0, 0, 0, -1}
43
+ end
44
+
45
+ def test_position()
46
+ s = sprite
47
+ assert_equal vec(0, 0), s.pos
48
+
49
+ s.pos = vec(1, 2)
50
+ assert_equal vec(1, 2), s.pos
51
+
52
+ s.pos = [3, 4]
53
+ assert_equal vec(3, 4), s.pos
54
+ end
55
+
56
+ def test_xy()
57
+ s = sprite
58
+ assert_equal 0, s.x
59
+ assert_equal vec(0, 0), s.pos
60
+
61
+ s.x = 1
62
+ assert_equal 1, s.x
63
+ assert_equal vec(1, 0), s.pos
64
+
65
+ s.y = 2
66
+ assert_equal 2, s.y
67
+ assert_equal vec(1, 2), s.pos
68
+ end
69
+
70
+ def test_size()
71
+ assert_equal vec(0, 0), sprite .size
72
+ assert_equal vec(1, 0), sprite(0, 0, 1) .size
73
+ assert_equal vec(1, 2), sprite(0, 0, 1, 2) .size
74
+ assert_equal vec(3, 4), sprite(image: image(3, 4)).size
75
+ end
76
+
77
+ def test_wh()
78
+ assert_equal 1, sprite(0, 0, 1, 2).width
79
+ assert_equal 2, sprite(0, 0, 1, 2).height
80
+ end
81
+
82
+ def test_velocity()
83
+ s = sprite
84
+ assert_equal vec(0, 0), s.vel
85
+
86
+ s.vel = vec(1, 2)
87
+ assert_equal vec(1, 2), s.vel
88
+
89
+ s.vel = [3, 4]
90
+ assert_equal vec(3, 4), s.vel
91
+ end
92
+
93
+ def test_vxvy()
94
+ s = sprite
95
+ assert_equal 0, s.vx
96
+ assert_equal vec(0, 0), s.vel
97
+
98
+ s.vx = 1
99
+ assert_equal 1, s.vx
100
+ assert_equal vec(1, 0), s.vel
101
+
102
+ s.vy = 2
103
+ assert_equal 2, s.vy
104
+ assert_equal vec(1, 2), s.vel
105
+ end
106
+
107
+ def test_image()
108
+ s = sprite
109
+ assert_equal nil, s.image
110
+
111
+ s.image = image(1, 2)
112
+ assert_equal [1, 2], s.image.size
113
+
114
+ s.image = image(3, 4)
115
+ assert_equal [3, 4], s.image.size
116
+
117
+ s.image = nil
118
+ assert_equal nil, s.image
119
+ end
120
+
121
+ def test_offset()
122
+ s = sprite
123
+ assert_equal nil, s.offset
124
+
125
+ s.offset = [1, 2]
126
+ assert_equal vec(1, 2), s.offset
127
+
128
+ s.offset = vec(3, 4)
129
+ assert_equal vec(3, 4), s.offset
130
+
131
+ s.offset = nil
132
+ assert_equal nil, s.offset
133
+
134
+ assert_raise(ArgumentError) {s.offset = 1}
135
+ end
136
+
137
+ def test_dynamic?()
138
+ s = sprite
139
+ assert_equal false, s.dynamic?
140
+
141
+ s.dynamic = true
142
+ assert_equal true, s.dynamic?
143
+
144
+ s.dynamic = false
145
+ assert_equal false, s.dynamic?
146
+ end
147
+
148
+ def test_density()
149
+ s = sprite
150
+ assert_equal 0, s.dens
151
+
152
+ s.dens = 1
153
+ assert_equal 1, s.dens
154
+ end
155
+
156
+ def test_friction()
157
+ s = sprite
158
+ assert_equal 0, s.fric
159
+
160
+ s.fric = 1
161
+ assert_equal 1, s.fric
162
+ end
163
+
164
+ def test_restitution()
165
+ s = sprite
166
+ assert_equal 0, s.rest
167
+
168
+ s.rest = 1
169
+ assert_equal 1, s.rest
170
+ end
171
+
172
+ def test_blocks()
173
+ s = sprite
174
+ v = s.instance_variable_get :@view__
175
+ assert_nil v.update
176
+ assert_nil v.contact
177
+ assert_nil v.will_contact
178
+
179
+ s.update {}
180
+ assert_not_nil v.update
181
+ assert_nil v.contact
182
+ assert_nil v.will_contact
183
+
184
+ s.contact {}
185
+ assert_not_nil v.update
186
+ assert_not_nil v.contact
187
+ assert_nil v.will_contact
188
+
189
+ s.contact? {}
190
+ assert_not_nil v.update
191
+ assert_not_nil v.contact
192
+ assert_not_nil v.will_contact
21
193
  end
22
194
 
23
195
  end# TestSprite
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubysketch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - xordog
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-01 00:00:00.000000000 Z
11
+ date: 2023-04-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xot
@@ -16,84 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.32
19
+ version: 0.1.34
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.32
26
+ version: 0.1.34
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rucy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.32
33
+ version: 0.1.34
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.1.32
40
+ version: 0.1.34
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: beeps
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.32
47
+ version: 0.1.35
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.32
54
+ version: 0.1.35
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rays
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.1.32
61
+ version: 0.1.34
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 0.1.32
68
+ version: 0.1.34
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: reflexion
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.1.32
75
+ version: 0.1.35
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.1.32
82
+ version: 0.1.35
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: processing
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.5.2
89
+ version: 0.5.5
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.5.2
96
+ version: 0.5.5
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -162,11 +162,15 @@ files:
162
162
  - lib/rubysketch/extension.rb
163
163
  - lib/rubysketch/graphics_context.rb
164
164
  - lib/rubysketch/helper.rb
165
+ - lib/rubysketch/sound.rb
165
166
  - lib/rubysketch/sprite.rb
167
+ - lib/rubysketch/window.rb
168
+ - pod.rake
166
169
  - rubysketch.gemspec
167
- - src/RubyProcessing.h
168
- - src/RubyProcessing.mm
170
+ - src/RubySketch.h
171
+ - src/RubySketch.mm
169
172
  - test/helper.rb
173
+ - test/test_sound.rb
170
174
  - test/test_sprite.rb
171
175
  homepage: https://github.com/xord/rubysketch
172
176
  licenses: []
@@ -186,10 +190,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
190
  - !ruby/object:Gem::Version
187
191
  version: '0'
188
192
  requirements: []
189
- rubygems_version: 3.4.6
193
+ rubygems_version: 3.4.10
190
194
  signing_key:
191
195
  specification_version: 4
192
196
  summary: A game engine based on the Processing API.
193
197
  test_files:
194
198
  - test/helper.rb
199
+ - test/test_sound.rb
195
200
  - test/test_sprite.rb
data/src/RubyProcessing.h DELETED
@@ -1,11 +0,0 @@
1
- // -*- mode: objc -*-
2
- #import <Foundation/Foundation.h>
3
-
4
-
5
- @interface RubySketch : NSObject
6
-
7
- + (void) setup;
8
-
9
- + (void) start: (NSString*) path;
10
-
11
- @end
@@ -1,25 +0,0 @@
1
- // -*- mode: objc -*-
2
- #import <CRuby.h>
3
- #import "RubyProcessing.h"
4
- #import "RubySketch.h"
5
-
6
-
7
- @implementation RubySketch
8
-
9
- + (void) setup
10
- {
11
- static BOOL done = NO;
12
- if (done) return;
13
- done = YES;
14
-
15
- [RubyProcessing setup];
16
- [CRuby addLibrary:@"RubySketch" bundle:[NSBundle bundleForClass:RubySketch.class]];
17
- }
18
-
19
- + (void) start: (NSString*) path
20
- {
21
- [CRuby evaluate:@"raise 'already started' unless require 'rubysketch'\n"];
22
- [RubyProcessing start: path];
23
- }
24
-
25
- @end