rubysketch 0.5.2 → 0.5.4

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.
@@ -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