ray 0.0.1 → 0.1.0.pre1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gemtest +0 -0
- data/.yardopts +4 -0
- data/README.md +17 -21
- data/Rakefile +18 -139
- data/VERSION +1 -1
- data/ext/audio.cpp +723 -0
- data/ext/{color.c → color.cpp} +25 -13
- data/ext/drawable.cpp +91 -0
- data/ext/event.cpp +460 -0
- data/ext/extconf.rb +5 -104
- data/ext/font.cpp +190 -0
- data/ext/image.cpp +733 -0
- data/ext/input.cpp +74 -0
- data/ext/ray.cpp +168 -0
- data/ext/ray.hpp +356 -0
- data/ext/{rect.c → rect.cpp} +51 -37
- data/ext/shader.cpp +169 -0
- data/ext/shape.cpp +409 -0
- data/ext/sprite.cpp +306 -0
- data/ext/text.cpp +181 -0
- data/ext/vector.cpp +215 -0
- data/guide.md +619 -0
- data/lib/ray/audio.rb +0 -41
- data/lib/ray/color.rb +32 -10
- data/lib/ray/drawable.rb +16 -0
- data/lib/ray/dsl/event_listener.rb +25 -2
- data/lib/ray/dsl/event_runner.rb +33 -5
- data/lib/ray/dsl/event_translator.rb +66 -30
- data/lib/ray/dsl/handler.rb +3 -2
- data/lib/ray/dsl/matcher.rb +58 -14
- data/lib/ray/font.rb +38 -96
- data/lib/ray/font_set.rb +8 -8
- data/lib/ray/game.rb +87 -66
- data/lib/ray/helper.rb +105 -10
- data/lib/ray/image.rb +150 -24
- data/lib/ray/image_set.rb +3 -1
- data/lib/ray/input.rb +10 -0
- data/lib/ray/music_set.rb +5 -3
- data/lib/ray/ray.rb +21 -9
- data/lib/ray/rect.rb +48 -7
- data/lib/ray/rmagick.rb +41 -0
- data/lib/ray/scene.rb +99 -43
- data/lib/ray/scene_list.rb +67 -0
- data/lib/ray/shape.rb +132 -0
- data/lib/ray/sound_set.rb +4 -2
- data/lib/ray/sprite.rb +49 -111
- data/lib/ray/text.rb +101 -0
- data/lib/ray/text_helper.rb +37 -0
- data/lib/ray/turtle.rb +215 -0
- data/lib/ray/vector.rb +226 -0
- data/samples/audio/spacial.rb +44 -0
- data/samples/hello_world/hello.rb +9 -13
- data/samples/hello_world/hello_dsl.rb +8 -12
- data/samples/hello_world/text.rb +15 -0
- data/samples/opengl/binding.rb +38 -0
- data/samples/opengl/image.rb +32 -0
- data/samples/opengl/opengl.rb +34 -0
- data/samples/opengl/shader.rb +42 -0
- data/samples/pong/pong.rb +14 -10
- data/samples/run_scene.rb +53 -0
- data/samples/shaders/scene.rb +40 -0
- data/samples/shaders/shaders.rb +42 -0
- data/samples/shaders/shape.rb +34 -0
- data/samples/sokoban/sokoban.rb +18 -18
- data/samples/test/actual_scene.rb +41 -0
- data/samples/test/scene_riot.rb +39 -0
- data/samples/test/scene_spec.rb +32 -0
- data/samples/test/scene_test_unit.rb +25 -0
- data/samples/turtle/byzantium.rb +45 -0
- data/samples/turtle/hilbert.rb +48 -0
- data/samples/turtle/koch.rb +55 -0
- data/samples/turtle/mandala.rb +61 -0
- data/samples/turtle/tree.rb +57 -0
- data/test/audio_test.rb +69 -0
- data/test/color_test.rb +77 -0
- data/test/drawable_test.rb +19 -0
- data/test/dsl_test.rb +93 -0
- data/test/font_test.rb +57 -0
- data/test/helpers.rb +94 -0
- data/test/image_test.rb +82 -0
- data/test/ray_test.rb +25 -0
- data/test/rect_test.rb +121 -0
- data/{spec → test}/res/VeraMono.ttf +0 -0
- data/{spec → test}/res/aqua.bmp +0 -0
- data/{spec → test}/res/aqua.png +0 -0
- data/{spec → test}/res/aqua2.bmp +0 -0
- data/{spec → test}/res/not_a_jpeg.jpeg +0 -0
- data/{spec → test}/res/pop.wav +0 -0
- data/test/resource_set_test.rb +99 -0
- data/test/run_all.rb +7 -0
- data/test/shape_test.rb +101 -0
- data/test/sprite_test.rb +89 -0
- data/test/text_test.rb +78 -0
- data/test/turtle_test.rb +176 -0
- data/test/vector_test.rb +111 -0
- data/yard_ext.rb +0 -28
- metadata +95 -139
- data/.gitignore +0 -23
- data/.gitmodules +0 -3
- data/.rspec +0 -3
- data/ext/audio.c +0 -473
- data/ext/event.c +0 -557
- data/ext/font.c +0 -287
- data/ext/image.c +0 -933
- data/ext/joystick.c +0 -145
- data/ext/ray.c +0 -489
- data/ext/ray.h +0 -245
- data/ext/ray_osx.m +0 -161
- data/lib/ray/joystick.rb +0 -30
- data/psp/SDL_psp_main.c +0 -84
- data/psp/bigdecimal/README +0 -60
- data/psp/bigdecimal/bigdecimal.c +0 -4697
- data/psp/bigdecimal/bigdecimal.h +0 -216
- data/psp/bigdecimal/lib/bigdecimal/jacobian.rb +0 -85
- data/psp/bigdecimal/lib/bigdecimal/ludcmp.rb +0 -84
- data/psp/bigdecimal/lib/bigdecimal/math.rb +0 -235
- data/psp/bigdecimal/lib/bigdecimal/newton.rb +0 -77
- data/psp/bigdecimal/lib/bigdecimal/util.rb +0 -65
- data/psp/digest/bubblebabble/bubblebabble.c +0 -142
- data/psp/digest/defs.h +0 -20
- data/psp/digest/digest.c +0 -643
- data/psp/digest/digest.h +0 -32
- data/psp/digest/lib/digest.rb +0 -50
- data/psp/digest/lib/md5.rb +0 -27
- data/psp/digest/lib/sha1.rb +0 -27
- data/psp/digest/md5/md5.c +0 -420
- data/psp/digest/md5/md5.h +0 -80
- data/psp/digest/md5/md5init.c +0 -40
- data/psp/digest/rmd160/rmd160.c +0 -457
- data/psp/digest/rmd160/rmd160.h +0 -56
- data/psp/digest/rmd160/rmd160init.c +0 -40
- data/psp/digest/sha1/sha1.c +0 -269
- data/psp/digest/sha1/sha1.h +0 -39
- data/psp/digest/sha1/sha1init.c +0 -40
- data/psp/digest/sha2/lib/sha2.rb +0 -73
- data/psp/digest/sha2/sha2.c +0 -919
- data/psp/digest/sha2/sha2.h +0 -109
- data/psp/digest/sha2/sha2init.c +0 -52
- data/psp/enumerator/enumerator.c +0 -298
- data/psp/etc/etc.c +0 -559
- data/psp/ext.c +0 -289
- data/psp/fcntl/fcntl.c +0 -187
- data/psp/lib/rbconfig.rb +0 -178
- data/psp/nkf/lib/kconv.rb +0 -367
- data/psp/nkf/nkf-utf8/config.h +0 -88
- data/psp/nkf/nkf-utf8/nkf.c +0 -6040
- data/psp/nkf/nkf-utf8/utf8tbl.c +0 -8500
- data/psp/nkf/nkf-utf8/utf8tbl.h +0 -34
- data/psp/nkf/nkf.c +0 -654
- data/psp/socket/addrinfo.h +0 -173
- data/psp/socket/getaddrinfo.c +0 -676
- data/psp/socket/getnameinfo.c +0 -270
- data/psp/socket/pspsocket.c +0 -71
- data/psp/socket/pspsocket.h +0 -28
- data/psp/socket/socket.c +0 -4662
- data/psp/socket/sockport.h +0 -76
- data/psp/stringio/stringio.c +0 -1306
- data/psp/strscan/strscan.c +0 -1320
- data/psp/syck/bytecode.c +0 -1166
- data/psp/syck/emitter.c +0 -1242
- data/psp/syck/gram.c +0 -1894
- data/psp/syck/gram.h +0 -79
- data/psp/syck/handler.c +0 -174
- data/psp/syck/implicit.c +0 -2990
- data/psp/syck/node.c +0 -408
- data/psp/syck/rubyext.c +0 -2367
- data/psp/syck/syck.c +0 -504
- data/psp/syck/syck.h +0 -456
- data/psp/syck/token.c +0 -2725
- data/psp/syck/yaml2byte.c +0 -257
- data/psp/syck/yamlbyte.h +0 -170
- data/psp/thread/thread.c +0 -1175
- data/psp/zlib/zlib.c +0 -3547
- data/script.rb +0 -10
- data/spec/ray/audio_spec.rb +0 -146
- data/spec/ray/color_spec.rb +0 -57
- data/spec/ray/event_spec.rb +0 -80
- data/spec/ray/font_spec.rb +0 -93
- data/spec/ray/image_set_spec.rb +0 -48
- data/spec/ray/image_spec.rb +0 -162
- data/spec/ray/joystick_spec.rb +0 -21
- data/spec/ray/matcher_spec.rb +0 -50
- data/spec/ray/ray_spec.rb +0 -88
- data/spec/ray/rect_spec.rb +0 -154
- data/spec/ray/resource_set_spec.rb +0 -105
- data/spec/ray/sprite_spec.rb +0 -163
- data/spec/spec.opts +0 -4
- data/spec/spec_helper.rb +0 -8
data/test/sprite_test.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/helpers.rb'
|
2
|
+
|
3
|
+
context Ray::Sprite do
|
4
|
+
setup { Ray::Sprite }
|
5
|
+
|
6
|
+
asserts("doesn't copy the image when created") do
|
7
|
+
topic.new(Ray.screen).image == Ray.screen
|
8
|
+
end
|
9
|
+
|
10
|
+
asserts("converts the argument of #initialize to an image") do
|
11
|
+
image = Ray::ImageSet[path_of("aqua.bmp")]
|
12
|
+
sprite = Ray::Sprite.new(path_of("aqua.bmp"))
|
13
|
+
|
14
|
+
sprite.image == image
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
context "a sprite" do
|
19
|
+
setup { Ray::Sprite.new(Ray.screen) }
|
20
|
+
|
21
|
+
asserts(:pos).equals(Ray::Vector2[0, 0])
|
22
|
+
|
23
|
+
asserts(:angle).equals(0)
|
24
|
+
asserts(:zoom).equals(Ray::Vector2[1, 1])
|
25
|
+
|
26
|
+
asserts(:rect).equals(Ray::Rect.new(0, 0, 100, 150))
|
27
|
+
asserts(:to_rect).equals(Ray::Rect.new(0, 0, 100, 150))
|
28
|
+
|
29
|
+
asserts(:from_rect).equals(Ray::Rect.new(0, 0, 100, 150))
|
30
|
+
|
31
|
+
asserts(:shader).nil
|
32
|
+
asserts(:color).equals(Ray::Color.white)
|
33
|
+
|
34
|
+
context "after changing position" do
|
35
|
+
hookup { topic.pos = [20, 30] }
|
36
|
+
asserts(:pos).equals(Ray::Vector2[20, 30])
|
37
|
+
end
|
38
|
+
|
39
|
+
context "after changing drawn rect" do
|
40
|
+
hookup { topic.from_rect = [50, 30, 100, 120].to_rect }
|
41
|
+
asserts(:from_rect).equals(Ray::Rect.new(50, 30, 100, 120))
|
42
|
+
end
|
43
|
+
|
44
|
+
context "after changing angle" do
|
45
|
+
hookup { topic.angle = 30 }
|
46
|
+
asserts(:angle).equals(30)
|
47
|
+
end
|
48
|
+
|
49
|
+
context "after changing zoom" do
|
50
|
+
hookup { topic.zoom = [3, 4] }
|
51
|
+
|
52
|
+
asserts(:zoom).equals(Ray::Vector2[3, 4])
|
53
|
+
asserts(:rect).equals(Ray::Rect.new(0, 0, 300, 600))
|
54
|
+
end
|
55
|
+
|
56
|
+
context "using a sprite sheet" do
|
57
|
+
hookup { topic.sheet_size = [10, 10] }
|
58
|
+
asserts(:from_rect).equals(Ray::Rect.new(0, 0, 10, 15))
|
59
|
+
|
60
|
+
context "after changing position in it" do
|
61
|
+
hookup { topic.sheet_pos = [3, 5] }
|
62
|
+
asserts(:from_rect).equals(Ray::Rect.new(30, 75, 10, 15))
|
63
|
+
end
|
64
|
+
|
65
|
+
context "after disabling it" do
|
66
|
+
hookup { topic.disable_sprite_sheet }
|
67
|
+
asserts(:from_rect).equals(Ray::Rect.new(0, 0, 100, 150))
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "after changing shader" do
|
72
|
+
hookup do
|
73
|
+
@shader = Ray::Shader.new StringIO.new(<<-SHADER)
|
74
|
+
void main() {}
|
75
|
+
SHADER
|
76
|
+
|
77
|
+
topic.shader = @shader
|
78
|
+
end
|
79
|
+
|
80
|
+
asserts(:shader).equals { @shader }
|
81
|
+
end
|
82
|
+
|
83
|
+
context "after changing color" do
|
84
|
+
hookup { topic.color = Ray::Color.red }
|
85
|
+
asserts(:color).equals(Ray::Color.red)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
run_tests if __FILE__ == $0
|
data/test/text_test.rb
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/helpers.rb'
|
3
|
+
|
4
|
+
context "a text" do
|
5
|
+
setup { Ray::Text.new "Hello world!" }
|
6
|
+
|
7
|
+
asserts(:content).equals "Hello world!"
|
8
|
+
|
9
|
+
asserts(:style).equals Ray::Font::STYLE_NORMAL
|
10
|
+
|
11
|
+
asserts(:pos).equals Ray::Vector2[0, 0]
|
12
|
+
asserts(:scale).equals Ray::Vector2[1, 1]
|
13
|
+
asserts(:angle).equals 0
|
14
|
+
|
15
|
+
asserts(:character_size).equals 12
|
16
|
+
|
17
|
+
asserts(:color).equals Ray::Color.white
|
18
|
+
|
19
|
+
context "after changing style" do
|
20
|
+
hookup { topic.style = [:bold, :italic] }
|
21
|
+
asserts(:style).equals Ray::Font::STYLE_BOLD | Ray::Font::STYLE_ITALIC
|
22
|
+
end
|
23
|
+
|
24
|
+
context "after changing string" do
|
25
|
+
hookup do
|
26
|
+
topic.encoding = "utf-8" # Would be required in 1.8 (but utf-8 is the default)
|
27
|
+
topic.content = "héllo"
|
28
|
+
end
|
29
|
+
|
30
|
+
asserts(:encoding).matches /utf-8/i
|
31
|
+
asserts(:content).equals "héllo"
|
32
|
+
end
|
33
|
+
|
34
|
+
context "after changing position" do
|
35
|
+
hookup { topic.pos = [13, 22] }
|
36
|
+
asserts(:pos).equals Ray::Vector2[13, 22]
|
37
|
+
end
|
38
|
+
|
39
|
+
context "after changing angle" do
|
40
|
+
hookup { topic.angle = 90 }
|
41
|
+
asserts(:angle).equals 90
|
42
|
+
end
|
43
|
+
|
44
|
+
context "after changing scale" do
|
45
|
+
hookup { topic.scale = [2, 10] }
|
46
|
+
asserts(:scale).equals Ray::Vector2[2, 10]
|
47
|
+
end
|
48
|
+
|
49
|
+
context "after changing character size" do
|
50
|
+
hookup { topic.character_size = 120 }
|
51
|
+
asserts(:character_size).equals 120
|
52
|
+
end
|
53
|
+
|
54
|
+
context "with another position and scale" do
|
55
|
+
hookup do
|
56
|
+
topic.pos = [10, 20]
|
57
|
+
topic.scale = [2, 10]
|
58
|
+
end
|
59
|
+
|
60
|
+
asserts("position of the rect") { topic.rect.pos }.equals Ray::Vector2[10, 20]
|
61
|
+
asserts("size / size without scale") {
|
62
|
+
scaled_size = topic.size
|
63
|
+
|
64
|
+
topic.scale = [1, 1]
|
65
|
+
size = topic.size
|
66
|
+
topic.scale = [2, 10]
|
67
|
+
|
68
|
+
scaled_size / size
|
69
|
+
}.equals Ray::Vector2[2, 10]
|
70
|
+
end
|
71
|
+
|
72
|
+
context "after changing the color" do
|
73
|
+
hookup { topic.color = Ray::Color.red }
|
74
|
+
asserts(:color).equals Ray::Color.red
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
run_tests if __FILE__ == $0
|
data/test/turtle_test.rb
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.expand_path(File.dirname(__FILE__)) + '/helpers.rb'
|
3
|
+
|
4
|
+
context "a turtle" do
|
5
|
+
setup { Ray::Turtle.new(Ray.screen) }
|
6
|
+
|
7
|
+
asserts(:drawing?)
|
8
|
+
asserts(:pos).equals(Ray::Vector2[0, 0])
|
9
|
+
asserts(:angle_unit).equals(:deg)
|
10
|
+
asserts(:angle).equals(0)
|
11
|
+
asserts(:pen_width).equals(1)
|
12
|
+
|
13
|
+
asserts("setting angle unit to something else than :deg or :rad") {
|
14
|
+
topic.angle_unit = :foo
|
15
|
+
}.raises ArgumentError
|
16
|
+
|
17
|
+
context "moved to [10, 15]" do
|
18
|
+
hookup { topic.pos = [10, 15] }
|
19
|
+
asserts(:pos).equals(Ray::Vector2[10, 15])
|
20
|
+
end
|
21
|
+
|
22
|
+
context "with pen up" do
|
23
|
+
hookup { topic.pen_up }
|
24
|
+
denies(:drawing?)
|
25
|
+
|
26
|
+
context "when asked to set pen down" do
|
27
|
+
hookup { topic.pen_down }
|
28
|
+
asserts(:drawing?)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "using radians" do
|
33
|
+
hookup { topic.angle_unit = :rad }
|
34
|
+
|
35
|
+
context "with angle = π" do
|
36
|
+
hookup { topic.angle = PI }
|
37
|
+
asserts(:angle).almost_equals(PI)
|
38
|
+
|
39
|
+
context "when asked to use degrees" do
|
40
|
+
hookup { topic.angle_unit = :deg }
|
41
|
+
asserts(:angle).almost_equals(180)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context "using degrees" do
|
47
|
+
hookup { topic.angle_unit = :deg }
|
48
|
+
|
49
|
+
context "with angle = 90" do
|
50
|
+
hookup { topic.angle = 90 }
|
51
|
+
asserts(:angle).almost_equals(90)
|
52
|
+
|
53
|
+
context "when asked to use radians" do
|
54
|
+
hookup { topic.angle_unit = :rad }
|
55
|
+
asserts(:angle).almost_equals(PI / 2)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "with angle = -30" do
|
61
|
+
hookup { topic.angle = -30 }
|
62
|
+
|
63
|
+
context "after having moved forward by 10" do
|
64
|
+
hookup { topic.forward 10 }
|
65
|
+
|
66
|
+
asserts(:x).almost_equals(+cos(deg_to_rad(-30)) * 10)
|
67
|
+
asserts(:y).almost_equals(-sin(deg_to_rad(-30)) * 10) # reversed y axis
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "which was drawing" do
|
72
|
+
hookup { stub(topic.img).draw_line }
|
73
|
+
|
74
|
+
context "with pen_width = 3.4" do
|
75
|
+
hookup { topic.pen_width = 3.4 }
|
76
|
+
|
77
|
+
context "after having moved forward by 10" do
|
78
|
+
hookup { topic.forward(10) }
|
79
|
+
asserts(:img).received(:draw_line, [0, 0], [10, 0], is_a(Ray::Color), 3.4)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "after having moved forward by 10" do
|
84
|
+
hookup { topic.forward(10) }
|
85
|
+
asserts(:img).received(:draw_line, [0, 0], [10, 0], is_a(Ray::Color), 1)
|
86
|
+
end
|
87
|
+
|
88
|
+
context "and went to (100, 100)" do
|
89
|
+
hookup { topic.go_to(100, 100) }
|
90
|
+
|
91
|
+
asserts(:img).received(:draw_line, [0, 0], [100, 100], is_a(Ray::Color), 1)
|
92
|
+
asserts(:pos).equals(Ray::Vector2[100, 100])
|
93
|
+
end
|
94
|
+
|
95
|
+
context "and went to the center of its image" do
|
96
|
+
hookup { topic.center }
|
97
|
+
|
98
|
+
asserts(:img).received(:draw_line, [0, 0], [50, 75], is_a(Ray::Color), 1)
|
99
|
+
asserts(:pos).equals(Ray::Vector2[50, 75])
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "which wasn't drawing" do
|
104
|
+
hookup do
|
105
|
+
topic.pen_up
|
106
|
+
stub(topic.img).draw_line
|
107
|
+
end
|
108
|
+
|
109
|
+
context "after having moved forward by 10" do
|
110
|
+
hookup { topic.forward(10) }
|
111
|
+
denies(:img).received(:draw_line, anything, anything, anything, anything)
|
112
|
+
end
|
113
|
+
|
114
|
+
context "and went to (100, 100)" do
|
115
|
+
hookup { topic.go_to(100, 100) }
|
116
|
+
|
117
|
+
denies(:img).received(:draw_line, anything, anything, anything, anything)
|
118
|
+
asserts(:pos).equals(Ray::Vector2[100, 100])
|
119
|
+
end
|
120
|
+
|
121
|
+
context "and went to the center of its image" do
|
122
|
+
hookup { topic.center }
|
123
|
+
|
124
|
+
denies(:img).received(:draw_line, anything, anything, anything, anything)
|
125
|
+
asserts(:pos).equals(Ray::Vector2[50, 75])
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
context "after having turned by 10° on the right" do
|
130
|
+
hookup { topic.right 10 }
|
131
|
+
asserts(:angle).almost_equals(-10)
|
132
|
+
end
|
133
|
+
|
134
|
+
context "after having turned by 10° on the left" do
|
135
|
+
hookup { topic.left 10 }
|
136
|
+
asserts(:angle).almost_equals(10)
|
137
|
+
end
|
138
|
+
|
139
|
+
context "with random parameters" do
|
140
|
+
hookup do
|
141
|
+
topic.pos = [100, 100]
|
142
|
+
topic.color = Ray::Color.red
|
143
|
+
topic.angle = 120
|
144
|
+
topic.pen_width = 3
|
145
|
+
topic.pen_up
|
146
|
+
|
147
|
+
stub(topic.img).fill
|
148
|
+
end
|
149
|
+
|
150
|
+
context "after #reset" do
|
151
|
+
hookup { topic.reset }
|
152
|
+
|
153
|
+
denies(:img).received(:fill, anything)
|
154
|
+
|
155
|
+
asserts(:pos).equals(Ray::Vector2[0, 0])
|
156
|
+
asserts(:angle).equals(0)
|
157
|
+
asserts(:color).equals(Ray::Color.white)
|
158
|
+
asserts(:drawing?)
|
159
|
+
asserts(:pen_width).equals(1)
|
160
|
+
end
|
161
|
+
|
162
|
+
context "after #clear" do
|
163
|
+
hookup { topic.clear }
|
164
|
+
|
165
|
+
asserts(:img).received(:fill, Ray::Color.none)
|
166
|
+
|
167
|
+
asserts(:pos).equals(Ray::Vector2[0, 0])
|
168
|
+
asserts(:angle).equals(0)
|
169
|
+
asserts(:color).equals(Ray::Color.white)
|
170
|
+
asserts(:drawing?)
|
171
|
+
asserts(:pen_width).equals(1)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
run_tests if __FILE__ == $0
|
data/test/vector_test.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__)) + '/helpers.rb'
|
2
|
+
|
3
|
+
context "a vector2" do
|
4
|
+
setup { Ray::Vector2[5, 15] }
|
5
|
+
|
6
|
+
asserts(:x).equals(5)
|
7
|
+
asserts(:y).equals(15)
|
8
|
+
|
9
|
+
asserts(:w).equals(5)
|
10
|
+
asserts(:h).equals(15)
|
11
|
+
|
12
|
+
asserts("#+ (1, 2)") { topic + [1, 2] }.equals Ray::Vector2[6, 17]
|
13
|
+
asserts("#- (1, 2)") { topic - [1, 2] }.equals Ray::Vector2[4, 13]
|
14
|
+
|
15
|
+
asserts("#* 2") { topic * 2 }.equals Ray::Vector2[10, 30]
|
16
|
+
asserts("#* (2, 1)") { topic * [2, 1] }.equals Ray::Vector2[10, 15]
|
17
|
+
asserts("#/ (2, 1)") { topic / [2, 1] }.equals Ray::Vector2[2.5, 15]
|
18
|
+
asserts("#dot (2, 1)") { topic.dot [2, 1] }.equals 25
|
19
|
+
|
20
|
+
asserts(:-@).equals Ray::Vector2[-5, -15]
|
21
|
+
asserts(:+@).equals Ray::Vector2[+5, +15]
|
22
|
+
|
23
|
+
asserts("#inside?(Ray::Rect.new(0, 0, 20, 20))") do
|
24
|
+
topic.inside? Ray::Rect.new(0, 0, 20, 20)
|
25
|
+
end
|
26
|
+
|
27
|
+
asserts("#outside?(Ray::Rect.new(8, 0, 20, 20))") do
|
28
|
+
topic.outside? Ray::Rect.new(8, 0, 20, 20)
|
29
|
+
end
|
30
|
+
|
31
|
+
asserts(:to_a).equals([5, 15])
|
32
|
+
|
33
|
+
asserts("equals to #to_a") { topic == [5, 15] }
|
34
|
+
asserts("equals to the same vector") { topic == Ray::Vector2[5, 15] }
|
35
|
+
asserts("equals to #dup") { topic == topic.dup }
|
36
|
+
asserts("eql? to the same vector") { topic.eql? Ray::Vector2[5, 15] }
|
37
|
+
asserts(:hash).equals { Ray::Vector2[5, 15].hash }
|
38
|
+
|
39
|
+
context "after changing x" do
|
40
|
+
hookup { topic.x = 10 }
|
41
|
+
|
42
|
+
asserts(:x).equals(10)
|
43
|
+
asserts(:y).equals(15)
|
44
|
+
|
45
|
+
asserts(:w).equals(10)
|
46
|
+
asserts(:h).equals(15)
|
47
|
+
end
|
48
|
+
|
49
|
+
context "after changing y" do
|
50
|
+
hookup { topic.y = 2 }
|
51
|
+
|
52
|
+
asserts(:x).equals(5)
|
53
|
+
asserts(:y).equals(2)
|
54
|
+
|
55
|
+
asserts(:w).equals(5)
|
56
|
+
asserts(:h).equals(2)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context "a vector3" do
|
61
|
+
setup { Ray::Vector3[5, 15, 20] }
|
62
|
+
|
63
|
+
asserts(:x).equals(5)
|
64
|
+
asserts(:y).equals(15)
|
65
|
+
asserts(:z).equals(20)
|
66
|
+
|
67
|
+
asserts(:to_a).equals([5, 15, 20])
|
68
|
+
|
69
|
+
asserts("#+ (1, 2, 3)") { topic + [1, 2, 3] }.equals Ray::Vector3[6, 17, 23]
|
70
|
+
asserts("#- (1, 2, 3)") { topic - [1, 2, 3] }.equals Ray::Vector3[4, 13, 17]
|
71
|
+
|
72
|
+
asserts("#* 2") { topic * 2 }.equals Ray::Vector3[10, 30, 40]
|
73
|
+
asserts("#* (2, 0, 0.5)") { topic * [2, 0, 0.5] }.equals Ray::Vector3[10, 0, 10]
|
74
|
+
asserts("#/ (2, 1, 0.5)") { topic / [2, 1, 0.5] }.equals Ray::Vector3[2.5, 15, 40]
|
75
|
+
asserts("#dot (2, 0, 0.5)") { topic.dot [2, 0, 0.5] }.equals 20
|
76
|
+
|
77
|
+
asserts(:-@).equals Ray::Vector3[-5, -15, -20]
|
78
|
+
asserts(:+@).equals Ray::Vector3[+5, +15, +20]
|
79
|
+
|
80
|
+
asserts("equals to #to_a") { topic == [5, 15, 20] }
|
81
|
+
asserts("equals to the same vector") { topic == Ray::Vector3[5, 15, 20] }
|
82
|
+
asserts("equals to #dup") { topic == topic.dup }
|
83
|
+
asserts("eql? to the same vector") { topic.eql? Ray::Vector3[5, 15, 20] }
|
84
|
+
asserts(:hash).equals { Ray::Vector3[5, 15, 20].hash }
|
85
|
+
|
86
|
+
context "after changing x" do
|
87
|
+
hookup { topic.x = 10 }
|
88
|
+
|
89
|
+
asserts(:x).equals(10)
|
90
|
+
asserts(:y).equals(15)
|
91
|
+
asserts(:z).equals(20)
|
92
|
+
end
|
93
|
+
|
94
|
+
context "after changing y" do
|
95
|
+
hookup { topic.y = 2 }
|
96
|
+
|
97
|
+
asserts(:x).equals(5)
|
98
|
+
asserts(:y).equals(2)
|
99
|
+
asserts(:z).equals(20)
|
100
|
+
end
|
101
|
+
|
102
|
+
context "after changing z" do
|
103
|
+
hookup { topic.z = 3 }
|
104
|
+
|
105
|
+
asserts(:x).equals(5)
|
106
|
+
asserts(:y).equals(15)
|
107
|
+
asserts(:z).equals(3)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
run_tests if __FILE__ == $0
|