sgl 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,291 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright (C) 2004-2005 Kouichirou Eto, All rights reserved.
3
+
4
+ $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
5
+
6
+ if /cocoa/ =~ RUBY_PLATFORM
7
+
8
+ require "sgl/cocoa-app"
9
+ require "test/unit"
10
+
11
+ class TestCocoaBasic < Test::Unit::TestCase
12
+ def test_basic
13
+ app = SGL::Application.new
14
+ app.set_setup {
15
+ app.window(100, 100)
16
+ app.runtime = 0.5
17
+ }
18
+ i = 0
19
+ app.set_display {
20
+ app.line(0, 0, 100, i*5)
21
+ i += 2
22
+ i = 0 if 20 < i
23
+ }
24
+ app.mainloop
25
+ end
26
+
27
+ def test_window
28
+ app = SGL::Application.new
29
+ sleep 0.01; app.window(100, 100)
30
+ sleep 0.01; app.close_window
31
+ sleep 0.01; app.window(500, 500)
32
+ sleep 0.01; app.close_window
33
+ sleep 0.01; app.window(100, 100, :border=>false)
34
+ sleep 0.01; app.close_window
35
+ sleep 0.01; app.window(100, 100, :shadow=>false, :border=>false)
36
+ sleep 0.01; app.close_window
37
+ end
38
+
39
+ def test_color
40
+ app = SGL::Application.new
41
+ app.window(100, 100)
42
+ app.background(100)
43
+ bgcolor = app.instance_eval { @bgcolor }
44
+ assert_equal([1.0, 1.0, 1.0, 1.0], bgcolor)
45
+ app.background(10, 20, 30)
46
+ bgcolor = app.instance_eval { @bgcolor }
47
+ assert_equal([0.1, 0.2, 0.3, 1.0], bgcolor)
48
+ app.color(0)
49
+ curcolor = app.instance_eval { @curcolor }
50
+ assert_equal([0.0, 0.0, 0.0, 1.0], curcolor)
51
+ app.color(10, 20, 30)
52
+ curcolor = app.instance_eval { @curcolor }
53
+ assert_equal([0.1, 0.2, 0.3, 1.0], curcolor)
54
+ app.close_window
55
+ end
56
+
57
+ def test_setup_and_display
58
+ app = SGL::Application.new
59
+ app.window(100, 100)
60
+
61
+ test_setup_done = false
62
+ app.set_setup { test_setup_done = true }
63
+ assert_equal(false, test_setup_done)
64
+ app.do_setup
65
+ assert_equal(true, test_setup_done)
66
+
67
+ test_display_done = false
68
+ app.set_display { test_display_done = true }
69
+ assert_equal(false, test_display_done)
70
+ app.do_display
71
+ assert_equal(true, test_display_done)
72
+ app.close_window
73
+ end
74
+
75
+ def test_event
76
+ app = SGL::Application.new
77
+ app.window(100, 100)
78
+
79
+ test = {}
80
+ app.set_mousedown { test[:mousedown] = true }
81
+ assert_equal(nil, test[:mousedown])
82
+ app.do_mousedown
83
+ assert_equal(true, test[:mousedown])
84
+ end
85
+ end
86
+
87
+ class TestCocoaDraw < Test::Unit::TestCase
88
+ def test_commands
89
+ app = SGL::Application.new
90
+ app.set_setup {
91
+ app.window(100, 100)
92
+ app.runtime = 0.1
93
+ }
94
+ app.set_display {
95
+ app.line(0, 0, 100, 100)
96
+ app.rect(40, 40, 60, 60)
97
+ app.circle(20, 20, 10)
98
+ }
99
+ app.mainloop
100
+ end
101
+
102
+ def test_for
103
+ app = SGL::Application.new
104
+ app.set_setup {
105
+ app.window(100, 100)
106
+ app.runtime = 0.1
107
+ }
108
+ app.set_display {
109
+ for i in 0..20
110
+ app.line(0, 0, 100, i*5)
111
+ end
112
+ }
113
+ app.mainloop
114
+ end
115
+
116
+ def test_iterate
117
+ app = SGL::Application.new
118
+ app.set_setup {
119
+ app.window(100, 100)
120
+ app.runtime = 0.5
121
+ }
122
+ i = 0
123
+ app.set_display {
124
+ app.line(0, 0, 100, i*5)
125
+ i += 1
126
+ i = 0 if 20 < i
127
+ }
128
+ app.mainloop
129
+ end
130
+
131
+ def test_font
132
+ app = SGL::Application.new
133
+ app.set_setup {
134
+ app.window(100, 100)
135
+ app.runtime = 0.1
136
+ }
137
+ font = app.font("Helvetica")
138
+ app.set_display {
139
+ font.text(50, 50, "hello")
140
+ }
141
+ app.mainloop
142
+ end
143
+
144
+ def test_font_iterate
145
+ app = SGL::Application.new
146
+ app.set_setup {
147
+ app.window(100, 100)
148
+ app.runtime = 0.5
149
+ }
150
+ i = 10
151
+ app.set_display {
152
+ font = app.font("Helvetica", i)
153
+ font.text(0, 0, "hello")
154
+ i += 5
155
+ i = 0 if 200 < i
156
+ }
157
+ app.mainloop
158
+ end
159
+
160
+ def test_affine
161
+ app = SGL::Application.new
162
+ app.set_setup {
163
+ app.window(300, 300)
164
+ app.runtime = 0.5
165
+ @font = app.font("Helvetica", 20)
166
+ }
167
+ i = 0
168
+ app.set_display {
169
+ app.colorHSV 66, 100, 100, 50
170
+ app.lineWidth(i/10)
171
+ app.line(0, 0, 300, i)
172
+ app.translate i, i
173
+ app.rotateZ i
174
+ app.colorHSV i, 100, 100
175
+ @font.text(0, 0, "rotate")
176
+ app.rect(-10, -10, +10, +10)
177
+ i += 20
178
+ i = 0 if 300 < i
179
+ }
180
+ app.mainloop
181
+ end
182
+ end
183
+
184
+ class TestCocoaMedia < Test::Unit::TestCase
185
+ def test_image
186
+ app = SGL::Application.new
187
+ app.set_setup {
188
+ app.window(200, 200)
189
+ app.runtime = 0.5
190
+ }
191
+ image = app.image("../media/balls.png")
192
+ i = 10
193
+ app.set_display {
194
+ app.background 100-i
195
+ image.rect(0, i, 100, i+50)
196
+ i += 5
197
+ i = 0 if 100 < i
198
+ }
199
+ app.mainloop
200
+ end
201
+
202
+ def nutest_sound
203
+ app = SGL::Application.new
204
+ app.set_setup {
205
+ app.window(100, 100)
206
+ app.runtime = 1.5
207
+ @sound = app.sound("../media/Pop.aiff")
208
+ @first = true
209
+ }
210
+ app.set_display {
211
+ if @first
212
+ @sound.play
213
+ @first = false
214
+ end
215
+ }
216
+ app.mainloop
217
+ end
218
+ end
219
+
220
+ #class TestCocoaMovie < Test::Unit::TestCase
221
+ class TestCocoaMovie
222
+ TEST_MOVIE = "/Applications/iDVD 3/Tutorial/Media/Background Movie.mov"
223
+
224
+ def test_movie
225
+ app = SGL::Application.new
226
+ app.set_setup {
227
+ app.window(500, 500)
228
+ app.runtime = 2.0
229
+ @movie = app.movie(TEST_MOVIE)
230
+ @movie.play
231
+ }
232
+ i = 100
233
+ app.set_display {
234
+ app.background 100-i
235
+ @movie.rect(i, i, 200+i, 150+i)
236
+ i += 5
237
+ i = 0 if 500 < i
238
+ }
239
+ app.mainloop
240
+ end
241
+
242
+ def test_movie_view
243
+ app = SGL::Application.new
244
+ app.set_setup {
245
+ app.window(500, 500, :movie=>true, :overlay=>true)
246
+ app.runtime = 3.0
247
+ @movie = app.movie(TEST_MOVIE)
248
+ @movie.play
249
+ }
250
+ i = 100
251
+ app.set_display {
252
+ app.background 100-i/5
253
+ app.colorHSV(66, 100, 100, 50)
254
+ app.circle(500-i, i, 100)
255
+ i += 20
256
+ i = 0 if 400 < i
257
+ @movie.rect(i+100, i+100, i+400, i+300)
258
+ }
259
+ app.set_display_overlay {
260
+ app.colorHSV(33, 100, 100, 50)
261
+ app.circle(i, i, 100)
262
+ }
263
+ app.mainloop
264
+ end
265
+
266
+ def test_movie_overlay
267
+ app = SGL::Application.new
268
+ app.set_setup {
269
+ app.window(500, 500, :overlay=>true)
270
+ app.runtime = 3.0
271
+ @movie = app.movie(TEST_MOVIE)
272
+ @movie.play
273
+ }
274
+ i = 100
275
+ app.set_display {
276
+ app.background 100-i/5
277
+ @movie.rect(100, 100, 400, 300)
278
+ app.colorHSV(66, 100, 100, 50)
279
+ app.circle(500-i, i, 100)
280
+ i += 20
281
+ i = 0 if 400 < i
282
+ }
283
+ app.set_display_overlay {
284
+ app.colorHSV(33, 100, 100, 50)
285
+ app.circle(i, i, 100)
286
+ }
287
+ app.mainloop
288
+ end
289
+ end
290
+
291
+ end
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/sgl'
@@ -0,0 +1,29 @@
1
+ # Copyright (C) 2004-2005 Kouichirou Eto, All rights reserved.
2
+
3
+ =begin
4
+ # only for Ruby 1.6
5
+ class Array
6
+ def fetch(n)
7
+ a = self[n]
8
+ if a.nil?
9
+ a = yield
10
+ end
11
+ a
12
+ end
13
+ end
14
+
15
+ module Enumerable
16
+ def sort_by
17
+ self.collect {|i| [yield(i), i]}.
18
+ sort {|a,b| a[0] <=> b[0]}.
19
+ collect! {|i| i[1]}
20
+ end
21
+ end
22
+
23
+ alias org_exit exit
24
+ def exit(n)
25
+ n = 0 if n == true
26
+ n = 1 if n == false
27
+ org_exit(n)
28
+ end
29
+ =end
@@ -0,0 +1,148 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright (C) 2004-2005 Kouichirou Eto, All rights reserved.
3
+
4
+ $LOAD_PATH.unshift("..") if !$LOAD_PATH.include?("..")
5
+ require "sgl/opengl-app"
6
+ require "test/unit"
7
+
8
+ class TestOpenglBasic < Test::Unit::TestCase
9
+ def test_basic
10
+ app = SGL::Application.new
11
+ app.set_setup {
12
+ app.window(100, 100)
13
+ app.runtime = 0.1
14
+ }
15
+ i = 0
16
+ app.set_display {
17
+ app.line(0, 0, 100, i*5)
18
+ i += 2
19
+ i = 0 if 20 < i
20
+ }
21
+ app.mainloop
22
+ end
23
+
24
+ def test_window
25
+ app = SGL::Application.new
26
+ sleep 0.01; app.window(100, 100)
27
+ sleep 0.01; app.close_window
28
+ sleep 0.01; app.window(500, 500)
29
+ sleep 0.01; app.close_window
30
+ sleep 0.01; app.window(100, 100, :border=>false)
31
+ sleep 0.01; app.close_window
32
+ sleep 0.01; app.window(100, 100, :shadow=>false, :border=>false)
33
+ sleep 0.01; app.close_window
34
+ end
35
+
36
+ def nutest_color
37
+ app = SGL::Application.new
38
+ app.window(100, 100)
39
+ app.background(100)
40
+ bgcolor = app.instance_eval { @bgcolor }
41
+ assert_equal([1.0, 1.0, 1.0, 1.0], bgcolor)
42
+ app.background(10, 20, 30)
43
+ bgcolor = app.instance_eval { @bgcolor }
44
+ assert_equal([0.1, 0.2, 0.3, 1.0], bgcolor)
45
+ app.color(0)
46
+ curcolor = app.instance_eval { @curcolor }
47
+ assert_equal([0.0, 0.0, 0.0, 1.0], curcolor)
48
+ app.color(10, 20, 30)
49
+ curcolor = app.instance_eval { @curcolor }
50
+ assert_equal([0.1, 0.2, 0.3, 1.0], curcolor)
51
+ app.close_window
52
+ end
53
+
54
+ def test_setup_and_display
55
+ app = SGL::Application.new
56
+ app.window(100, 100)
57
+
58
+ test_setup_done = false
59
+ app.set_setup { test_setup_done = true }
60
+ assert_equal(false, test_setup_done)
61
+ app.do_setup
62
+ assert_equal(true, test_setup_done)
63
+
64
+ test_display_done = false
65
+ app.set_display { test_display_done = true }
66
+ assert_equal(false, test_display_done)
67
+ app.do_display
68
+ assert_equal(true, test_display_done)
69
+ app.close_window
70
+ end
71
+
72
+ def test_event
73
+ app = SGL::Application.new
74
+ app.window(100, 100)
75
+
76
+ test = {}
77
+ app.set_mousedown { test[:mousedown] = true }
78
+ assert_equal(nil, test[:mousedown])
79
+ app.do_mousedown
80
+ assert_equal(true, test[:mousedown])
81
+ end
82
+ end
83
+
84
+ class TestCocoaDraw < Test::Unit::TestCase
85
+ def test_commands
86
+ app = SGL::Application.new
87
+ app.set_setup {
88
+ app.window(100, 100)
89
+ app.runtime = 0.1
90
+ }
91
+ app.set_display {
92
+ app.line(0, 0, 100, 100)
93
+ app.rect(40, 40, 60, 60)
94
+ app.circle(20, 20, 10)
95
+ }
96
+ app.mainloop
97
+ end
98
+
99
+ def test_for
100
+ app = SGL::Application.new
101
+ app.set_setup {
102
+ app.window(100, 100)
103
+ app.runtime = 0.1
104
+ }
105
+ app.set_display {
106
+ for i in 0..20
107
+ app.line(0, 0, 100, i*5)
108
+ end
109
+ }
110
+ app.mainloop
111
+ end
112
+
113
+ def test_iterate
114
+ app = SGL::Application.new
115
+ app.set_setup {
116
+ app.window(100, 100)
117
+ app.runtime = 0.2
118
+ }
119
+ i = 0
120
+ app.set_display {
121
+ app.line(0, 0, 100, i*5)
122
+ i += 1
123
+ i = 0 if 20 < i
124
+ }
125
+ app.mainloop
126
+ end
127
+
128
+ def test_affine
129
+ app = SGL::Application.new
130
+ app.set_setup {
131
+ app.window(300, 300)
132
+ app.runtime = 0.2
133
+ }
134
+ i = 0
135
+ app.set_display {
136
+ app.colorHSV 66, 100, 100, 50
137
+ app.lineWidth(i/10)
138
+ app.line(0, 0, 300, i)
139
+ app.translate i, i
140
+ app.rotateZ i
141
+ app.colorHSV i, 100, 100
142
+ app.rect(-10, -10, +10, +10)
143
+ i += 20
144
+ i = 0 if 300 < i
145
+ }
146
+ app.mainloop
147
+ end
148
+ end