rubysketch 0.5.3 → 0.5.5
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.
- checksums.yaml +4 -4
- data/.github/workflows/utils.rb +2 -1
- data/ChangeLog.md +23 -0
- data/RubySketch.podspec +18 -5
- data/VERSION +1 -1
- data/examples/physics.rb +24 -0
- data/examples/sprite.rb +47 -0
- data/lib/rubysketch/all.rb +8 -3
- data/lib/rubysketch/context.rb +120 -17
- data/lib/rubysketch/extension.rb +1 -0
- data/lib/rubysketch/helper.rb +1 -0
- data/lib/rubysketch/sprite.rb +682 -60
- data/lib/rubysketch/window.rb +1 -0
- data/pod.rake +7 -5
- data/rubysketch.gemspec +6 -6
- data/test/helper.rb +0 -3
- data/test/test_sprite.rb +223 -8
- metadata +16 -18
- data/lib/rubysketch/graphics_context.rb +0 -37
- data/lib/rubysketch/sound.rb +0 -55
- data/test/test_sound.rb +0 -90
data/lib/rubysketch/window.rb
CHANGED
data/pod.rake
CHANGED
@@ -19,15 +19,17 @@ task :setup
|
|
19
19
|
|
20
20
|
repos.each do |repo, ver|
|
21
21
|
rakefile = "#{repo}/Rakefile"
|
22
|
-
opts =
|
23
|
-
|
24
|
-
branch
|
25
|
-
|
22
|
+
opts = [
|
23
|
+
'-c advice.detachedHead=false',
|
24
|
+
'--no-single-branch',
|
25
|
+
'--depth 1',
|
26
|
+
"--branch #{ENV['RUBYSKETCH_BRANCH'] || ('v' + ver)}"
|
27
|
+
]
|
26
28
|
|
27
29
|
task :setup => rakefile
|
28
30
|
|
29
31
|
file rakefile do
|
30
|
-
sh %( git clone #{opts} #{github}/#{repo} )
|
32
|
+
sh %( git clone #{opts.join ' '} #{github}/#{repo} )
|
31
33
|
sh %( cd #{repo} && VENDOR_NOCOMPILE=1 rake vendor erb )
|
32
34
|
end
|
33
35
|
end
|
data/rubysketch.gemspec
CHANGED
@@ -28,12 +28,12 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.platform = Gem::Platform::RUBY
|
29
29
|
s.required_ruby_version = '>= 2.7.0'
|
30
30
|
|
31
|
-
s.add_runtime_dependency 'xot', '~> 0.1.
|
32
|
-
s.add_runtime_dependency 'rucy', '~> 0.1.
|
33
|
-
s.add_runtime_dependency 'beeps', '~> 0.1.
|
34
|
-
s.add_runtime_dependency 'rays', '~> 0.1.
|
35
|
-
s.add_runtime_dependency 'reflexion', '~> 0.1.
|
36
|
-
s.add_runtime_dependency 'processing', '~> 0.5.
|
31
|
+
s.add_runtime_dependency 'xot', '~> 0.1.35'
|
32
|
+
s.add_runtime_dependency 'rucy', '~> 0.1.35'
|
33
|
+
s.add_runtime_dependency 'beeps', '~> 0.1.36'
|
34
|
+
s.add_runtime_dependency 'rays', '~> 0.1.35'
|
35
|
+
s.add_runtime_dependency 'reflexion', '~> 0.1.36'
|
36
|
+
s.add_runtime_dependency 'processing', '~> 0.5.6'
|
37
37
|
|
38
38
|
s.add_development_dependency 'rake'
|
39
39
|
s.add_development_dependency 'test-unit'
|
data/test/helper.rb
CHANGED
data/test/test_sprite.rb
CHANGED
@@ -1,23 +1,238 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
|
4
1
|
require_relative 'helper'
|
5
2
|
|
6
3
|
|
7
4
|
class TestSprite < Test::Unit::TestCase
|
8
5
|
|
6
|
+
RS = RubySketch
|
7
|
+
|
9
8
|
def sprite(*args, **kwargs)
|
10
|
-
|
9
|
+
RS::Sprite.new(*args, **kwargs)
|
11
10
|
end
|
12
11
|
|
13
12
|
def vec(*args, **kwargs)
|
14
|
-
|
13
|
+
RS::Vector.new(*args, **kwargs)
|
14
|
+
end
|
15
|
+
|
16
|
+
def image(w, h)
|
17
|
+
RS::Image.new Rays::Image.new(w, h)
|
15
18
|
end
|
16
19
|
|
17
20
|
def test_initialize()
|
18
|
-
assert_equal 0,
|
19
|
-
assert_equal
|
20
|
-
assert_equal vec(
|
21
|
+
assert_equal vec(0, 0), sprite .pos
|
22
|
+
assert_equal vec(1, 2), sprite(1, 2) .pos
|
23
|
+
assert_equal vec(1, 2), sprite(1, 2, 3, 4).pos
|
24
|
+
|
25
|
+
assert_equal vec(0, 0), sprite .size
|
26
|
+
assert_equal vec(3, 4), sprite(1, 2, 3, 4) .size
|
27
|
+
assert_equal vec(5, 6), sprite( image: image(5, 6)).size
|
28
|
+
assert_equal vec(5, 6), sprite(1, 2, image: image(5, 6)).size
|
29
|
+
assert_equal vec(3, 4), sprite(1, 2, 3, 4, image: image(5, 6)).size
|
30
|
+
|
31
|
+
assert_equal nil, sprite .image
|
32
|
+
assert_equal [1, 2], sprite(image: image(1, 2)).image.size
|
33
|
+
|
34
|
+
assert_equal nil, sprite.offset
|
35
|
+
assert_equal vec(1, 2), sprite(offset: [1, 2]).offset
|
36
|
+
assert_equal vec(1, 2), sprite(offset: vec(1, 2)).offset
|
37
|
+
|
38
|
+
assert_raise {sprite 0, 0, -1, 0}
|
39
|
+
assert_raise {sprite 0, 0, 0, -1}
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_position()
|
43
|
+
s = sprite
|
44
|
+
assert_equal vec(0, 0), s.pos
|
45
|
+
|
46
|
+
s.pos = vec(1, 2)
|
47
|
+
assert_equal vec(1, 2), s.pos
|
48
|
+
|
49
|
+
s.pos = [3, 4]
|
50
|
+
assert_equal vec(3, 4), s.pos
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_xy()
|
54
|
+
s = sprite
|
55
|
+
assert_equal 0, s.x
|
56
|
+
assert_equal vec(0, 0), s.pos
|
57
|
+
|
58
|
+
s.x = 1
|
59
|
+
assert_equal 1, s.x
|
60
|
+
assert_equal vec(1, 0), s.pos
|
61
|
+
|
62
|
+
s.y = 2
|
63
|
+
assert_equal 2, s.y
|
64
|
+
assert_equal vec(1, 2), s.pos
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_size()
|
68
|
+
assert_equal vec(0, 0), sprite .size
|
69
|
+
assert_equal vec(1, 0), sprite(0, 0, 1) .size
|
70
|
+
assert_equal vec(1, 2), sprite(0, 0, 1, 2) .size
|
71
|
+
assert_equal vec(3, 4), sprite(image: image(3, 4)).size
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_wh()
|
75
|
+
assert_equal 1, sprite(0, 0, 1, 2).width
|
76
|
+
assert_equal 2, sprite(0, 0, 1, 2).height
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_angle()
|
80
|
+
s = sprite
|
81
|
+
assert_equal 0, s.angle
|
82
|
+
|
83
|
+
s.angle = Math::PI
|
84
|
+
assert_in_epsilon Math::PI, s.angle
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_pivot()
|
88
|
+
s = sprite
|
89
|
+
assert_each_in_epsilon [0, 0], s.pivot
|
90
|
+
|
91
|
+
s.pivot = [0.1, 0.2]
|
92
|
+
assert_each_in_epsilon [0.1, 0.2], s.pivot
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_velocity()
|
96
|
+
s = sprite
|
97
|
+
assert_equal vec(0, 0), s.vel
|
98
|
+
|
99
|
+
s.vel = vec(1, 2)
|
100
|
+
assert_equal vec(1, 2), s.vel
|
101
|
+
|
102
|
+
s.vel = [3, 4]
|
103
|
+
assert_equal vec(3, 4), s.vel
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_vxvy()
|
107
|
+
s = sprite
|
108
|
+
assert_equal 0, s.vx
|
109
|
+
assert_equal vec(0, 0), s.vel
|
110
|
+
|
111
|
+
s.vx = 1
|
112
|
+
assert_equal 1, s.vx
|
113
|
+
assert_equal vec(1, 0), s.vel
|
114
|
+
|
115
|
+
s.vy = 2
|
116
|
+
assert_equal 2, s.vy
|
117
|
+
assert_equal vec(1, 2), s.vel
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_image()
|
121
|
+
s = sprite
|
122
|
+
assert_equal nil, s.image
|
123
|
+
|
124
|
+
s.image = image(1, 2)
|
125
|
+
assert_equal [1, 2], s.image.size
|
126
|
+
|
127
|
+
s.image = image(3, 4)
|
128
|
+
assert_equal [3, 4], s.image.size
|
129
|
+
|
130
|
+
s.image = nil
|
131
|
+
assert_equal nil, s.image
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_offset()
|
135
|
+
s = sprite
|
136
|
+
assert_equal nil, s.offset
|
137
|
+
|
138
|
+
s.offset = [1, 2]
|
139
|
+
assert_equal vec(1, 2), s.offset
|
140
|
+
|
141
|
+
s.offset = vec(3, 4)
|
142
|
+
assert_equal vec(3, 4), s.offset
|
143
|
+
|
144
|
+
s.offset = [5]
|
145
|
+
assert_equal vec(5, 0), s.offset
|
146
|
+
|
147
|
+
s.offset = []
|
148
|
+
assert_equal vec(0, 0), s.offset
|
149
|
+
|
150
|
+
s.offset = nil
|
151
|
+
assert_equal nil, s.offset
|
152
|
+
|
153
|
+
assert_raise(ArgumentError) {s.offset = 1}
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_oxoy()
|
157
|
+
s = sprite
|
158
|
+
assert_equal [0, 0], [s.ox, s.oy]
|
159
|
+
assert_equal nil, s.offset
|
160
|
+
|
161
|
+
s.ox = 1
|
162
|
+
assert_equal [1, 0], [s.ox, s.oy]
|
163
|
+
assert_equal vec(1, 0), s.offset
|
164
|
+
|
165
|
+
s = sprite
|
166
|
+
|
167
|
+
s.oy = 2
|
168
|
+
assert_equal [0, 2], [s.ox, s.oy]
|
169
|
+
assert_equal vec(0, 2), s.offset
|
170
|
+
|
171
|
+
s.offset = nil
|
172
|
+
assert_equal [0, 0], [s.ox, s.oy]
|
173
|
+
assert_equal nil, s.offset
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_dynamic?()
|
177
|
+
s = sprite
|
178
|
+
assert_equal false, s.dynamic?
|
179
|
+
|
180
|
+
s.dynamic = true
|
181
|
+
assert_equal true, s.dynamic?
|
182
|
+
|
183
|
+
s.dynamic = false
|
184
|
+
assert_equal false, s.dynamic?
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_density()
|
188
|
+
s = sprite
|
189
|
+
assert_equal 1, s.dens
|
190
|
+
|
191
|
+
s.dens = 2
|
192
|
+
assert_equal 2, s.dens
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_friction()
|
196
|
+
s = sprite
|
197
|
+
assert_equal 0, s.fric
|
198
|
+
|
199
|
+
s.fric = 1
|
200
|
+
assert_equal 1, s.fric
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_restitution()
|
204
|
+
s = sprite
|
205
|
+
assert_equal 0, s.rest
|
206
|
+
|
207
|
+
s.rest = 1
|
208
|
+
assert_equal 1, s.rest
|
209
|
+
end
|
210
|
+
|
211
|
+
def test_blocks()
|
212
|
+
s = sprite
|
213
|
+
v = s.instance_variable_get :@view__
|
214
|
+
assert_nil v.update
|
215
|
+
assert_nil v.contact
|
216
|
+
assert_nil v.will_contact
|
217
|
+
|
218
|
+
s.update {}
|
219
|
+
assert_not_nil v.update
|
220
|
+
assert_nil v.contact
|
221
|
+
assert_nil v.will_contact
|
222
|
+
|
223
|
+
s.contact {}
|
224
|
+
assert_not_nil v.update
|
225
|
+
assert_not_nil v.contact
|
226
|
+
assert_nil v.will_contact
|
227
|
+
|
228
|
+
s.contact? {}
|
229
|
+
assert_not_nil v.update
|
230
|
+
assert_not_nil v.contact
|
231
|
+
assert_not_nil v.will_contact
|
232
|
+
end
|
233
|
+
|
234
|
+
def test_inspect()
|
235
|
+
assert_match %r|#<RubySketch::Sprite:0x\w{16}>|, sprite.inspect
|
21
236
|
end
|
22
237
|
|
23
238
|
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.
|
4
|
+
version: 0.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xordog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-08 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.
|
19
|
+
version: 0.1.35
|
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.
|
26
|
+
version: 0.1.35
|
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.
|
33
|
+
version: 0.1.35
|
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.
|
40
|
+
version: 0.1.35
|
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.
|
47
|
+
version: 0.1.36
|
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.
|
54
|
+
version: 0.1.36
|
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.
|
61
|
+
version: 0.1.35
|
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.
|
68
|
+
version: 0.1.35
|
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.
|
75
|
+
version: 0.1.36
|
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.
|
82
|
+
version: 0.1.36
|
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.
|
89
|
+
version: 0.5.6
|
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.
|
96
|
+
version: 0.5.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: rake
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,13 +156,13 @@ files:
|
|
156
156
|
- RubySketch.podspec
|
157
157
|
- VERSION
|
158
158
|
- examples/hello.rb
|
159
|
+
- examples/physics.rb
|
160
|
+
- examples/sprite.rb
|
159
161
|
- lib/rubysketch.rb
|
160
162
|
- lib/rubysketch/all.rb
|
161
163
|
- lib/rubysketch/context.rb
|
162
164
|
- lib/rubysketch/extension.rb
|
163
|
-
- lib/rubysketch/graphics_context.rb
|
164
165
|
- lib/rubysketch/helper.rb
|
165
|
-
- lib/rubysketch/sound.rb
|
166
166
|
- lib/rubysketch/sprite.rb
|
167
167
|
- lib/rubysketch/window.rb
|
168
168
|
- pod.rake
|
@@ -170,7 +170,6 @@ files:
|
|
170
170
|
- src/RubySketch.h
|
171
171
|
- src/RubySketch.mm
|
172
172
|
- test/helper.rb
|
173
|
-
- test/test_sound.rb
|
174
173
|
- test/test_sprite.rb
|
175
174
|
homepage: https://github.com/xord/rubysketch
|
176
175
|
licenses: []
|
@@ -196,5 +195,4 @@ specification_version: 4
|
|
196
195
|
summary: A game engine based on the Processing API.
|
197
196
|
test_files:
|
198
197
|
- test/helper.rb
|
199
|
-
- test/test_sound.rb
|
200
198
|
- test/test_sprite.rb
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module RubySketch
|
2
|
-
|
3
|
-
|
4
|
-
module GraphicsContext
|
5
|
-
|
6
|
-
def sprite(*sprites)
|
7
|
-
sprites.flatten! if sprites.first&.is_a? Array
|
8
|
-
sprites.each do |sp|
|
9
|
-
v = sp.getInternal__
|
10
|
-
f, angle, img, offset = v.frame, v.angle, sp.image, sp.offset
|
11
|
-
if angle == 0
|
12
|
-
drawSprite__ f.x, f.y, f.w, f.h, img, offset
|
13
|
-
else
|
14
|
-
pushMatrix do
|
15
|
-
translate f.x, f.y
|
16
|
-
rotate radians(angle)
|
17
|
-
drawSprite__ 0, 0, f.w, f.h, img, offset
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def drawSprite__(x, y, w, h, img, offset)
|
24
|
-
if img && offset
|
25
|
-
ox, oy = offset
|
26
|
-
copy img, ox, oy, w, h, x, y, w, h
|
27
|
-
elsif img
|
28
|
-
image img, x, y
|
29
|
-
else
|
30
|
-
rect x, y, w, h
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
end# GraphicsContext
|
35
|
-
|
36
|
-
|
37
|
-
end# RubySketch
|
data/lib/rubysketch/sound.rb
DELETED
@@ -1,55 +0,0 @@
|
|
1
|
-
module RubySketch
|
2
|
-
|
3
|
-
|
4
|
-
class Sound
|
5
|
-
|
6
|
-
# @private
|
7
|
-
def initialize(sound)
|
8
|
-
@sound = sound
|
9
|
-
end
|
10
|
-
|
11
|
-
def play()
|
12
|
-
old = @player
|
13
|
-
@player = @sound.play
|
14
|
-
old&.stop
|
15
|
-
true
|
16
|
-
end
|
17
|
-
|
18
|
-
def pause()
|
19
|
-
return false unless @player
|
20
|
-
@player.pause
|
21
|
-
true
|
22
|
-
end
|
23
|
-
|
24
|
-
def stop()
|
25
|
-
return false unless @player
|
26
|
-
@player.stop
|
27
|
-
@player = nil
|
28
|
-
true
|
29
|
-
end
|
30
|
-
|
31
|
-
def playing?()
|
32
|
-
@player ? @player.playing? : false
|
33
|
-
end
|
34
|
-
|
35
|
-
def paused?()
|
36
|
-
!playing? && !stopped?
|
37
|
-
end
|
38
|
-
|
39
|
-
def stopped?()
|
40
|
-
@player ? @player.stopped? : true
|
41
|
-
end
|
42
|
-
|
43
|
-
def save(path)
|
44
|
-
@sound.save path
|
45
|
-
end
|
46
|
-
|
47
|
-
def self.load(path)
|
48
|
-
f = Beeps::FileIn.new path
|
49
|
-
self.new Beeps::Sound.new(f, f.seconds, nchannels: f.nchannels)
|
50
|
-
end
|
51
|
-
|
52
|
-
end# Sound
|
53
|
-
|
54
|
-
|
55
|
-
end# RubySketch
|
data/test/test_sound.rb
DELETED
@@ -1,90 +0,0 @@
|
|
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()
|
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
|
-
end
|
85
|
-
|
86
|
-
def test_load()
|
87
|
-
assert_nothing_raised {sound.play}
|
88
|
-
end
|
89
|
-
|
90
|
-
end# TestSound
|