smalruby-editor 0.0.12-x86-mingw32 → 0.1.0-x86-mingw32
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.
Potentially problematic release.
This version of smalruby-editor might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -0
- data/.travis.yml +2 -0
- data/LEGAL +32 -0
- data/Rakefile +1 -1
- data/app/assets/demos/default.xml +126 -0
- data/app/assets/demos/rgb_led_anode.xml +83 -0
- data/app/assets/images/favicon.ico +0 -0
- data/app/assets/javascripts/application.js +18 -1
- data/app/assets/javascripts/block_mode.js.coffee.erb +10 -0
- data/app/assets/javascripts/blocks/blockly.js.coffee.erb +34 -0
- data/app/assets/javascripts/blocks/character.js.coffee.erb +76 -0
- data/app/assets/javascripts/blocks/control.js.coffee.erb +180 -0
- data/app/assets/javascripts/blocks/data.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/etc.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/events.js.coffee.erb +82 -0
- data/app/assets/javascripts/blocks/hardware.js.coffee.erb +313 -0
- data/app/assets/javascripts/blocks/looks.js.coffee.erb +163 -0
- data/app/assets/javascripts/blocks/motion.js.coffee.erb +297 -0
- data/app/assets/javascripts/blocks/operators.js.coffee.erb +279 -0
- data/app/assets/javascripts/blocks/pen.js.coffee.erb +6 -0
- data/app/assets/javascripts/blocks/ruby.js.coffee.erb +74 -0
- data/app/assets/javascripts/blocks/sensing.js.coffee.erb +241 -0
- data/app/assets/javascripts/blocks/sound.js.coffee.erb +75 -0
- data/{public/favicon.ico → app/assets/javascripts/collections/.keep} +0 -0
- data/app/assets/javascripts/collections/character_set.js.coffee +12 -0
- data/app/assets/javascripts/generators/ruby.js.coffee.erb +188 -0
- data/app/assets/javascripts/models/.keep +0 -0
- data/app/assets/javascripts/models/character.js.coffee +66 -0
- data/app/assets/javascripts/models/scene.js.coffee +5 -0
- data/app/assets/javascripts/models/source_code.js.coffee +64 -0
- data/app/assets/javascripts/routers/.keep +0 -0
- data/app/assets/javascripts/ruby_mode.js.coffee.erb +12 -0
- data/app/assets/javascripts/smalruby.js.coffee +97 -0
- data/app/assets/javascripts/views/.keep +0 -0
- data/app/assets/javascripts/views/character_modal_view.js.coffee +148 -0
- data/app/assets/javascripts/views/character_selector_view.js.coffee +109 -0
- data/app/assets/javascripts/views/main_menu_view.js.coffee +264 -0
- data/app/assets/stylesheets/editor.css.scss +318 -2
- data/app/assets/stylesheets/toolbox.css.scss.erb +62 -0
- data/app/assets/templates/.keep +0 -0
- data/app/controllers/application_controller.rb +19 -0
- data/app/controllers/editor_controller.rb +4 -0
- data/app/controllers/source_codes_controller.rb +8 -2
- data/app/helpers/application_helper.rb +1 -0
- data/app/helpers/editor_helper.rb +46 -0
- data/app/models/source_code.rb +49 -6
- data/app/views/editor/_block_tab.html.haml +53 -0
- data/app/views/editor/_character_modal.html.haml +53 -0
- data/app/views/editor/_toolbox.html.haml +384 -0
- data/app/views/editor/demo.html.erb +16 -0
- data/app/views/editor/index.html.haml +60 -0
- data/app/views/layouts/application.html.erb +7 -0
- data/config/application.rb +1 -0
- data/config/initializers/teaspoon.rb +79 -0
- data/config/routes.rb +4 -0
- data/lib/smalruby_editor/version.rb +1 -1
- data/lib/tasks/gem.rake +7 -4
- data/lib/tasks/release.rake +43 -0
- data/public/apple-touch-icon.png +0 -0
- data/public/blockly/media/1x1.gif +0 -0
- data/public/blockly/media/click.mp3 +0 -0
- data/public/blockly/media/click.ogg +0 -0
- data/public/blockly/media/click.wav +0 -0
- data/public/blockly/media/delete.mp3 +0 -0
- data/public/blockly/media/delete.ogg +0 -0
- data/public/blockly/media/delete.wav +0 -0
- data/public/blockly/media/handclosed.cur +0 -0
- data/public/blockly/media/handopen.cur +0 -0
- data/public/blockly/media/quote0.png +0 -0
- data/public/blockly/media/quote1.png +0 -0
- data/public/blockly/media/trashbody.png +0 -0
- data/public/blockly/media/trashlid.png +0 -0
- data/public/blockly/media/tree.png +0 -0
- data/public/browserconfig.xml +1 -0
- data/public/large.png +0 -0
- data/public/smalruby/assets/ball1.png +0 -0
- data/public/smalruby/assets/ball2.png +0 -0
- data/public/smalruby/assets/ball3.png +0 -0
- data/public/smalruby/assets/ball4.png +0 -0
- data/public/smalruby/assets/ball5.png +0 -0
- data/public/smalruby/assets/ball6.png +0 -0
- data/public/smalruby/assets/car1.png +0 -0
- data/public/smalruby/assets/car2.png +0 -0
- data/public/smalruby/assets/car3.png +0 -0
- data/public/smalruby/assets/car4.png +0 -0
- data/public/smalruby/assets/cat1.png +0 -0
- data/public/smalruby/assets/cat2.png +0 -0
- data/public/smalruby/assets/cat3.png +0 -0
- data/public/smalruby/assets/frog1.png +0 -0
- data/public/smalruby/assets/piano_do.wav +0 -0
- data/public/smalruby/assets/piano_do_2.wav +0 -0
- data/public/smalruby/assets/piano_fa.wav +0 -0
- data/public/smalruby/assets/piano_mi.wav +0 -0
- data/public/smalruby/assets/piano_ra.wav +0 -0
- data/public/smalruby/assets/piano_re.wav +0 -0
- data/public/smalruby/assets/piano_si.wav +0 -0
- data/public/smalruby/assets/piano_so.wav +0 -0
- data/public/square.png +0 -0
- data/public/tiny.png +0 -0
- data/public/wide.png +0 -0
- data/smalruby-editor.gemspec +4 -0
- data/spec/acceptance/block_mode/blocks/character/new.feature +136 -0
- data/spec/acceptance/block_mode/blocks/control/await.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/await_until.feature +39 -0
- data/spec/acceptance/block_mode/blocks/control/break.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/if.feature +68 -0
- data/spec/acceptance/block_mode/blocks/control/if_else.feature +78 -0
- data/spec/acceptance/block_mode/blocks/control/loop.feature +45 -0
- data/spec/acceptance/block_mode/blocks/control/next.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/redo.feature +20 -0
- data/spec/acceptance/block_mode/blocks/control/sleep.feature +41 -0
- data/spec/acceptance/block_mode/blocks/control/times.feature +72 -0
- data/spec/acceptance/block_mode/blocks/control/until.feature +68 -0
- data/spec/acceptance/block_mode/blocks/events/on_click.feature +75 -0
- data/spec/acceptance/block_mode/blocks/events/on_hit.feature +83 -0
- data/spec/acceptance/block_mode/blocks/events/on_key_push_or_down.feature +171 -0
- data/spec/acceptance/block_mode/blocks/events/on_start.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/init_hardware.feature +44 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_off.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/led_on.feature +75 -0
- data/spec/acceptance/block_mode/blocks/hardware/on_sensor_change.feature +81 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_off.feature +81 -0
- data/spec/acceptance/block_mode/blocks/hardware/rgb_led_on.feature +87 -0
- data/spec/acceptance/block_mode/blocks/hardware/sensor_value.feature +100 -0
- data/spec/acceptance/block_mode/blocks/looks/hide.feature +69 -0
- data/spec/acceptance/block_mode/blocks/looks/say.feature +106 -0
- data/spec/acceptance/block_mode/blocks/looks/show.feature +69 -0
- data/spec/acceptance/block_mode/blocks/looks/vanish.feature +69 -0
- data/spec/acceptance/block_mode/blocks/motion/change_x_by.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/change_y_by.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/move.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/reach_wall.feature +98 -0
- data/spec/acceptance/block_mode/blocks/motion/rotate_left.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/rotate_right.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/self_angle.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/self_x.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/self_y.feature +92 -0
- data/spec/acceptance/block_mode/blocks/motion/set_angle.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/set_x.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/set_x_y.feature +95 -0
- data/spec/acceptance/block_mode/blocks/motion/set_y.feature +81 -0
- data/spec/acceptance/block_mode/blocks/motion/turn.feature +69 -0
- data/spec/acceptance/block_mode/blocks/motion/turn_if_reach_wall.feature +69 -0
- data/spec/acceptance/block_mode/blocks/sensing/character_property.feature +114 -0
- data/spec/acceptance/block_mode/blocks/sensing/hit.feature +110 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_key_push_or_down.feature +91 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_x.feature +39 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_pos_y.feature +39 -0
- data/spec/acceptance/block_mode/blocks/sensing/input_mouse_push_or_down.feature +91 -0
- data/spec/acceptance/block_mode/blocks/sensing/time_now.feature +43 -0
- data/spec/acceptance/block_mode/blocks/sound/play.feature +81 -0
- data/spec/acceptance/block_mode/demo.feature +49 -0
- data/spec/acceptance/{text_editor → ruby_mode}/base.feature +11 -2
- data/spec/acceptance/{standalone → ruby_mode}/check.feature +8 -9
- data/spec/acceptance/ruby_mode/download.feature +33 -0
- data/spec/acceptance/{text_editor → ruby_mode}/load.feature +13 -13
- data/spec/acceptance/standalone/run.feature +17 -0
- data/spec/acceptance/standalone/save.feature +6 -6
- data/spec/helpers/editor_helper_spec.rb +110 -10
- data/spec/javascripts/collections/character_set_spec.coffee +41 -0
- data/spec/javascripts/models/character_spec.coffee +146 -0
- data/spec/javascripts/models/scene_spec.coffee +15 -0
- data/spec/javascripts/spec_helper.js +29 -0
- data/spec/spec_helper.rb +3 -8
- data/spec/steps/block_mode_steps.rb +37 -0
- data/spec/steps/global_variable.rb +30 -6
- data/spec/steps/text_editor_steps.rb +20 -2
- data/spec/teaspoon_env.rb +46 -0
- data/vendor/assets/javascripts/blockly/blockly_compressed.js +992 -0
- data/vendor/assets/javascripts/blockly/blocks_compressed.js +129 -0
- data/vendor/assets/javascripts/blockly/msg/js/ja.js +377 -0
- data/vendor/assets/javascripts/jquery.blockUI.js +619 -0
- metadata +290 -23
- data/app/assets/javascripts/editor.js.coffee.erb +0 -137
- data/app/views/editor/index.html.erb +0 -22
- data/spec/acceptance/text_editor/check.feature +0 -29
- data/spec/acceptance/text_editor/save.feature +0 -34
- data/spec/support/assets.rb +0 -18
@@ -0,0 +1,91 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: sensing_input_mouse_push_or_down - 「条件:マウスの[▼左ボタン]が[▼押された]」ブロック
|
5
|
+
シナリオ: [▼押された]ブロックのみ配置する
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
|
8
|
+
もし 次のブロックを配置する:
|
9
|
+
"""
|
10
|
+
%block{:type => "sensing_input_mouse_push_or_down", :x => "0", :y => "0"}
|
11
|
+
%field{:name => "MOUSE_BUTTON"}<
|
12
|
+
M_LBUTTON
|
13
|
+
%field{:name => "POD"}<
|
14
|
+
push
|
15
|
+
"""
|
16
|
+
かつ ブロックからソースコードを生成する
|
17
|
+
|
18
|
+
ならば テキストエディタのプログラムは以下であること:
|
19
|
+
"""
|
20
|
+
require "smalruby"
|
21
|
+
|
22
|
+
Input.mouse_push?(M_LBUTTON)
|
23
|
+
|
24
|
+
"""
|
25
|
+
|
26
|
+
シナリオ: 文と[▼押された]ブロックを配置する
|
27
|
+
前提 "ブロック" タブを表示する
|
28
|
+
|
29
|
+
もし 次のブロックを配置する:
|
30
|
+
"""
|
31
|
+
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
32
|
+
%value{:name => "ARG"}
|
33
|
+
%block{:type => "sensing_input_mouse_push_or_down", :x => "0", :y => "0"}
|
34
|
+
%field{:name => "MOUSE_BUTTON"}<
|
35
|
+
M_LBUTTON
|
36
|
+
%field{:name => "POD"}<
|
37
|
+
push
|
38
|
+
"""
|
39
|
+
かつ ブロックからソースコードを生成する
|
40
|
+
|
41
|
+
ならば テキストエディタのプログラムは以下であること:
|
42
|
+
"""
|
43
|
+
require "smalruby"
|
44
|
+
|
45
|
+
p(Input.mouse_push?(M_LBUTTON))
|
46
|
+
|
47
|
+
"""
|
48
|
+
|
49
|
+
シナリオ: [▼押され続けている]ブロックのみ配置する
|
50
|
+
前提 "ブロック" タブを表示する
|
51
|
+
|
52
|
+
もし 次のブロックを配置する:
|
53
|
+
"""
|
54
|
+
%block{:type => "sensing_input_mouse_push_or_down", :x => "0", :y => "0"}
|
55
|
+
%field{:name => "MOUSE_BUTTON"}<
|
56
|
+
M_LBUTTON
|
57
|
+
%field{:name => "POD"}<
|
58
|
+
down
|
59
|
+
"""
|
60
|
+
かつ ブロックからソースコードを生成する
|
61
|
+
|
62
|
+
ならば テキストエディタのプログラムは以下であること:
|
63
|
+
"""
|
64
|
+
require "smalruby"
|
65
|
+
|
66
|
+
Input.mouse_down?(M_LBUTTON)
|
67
|
+
|
68
|
+
"""
|
69
|
+
|
70
|
+
シナリオ: 文と[▼押され続けている]ブロックを配置する
|
71
|
+
前提 "ブロック" タブを表示する
|
72
|
+
|
73
|
+
もし 次のブロックを配置する:
|
74
|
+
"""
|
75
|
+
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
76
|
+
%value{:name => "ARG"}
|
77
|
+
%block{:type => "sensing_input_mouse_push_or_down", :x => "0", :y => "0"}
|
78
|
+
%field{:name => "MOUSE_BUTTON"}<
|
79
|
+
M_LBUTTON
|
80
|
+
%field{:name => "POD"}<
|
81
|
+
down
|
82
|
+
"""
|
83
|
+
かつ ブロックからソースコードを生成する
|
84
|
+
|
85
|
+
ならば テキストエディタのプログラムは以下であること:
|
86
|
+
"""
|
87
|
+
require "smalruby"
|
88
|
+
|
89
|
+
p(Input.mouse_down?(M_LBUTTON))
|
90
|
+
|
91
|
+
"""
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: sensing_time_now - 「変数:現在の[▼時]」ブロック
|
5
|
+
シナリオ: ブロックのみ配置する
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
|
8
|
+
もし 次のブロックを配置する:
|
9
|
+
"""
|
10
|
+
%block{:type => "sensing_time_now", :x => "0", :y => "0"}
|
11
|
+
%field{:name => "METHOD"}<
|
12
|
+
hour
|
13
|
+
"""
|
14
|
+
かつ ブロックからソースコードを生成する
|
15
|
+
|
16
|
+
ならば テキストエディタのプログラムは以下であること:
|
17
|
+
"""
|
18
|
+
require "smalruby"
|
19
|
+
|
20
|
+
Time.now.hour
|
21
|
+
|
22
|
+
"""
|
23
|
+
|
24
|
+
シナリオ: 文とブロックを配置する
|
25
|
+
前提 "ブロック" タブを表示する
|
26
|
+
|
27
|
+
もし 次のブロックを配置する:
|
28
|
+
"""
|
29
|
+
%block{:type => "ruby_p", :x => "0", :y => "0", :inline => "true" }
|
30
|
+
%value{:name => "ARG"}
|
31
|
+
%block{:type => "sensing_time_now", :x => "0", :y => "0"}
|
32
|
+
%field{:name => "METHOD"}<
|
33
|
+
hour
|
34
|
+
"""
|
35
|
+
かつ ブロックからソースコードを生成する
|
36
|
+
|
37
|
+
ならば テキストエディタのプログラムは以下であること:
|
38
|
+
"""
|
39
|
+
require "smalruby"
|
40
|
+
|
41
|
+
p(Time.now.hour)
|
42
|
+
|
43
|
+
"""
|
@@ -0,0 +1,81 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: sound_play - 「[▼プリセット音声]の音を鳴らす」ブロック
|
5
|
+
シナリオ: ブロックのみ配置する
|
6
|
+
前提 "ブロック" タブを表示する
|
7
|
+
|
8
|
+
もし 次のブロックを配置する:
|
9
|
+
"""
|
10
|
+
%block{:type => "sound_play", :x => "0", :y => "0"}
|
11
|
+
%value{:name => "NAME"}
|
12
|
+
%block{:type => "text"}
|
13
|
+
%field{:name => "TEXT"}<
|
14
|
+
piano_do.wav
|
15
|
+
"""
|
16
|
+
かつ ブロックからソースコードを生成する
|
17
|
+
|
18
|
+
ならば テキストエディタのプログラムは "" であること
|
19
|
+
|
20
|
+
シナリオ: キャラクターとブロックを配置する
|
21
|
+
前提 "ブロック" タブを表示する
|
22
|
+
かつ 次のキャラクターを追加する:
|
23
|
+
| name | costumes | x | y | angle |
|
24
|
+
| car1 | car1.png | 0 | 0 | 0 |
|
25
|
+
|
26
|
+
もし 次のブロックを配置する:
|
27
|
+
"""
|
28
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
29
|
+
%field{:name => "NAME"}<
|
30
|
+
car1
|
31
|
+
%statement{:name => "DO"}
|
32
|
+
%block{:type => "sound_play", :x => "0", :y => "0"}
|
33
|
+
%value{:name => "NAME"}
|
34
|
+
%block{:type => "text"}
|
35
|
+
%field{:name => "TEXT"}<
|
36
|
+
piano_do.wav
|
37
|
+
"""
|
38
|
+
かつ ブロックからソースコードを生成する
|
39
|
+
|
40
|
+
ならば テキストエディタのプログラムは以下であること:
|
41
|
+
"""
|
42
|
+
require "smalruby"
|
43
|
+
|
44
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
45
|
+
car1.play(name: "piano_do.wav")
|
46
|
+
|
47
|
+
"""
|
48
|
+
|
49
|
+
シナリオ: キャラクターとイベントとブロックを配置する
|
50
|
+
前提 "ブロック" タブを表示する
|
51
|
+
かつ 次のキャラクターを追加する:
|
52
|
+
| name | costumes | x | y | angle |
|
53
|
+
| car1 | car1.png | 0 | 0 | 0 |
|
54
|
+
|
55
|
+
もし 次のブロックを配置する:
|
56
|
+
"""
|
57
|
+
%block{:type => "character_new", :x => "21", :y => "15"}
|
58
|
+
%field{:name => "NAME"}<
|
59
|
+
car1
|
60
|
+
%statement{:name => "DO"}
|
61
|
+
%block{:type => "events_on_start"}
|
62
|
+
%statement{:name => "DO"}
|
63
|
+
%block{:type => "sound_play", :x => "0", :y => "0"}
|
64
|
+
%value{:name => "NAME"}
|
65
|
+
%block{:type => "text"}
|
66
|
+
%field{:name => "TEXT"}<
|
67
|
+
piano_do.wav
|
68
|
+
"""
|
69
|
+
かつ ブロックからソースコードを生成する
|
70
|
+
|
71
|
+
ならば テキストエディタのプログラムは以下であること:
|
72
|
+
"""
|
73
|
+
require "smalruby"
|
74
|
+
|
75
|
+
car1 = Character.new(costume: "car1.png", x: 0, y: 0, angle: 0)
|
76
|
+
|
77
|
+
car1.on(:start) do
|
78
|
+
play(name: "piano_do.wav")
|
79
|
+
end
|
80
|
+
|
81
|
+
"""
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: Demo - デモモード
|
5
|
+
シナリオ: デモ用のブロックからRubyのソースコードを生成する
|
6
|
+
前提 "デモページ" にアクセスする
|
7
|
+
|
8
|
+
もし "Rubyタブ" にタブを切り替える
|
9
|
+
|
10
|
+
ならば テキストエディタのプログラムは以下であること:
|
11
|
+
"""
|
12
|
+
require "smalruby"
|
13
|
+
|
14
|
+
car1 = Character.new(costume: "car2.png", x: 0, y: 0, angle: 0)
|
15
|
+
car2 = Character.new(costume: "car3.png", x: 0, y: 415, angle: 0)
|
16
|
+
# 逃げる車
|
17
|
+
|
18
|
+
car1.on(:start) do
|
19
|
+
loop do
|
20
|
+
move(6)
|
21
|
+
if reach_wall?
|
22
|
+
turn
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
car1.on(:key_down, K_LEFT) do
|
28
|
+
rotate(-15)
|
29
|
+
end
|
30
|
+
|
31
|
+
car1.on(:key_down, K_RIGHT) do
|
32
|
+
rotate(15)
|
33
|
+
end
|
34
|
+
|
35
|
+
# 追いかける車
|
36
|
+
|
37
|
+
car2.on(:start) do
|
38
|
+
loop do
|
39
|
+
point_towards(car1)
|
40
|
+
move(3)
|
41
|
+
if hit?(car1)
|
42
|
+
say(message: "追いつきました!")
|
43
|
+
else
|
44
|
+
say(message: "")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
"""
|
@@ -5,15 +5,24 @@
|
|
5
5
|
シナリオ: トップページにアクセスしてエディタ画面を表示する
|
6
6
|
もし "トップページ" にアクセスする
|
7
7
|
|
8
|
+
ならば "ブロックタブ" が表示されていること
|
9
|
+
かつ "プログラム名の入力欄" が表示されていること
|
10
|
+
かつ "ダウンロードボタン" が表示されていること
|
11
|
+
|
12
|
+
シナリオ: エディタ画面を表示してRubyタブに切り替える
|
13
|
+
前提 "エディタ" 画面を表示する
|
14
|
+
|
15
|
+
もし "Rubyタブ" にタブを切り替える
|
16
|
+
|
8
17
|
ならば "Rubyタブ" が表示されていること
|
9
18
|
かつ "テキストエディタ" が表示されていること
|
10
19
|
かつ "プログラム名の入力欄" が表示されていること
|
11
|
-
かつ "
|
20
|
+
かつ "ダウンロードボタン" が表示されていること
|
12
21
|
かつ テキストエディタにフォーカスがあること
|
13
22
|
かつ テキストエディタの 0 行目の 0 文字目にカーソルがあること
|
14
23
|
|
15
24
|
シナリオ: プログラムを入力後にページを遷移する
|
16
|
-
前提 "
|
25
|
+
前提 "Ruby" タブを表示する
|
17
26
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
18
27
|
かつ プログラムの名前に "01.rb" を指定する
|
19
28
|
|
@@ -1,25 +1,24 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# language: ja
|
3
3
|
@javascript
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
前提 "エディタ" 画面を表示する
|
8
|
-
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
4
|
+
機能: Check - プログラムのエラーチェック
|
5
|
+
シナリオ: チェックボタンを押してプログラムにシンタックスエラーがないことをチェックできる
|
6
|
+
前提 "Ruby" タブを表示する
|
9
7
|
かつ プログラムの名前に "01.rb" を指定する
|
8
|
+
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
10
9
|
|
11
|
-
もし "
|
10
|
+
もし サブメニューの "チェックボタン" をクリックする
|
12
11
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
13
12
|
|
14
13
|
ならば "メッセージ" に "チェックしました" を含むこと
|
15
14
|
かつ "メッセージ" に "ただし、プログラムを動かすとエラーが見つかるかもしれません。" を含むこと
|
16
15
|
|
17
|
-
シナリオ:
|
18
|
-
前提 "
|
16
|
+
シナリオ: チェックボタンを押してプログラムにシンタックスエラーがあることをチェックできる
|
17
|
+
前提 "Ruby" タブを表示する
|
19
18
|
かつ プログラムの名前に "01.rb" を指定する
|
20
19
|
かつ テキストエディタに "puts Hello, World!'" を入力済みである
|
21
20
|
|
22
|
-
もし "
|
21
|
+
もし サブメニューの "チェックボタン" をクリックする
|
23
22
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
24
23
|
|
25
24
|
ならば "メッセージ" に "エラー" を含むこと
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
機能: Download - プログラムのダウンロード
|
5
|
+
シナリオ: ダウンロードボタンを押してプログラムを保存できる
|
6
|
+
前提 "Ruby" タブを表示する
|
7
|
+
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
8
|
+
かつ プログラムの名前に "01.rb" を指定する
|
9
|
+
|
10
|
+
もし "ダウンロードボタン" をクリックする
|
11
|
+
かつ JavaScriptによるリクエストが終わるまで待つ
|
12
|
+
|
13
|
+
ならば "01.rb" をダウンロードすること
|
14
|
+
かつ "メッセージ" に "ダウンロードしました" を含むこと
|
15
|
+
|
16
|
+
シナリオ: 日本語のファイル名でプログラムを保存できる
|
17
|
+
前提 "Ruby" タブを表示する
|
18
|
+
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
19
|
+
かつ プログラムの名前に "日本語.rb" を指定する
|
20
|
+
|
21
|
+
もし "ダウンロードボタン" をクリックする
|
22
|
+
かつ JavaScriptによるリクエストが終わるまで待つ
|
23
|
+
|
24
|
+
ならば "日本語.rb" をダウンロードすること
|
25
|
+
かつ "メッセージ" に "ダウンロードしました" を含むこと
|
26
|
+
|
27
|
+
シナリオ: ファイル名を入力せずにダウンロードボタンを押す
|
28
|
+
前提 "Ruby" タブを表示する
|
29
|
+
|
30
|
+
もし "ダウンロードボタン" をクリックする
|
31
|
+
|
32
|
+
ならば "1.rb" をダウンロードすること
|
33
|
+
かつ "メッセージ" に "ダウンロードしました" を含むこと
|
@@ -3,7 +3,7 @@
|
|
3
3
|
@javascript
|
4
4
|
機能: Load - プログラムのロード
|
5
5
|
シナリオ: プログラムを読み込む
|
6
|
-
前提 "
|
6
|
+
前提 "Ruby" タブを表示する
|
7
7
|
|
8
8
|
もし "files/01.rb" をロードする
|
9
9
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
@@ -15,7 +15,7 @@
|
|
15
15
|
かつ "メッセージ" に "ロードしました" を含むこと
|
16
16
|
|
17
17
|
シナリオ: プログラムを入力済み状態でプログラムを読み込む
|
18
|
-
前提 "
|
18
|
+
前提 "Ruby" タブを表示する
|
19
19
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
20
20
|
|
21
21
|
もし "files/01.rb" をロードする
|
@@ -28,7 +28,7 @@
|
|
28
28
|
かつ "メッセージ" に "ロードしました" を含むこと
|
29
29
|
|
30
30
|
シナリオ: 間違って画像を読み込もうとする
|
31
|
-
前提 "
|
31
|
+
前提 "Ruby" タブを表示する
|
32
32
|
|
33
33
|
もし "files/favicon.ico" をロードする
|
34
34
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
@@ -39,43 +39,43 @@
|
|
39
39
|
かつ "メッセージ" に "ロードしました" を含まないこと
|
40
40
|
|
41
41
|
シナリオ: プログラムを修正後にロードボタンを押す
|
42
|
-
前提 "
|
42
|
+
前提 "Ruby" タブを表示する
|
43
43
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
44
44
|
|
45
|
-
もし "ロードボタン" をクリックする
|
45
|
+
もし サブメニューの "ロードボタン" をクリックする
|
46
46
|
|
47
47
|
ならば 確認メッセージ "まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?" を表示すること
|
48
48
|
|
49
|
-
シナリオ:
|
50
|
-
前提 "
|
49
|
+
シナリオ: プログラムを修正後にダウンロードしてからロードボタンを押す
|
50
|
+
前提 "Ruby" タブを表示する
|
51
51
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
52
52
|
かつ プログラムの名前に "01.rb" を指定する
|
53
|
-
かつ "
|
53
|
+
かつ "ダウンロードボタン" をクリックする
|
54
54
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
55
55
|
かつ ダウンロードが完了するまで待つ
|
56
56
|
かつ 実際にはファイルをロードしないようにしておく
|
57
57
|
|
58
|
-
もし "ロードボタン" をクリックする
|
58
|
+
もし サブメニューの "ロードボタン" をクリックする
|
59
59
|
|
60
60
|
ならば 確認メッセージを表示しないこと
|
61
61
|
|
62
62
|
シナリオ: プログラムを修正後にプログラムをロードしてからロードボタンを押す
|
63
|
-
前提 "
|
63
|
+
前提 "Ruby" タブを表示する
|
64
64
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
65
65
|
かつ "files/01.rb" をロードする
|
66
66
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
67
67
|
かつ 実際にはファイルをロードしないようにしておく
|
68
68
|
|
69
|
-
もし "ロードボタン" をクリックする
|
69
|
+
もし サブメニューの "ロードボタン" をクリックする
|
70
70
|
|
71
71
|
ならば 確認メッセージを表示しないこと
|
72
72
|
|
73
73
|
シナリオ: プログラムを修正後に間違って画像をロードしてからロードボタンを押す
|
74
|
-
前提 "
|
74
|
+
前提 "Ruby" タブを表示する
|
75
75
|
かつ テキストエディタに "puts 'Hello, World!'" を入力済みである
|
76
76
|
かつ "files/favicon.ico" をロードする
|
77
77
|
かつ JavaScriptによるリクエストが終わるまで待つ
|
78
78
|
|
79
|
-
もし "ロードボタン" をクリックする
|
79
|
+
もし サブメニューの "ロードボタン" をクリックする
|
80
80
|
|
81
81
|
ならば 確認メッセージ "まだセーブしていないのでロードするとプログラムが消えてしまうよ!\nそれでもロードしますか?" を表示すること
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# language: ja
|
3
|
+
@javascript
|
4
|
+
@standalone
|
5
|
+
機能: Run - プログラムの実行(standaloneモード)
|
6
|
+
シナリオ: 実行前にプログラムのシンタックスエラーをチェックできる
|
7
|
+
前提 "Ruby" タブを表示する
|
8
|
+
かつ プログラムの名前に "01.rb" を指定する
|
9
|
+
かつ テキストエディタに "puts Hello, World!'" を入力済みである
|
10
|
+
|
11
|
+
もし "実行ボタン" をクリックする
|
12
|
+
かつ JavaScriptによるリクエストが終わるまで待つ
|
13
|
+
|
14
|
+
ならば "メッセージ" に "エラー" を含むこと
|
15
|
+
かつ "メッセージ" に "プログラムを実行できませんでした" を含むこと
|
16
|
+
かつ "メッセージ" に "1行、19文字: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('" を含むこと
|
17
|
+
かつ "メッセージ" に "1行: unterminated string meets end of file" を含むこと
|