raheui 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 22873318862c9ad2ef89986ad02fd62687c6d724
4
- data.tar.gz: c32e7d3a60606ed2ca12debbaffbeda690ff5d3e
3
+ metadata.gz: 6571494ffa6d0da25db0c554d808440c9a31da74
4
+ data.tar.gz: cc3cf17321e13aa782072f823e8594afb0aefec8
5
5
  SHA512:
6
- metadata.gz: 84cd518b05030d3fcd936a7d7402d9b49681f1cba372a6ee15af072256ac2e02f98450b6411c300bfe5e7c189a50b9d6d5affa27b28843042a56f7f350007c17
7
- data.tar.gz: 6f126c4c3bda1c5ad8607e063577fc14dfccc7b20f8ff2e0923c496477a125fd7834e3d43360a96aaf407c1be4d169518d7425792573e8c9949ccbe8c9479d3c
6
+ metadata.gz: c7ebda57cbc85fa2ed88bb1ece9d9f03a5e584f87d175e93854a656952df05be0cc13edaeae9554ed12d5a96c71a1833edf295f955fdc997298d984f81a0d50e
7
+ data.tar.gz: 6a8698c2de793e0b20d6e6a25dd2ff26651222b22106afccd85454b868cbb9f96c8def0781f0fc49361fe6510144100977c0560517178b55127f8eead4a70c15
data/.rubocop_todo.yml CHANGED
@@ -1,18 +1,18 @@
1
1
  # This configuration was generated by `rubocop --auto-gen-config`
2
- # on 2014-11-10 16:45:44 +0900 using RuboCop version 0.27.1.
2
+ # on 2015-07-24 16:57:26 +0900 using RuboCop version 0.32.1.
3
3
  # The point is for the user to remove these configuration records
4
4
  # one by one as the offenses are removed from the code base.
5
5
  # Note that changes in the inspected code, or installation of new
6
6
  # versions of RuboCop, may require this file to be generated again.
7
7
 
8
- # Offense count: 3
8
+ # Offense count: 2
9
9
  Metrics/AbcSize:
10
- Max: 41
10
+ Max: 37
11
11
 
12
12
  # Offense count: 1
13
13
  # Configuration parameters: CountComments.
14
14
  Metrics/ClassLength:
15
- Max: 132
15
+ Max: 136
16
16
 
17
17
  # Offense count: 1
18
18
  Metrics/CyclomaticComplexity:
data/.travis.yml CHANGED
@@ -1,19 +1,24 @@
1
1
  language: ruby
2
+ sudo: false
2
3
  rvm:
3
4
  - 1.9.3
4
5
  - 2.0.0
5
6
  - 2.1
6
7
  - 2.2
7
8
  - ruby-head
8
- - jruby-19mode
9
- - jruby-9.0.0.0.pre1
10
- - jruby-head
11
9
  - rbx-2
12
10
  matrix:
11
+ include:
12
+ - rvm: jruby-19mode
13
+ env: JRUBY_OPTS="-Xcli.debug=true --debug"
14
+ - rvm: jruby-9.0.0.0
15
+ env: JRUBY_OPTS="-Xcli.debug=true --debug"
16
+ - rvm: jruby-head
17
+ env: JRUBY_OPTS="-Xcli.debug=true --debug"
13
18
  allow_failures:
14
19
  - rvm: ruby-head
15
20
  - rvm: jruby-19mode
16
- - rvm: jruby-9.0.0.0.pre1
21
+ - rvm: jruby-9.0.0.0
17
22
  - rvm: jruby-head
18
23
  - rvm: rbx-2
19
24
  before_install:
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.3 (2015-07-27)
4
+
5
+ - Fix implementation of `Queue#push_dup`
6
+ - Add tests for undefined specifications
7
+
3
8
  ## 1.0.2 (2015-02-27)
4
9
 
5
10
  - Support JRuby
data/Gemfile CHANGED
@@ -5,5 +5,5 @@ source 'https://rubygems.org'
5
5
  gemspec
6
6
 
7
7
  group :test do
8
- gem 'coveralls', require: false
8
+ gem 'codecov', require: false
9
9
  end
data/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![Build Status](https://travis-ci.org/yous/raheui.svg?branch=master)](https://travis-ci.org/yous/raheui)
5
5
  [![Dependency Status](https://gemnasium.com/yous/raheui.svg)](https://gemnasium.com/yous/raheui)
6
6
  [![Code Climate](https://codeclimate.com/github/yous/raheui/badges/gpa.svg)](https://codeclimate.com/github/yous/raheui)
7
- [![Coverage Status](https://img.shields.io/coveralls/yous/raheui.svg)](https://coveralls.io/r/yous/raheui)
7
+ [![codecov.io](http://codecov.io/github/yous/raheui/coverage.svg?branch=master)](http://codecov.io/github/yous/raheui?branch=master)
8
8
  [![Inline docs](http://inch-ci.org/github/yous/raheui.svg?branch=master)](http://inch-ci.org/github/yous/raheui)
9
9
  [![raheui API Documentation](https://www.omniref.com/ruby/gems/raheui.png)](https://www.omniref.com/ruby/gems/raheui)
10
10
 
@@ -63,4 +63,4 @@ See [CHANGELOG.md](CHANGELOG.md).
63
63
 
64
64
  ## License
65
65
 
66
- Copyright (c) 2014 ChaYoung You. See [LICENSE.txt](LICENSE.txt) for details.
66
+ Copyright (c) 2014-2015 ChaYoung You. See [LICENSE.txt](LICENSE.txt) for details.
data/lib/raheui/port.rb CHANGED
@@ -6,6 +6,9 @@ module Raheui
6
6
  # Do nothing with push.
7
7
  def push(*_args); end
8
8
 
9
+ # Do nothing with push_dup.
10
+ def push_dup; end
11
+
9
12
  # Do nothing with pop.
10
13
  def pop; end
11
14
 
data/lib/raheui/queue.rb CHANGED
@@ -11,6 +11,11 @@ module Raheui
11
11
  @store.shift
12
12
  end
13
13
 
14
+ # Push the first element to Queue.
15
+ def push_dup
16
+ @store.unshift(@store.first) if size > 0
17
+ end
18
+
14
19
  # Swap the first two elements of Queue.
15
20
  def swap
16
21
  @store[0], @store[1] = @store[1], @store[0] if size > 1
data/lib/raheui/runner.rb CHANGED
@@ -75,7 +75,7 @@ module Raheui
75
75
  initial, medial, final = consonants
76
76
  @delta.x, @delta.y = delta(medial)
77
77
  if @selected_store.size < REQUIRED_STORE_SIZE[initial]
78
- @delta.x, @delta.y = -@delta.x, -@delta.y
78
+ turn
79
79
  else
80
80
  process(initial, final)
81
81
  end
@@ -128,7 +128,7 @@ module Raheui
128
128
  @selected_store.push(op2 >= op1 ? 1 : 0)
129
129
  when 14 # ㅊ
130
130
  op = @selected_store.pop
131
- @delta.x, @delta.y = -@delta.x, -@delta.y if op == 0
131
+ turn if op == 0
132
132
  when 16 # ㅌ
133
133
  operate(:-)
134
134
  when 17 # ㅍ
@@ -192,6 +192,14 @@ module Raheui
192
192
  @cursor.y = wrap(@cursor.y + @delta.y, @code.height)
193
193
  end
194
194
 
195
+ # Reverse the direction of the cursor.
196
+ #
197
+ # Returns nothing.
198
+ def turn
199
+ @delta.x = -@delta.x
200
+ @delta.y = -@delta.y
201
+ end
202
+
195
203
  # Wrap a number to be between 0 and max value excluding max value. If the
196
204
  # number is negative, it goes to max - 1. If the number is bigger than or
197
205
  # equal to max value, it goes to zero.
data/lib/raheui/stack.rb CHANGED
@@ -6,6 +6,11 @@ module Raheui
6
6
  # Delegates push, pop to @store.
7
7
  delegate [:push, :pop] => :@store
8
8
 
9
+ # Push the last element to Stack.
10
+ def push_dup
11
+ push(@store.last) if size > 0
12
+ end
13
+
9
14
  # Swap the last two elements of Stack.
10
15
  def swap
11
16
  @store[-1], @store[-2] = @store[-2], @store[-1] if size > 1
data/lib/raheui/store.rb CHANGED
@@ -8,7 +8,7 @@ module Raheui
8
8
  class Store
9
9
  extend Forwardable
10
10
 
11
- BASE_METHODS = [:push, :pop, :swap]
11
+ BASE_METHODS = [:push, :pop, :push_dup, :swap]
12
12
  private_constant :BASE_METHODS
13
13
 
14
14
  # Delegates size to @store.
@@ -20,11 +20,6 @@ module Raheui
20
20
  @store = []
21
21
  end
22
22
 
23
- # Push the last element to Store.
24
- def push_dup
25
- push(@store.last) if size > 0
26
- end
27
-
28
23
  private
29
24
 
30
25
  # Check whether base methods are implemented.
@@ -3,6 +3,6 @@
3
3
  module Raheui
4
4
  # Holds the Raheui version information.
5
5
  module Version
6
- STRING = '1.0.2'
6
+ STRING = '1.0.3'
7
7
  end
8
8
  end
data/raheui.gemspec CHANGED
@@ -7,7 +7,7 @@ require 'raheui/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'raheui'
9
9
  spec.version = Raheui::Version::STRING
10
- spec.authors = ['ChaYoung You']
10
+ spec.authors = ['Chayoung You']
11
11
  spec.email = ['yousbe@gmail.com']
12
12
  spec.summary = 'Aheui interpreter in Ruby.'
13
13
  spec.description = 'Aheui interpreter in Ruby.'
@@ -15,13 +15,13 @@ Gem::Specification.new do |spec|
15
15
  spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0")
18
- spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
19
- spec.test_files = spec.files.grep(/^(test|spec|features)\//)
18
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
20
20
  spec.require_paths = ['lib']
21
21
 
22
22
  spec.add_development_dependency 'bundler', '~> 1.6'
23
23
  spec.add_development_dependency 'rake', '~> 10.0'
24
24
  spec.add_development_dependency 'rspec', '~> 3.0'
25
- spec.add_development_dependency 'rubocop', '~> 0.29.0'
25
+ spec.add_development_dependency 'rubocop', '~> 0.32.0'
26
26
  spec.add_development_dependency 'simplecov', '~> 0.9'
27
27
  end
@@ -81,18 +81,27 @@ describe Raheui::Queue do
81
81
 
82
82
  before(:example) { subject.push(element) }
83
83
 
84
- it 'pushes the last element' do
84
+ it 'pushes the first element' do
85
85
  subject.push_dup
86
86
  expect(subject.pop).to be(element)
87
87
  expect(subject.pop).to be(element)
88
88
  end
89
+ end
89
90
 
90
- it 'pushes last pushed element' do
91
- subject.push(42)
91
+ context 'with more than one element' do
92
+ let(:one) { rand(10) }
93
+ let(:two) { rand(10...20) }
94
+
95
+ before(:example) do
96
+ subject.push(one)
97
+ subject.push(two)
98
+ end
99
+
100
+ it 'pushes first pushed element' do
92
101
  subject.push_dup
93
- expect(subject.pop).to be(element)
94
- expect(subject.pop).to be(42)
95
- expect(subject.pop).to be(42)
102
+ expect(subject.pop).to be(one)
103
+ expect(subject.pop).to be(one)
104
+ expect(subject.pop).to be(two)
96
105
  end
97
106
  end
98
107
  end
@@ -27,10 +27,10 @@ shared_examples 'a runner' do
27
27
  end
28
28
  end
29
29
 
30
- describe Raheui::Runner, 'with bieup.aheui' do
31
- # rubocop:disable Metrics/LineLength
32
- let(:source) { <<-END }
33
-
30
+ describe 'standard specifications' do
31
+ describe Raheui::Runner, 'with bieup.aheui' do
32
+ # rubocop:disable Metrics/LineLength
33
+ let(:source) { <<-END }
34
34
  박반받발밤밥밧밪밫밬밭붚
35
35
  뭉멍멍멍멍멍멍멍멍멍멍멍
36
36
  밖밗밙밚밝밞밟밠밡밢밣밦붔
@@ -40,19 +40,19 @@ describe Raheui::Runner, 'with bieup.aheui' do
40
40
 
41
41
 
42
42
  ㅂ에 ㅇ받침이 있으면 입력받은 숫자를, ㅎ받침이 있으면 입력받은 문자의 유니코드 코드값을 저장공간에 집어넣습니다. 단, ㅂ의 경우 나머지 받침이 있으면 그 받침을 구성하는 선의 수에 따른 값을 집어넣습니다. 받침이 없으면 0을 집어넣습니다.
43
- END
44
- # rubocop:enable Metrics/LineLength
43
+ END
44
+ # rubocop:enable Metrics/LineLength
45
45
 
46
- let(:inputs) { %w(3 밯) }
47
- let(:result) { '2235442343444455799799864348175' }
48
- let(:exit_code) { 0 }
46
+ let(:inputs) { %w(3 밯) }
47
+ let(:result) { '4434324453224689979975544481753' }
48
+ let(:exit_code) { 0 }
49
49
 
50
- it_behaves_like 'a runner'
51
- end
50
+ it_behaves_like 'a runner'
51
+ end
52
52
 
53
- describe Raheui::Runner, 'with border.aheui' do
54
- # rubocop:disable Metrics/LineLength
55
- let(:source) { <<-END }
53
+ describe Raheui::Runner, 'with border.aheui' do
54
+ # rubocop:disable Metrics/LineLength
55
+ let(:source) { <<-END }
56
56
  볻 망볿
57
57
  ㅇ ㅇ희
58
58
  멍 붒
@@ -60,251 +60,257 @@ describe Raheui::Runner, 'with border.aheui' do
60
60
 
61
61
 
62
62
  표준: 코드 공간의 한 쪽 끝에 다다르면 커서는 반대편 끝으로 이동합니다. 이는 Funge-98의 wrapping algorithm과 동일합니다.
63
- END
64
- # rubocop:enable Metrics/LineLength
63
+ END
64
+ # rubocop:enable Metrics/LineLength
65
65
 
66
- let(:result) { '369' }
67
- let(:exit_code) { 0 }
66
+ let(:result) { '369' }
67
+ let(:exit_code) { 0 }
68
68
 
69
- it_behaves_like 'a runner'
70
- end
69
+ it_behaves_like 'a runner'
70
+ end
71
71
 
72
- describe Raheui::Runner, 'with chieut.aheui' do
73
- # rubocop:disable Metrics/LineLength
74
- let(:source) { <<-END }
72
+ describe Raheui::Runner, 'with chieut.aheui' do
73
+ let(:source) { <<-END }
75
74
  아ㅇㅇ부
76
75
  희멍번처붇
77
76
  ㅇㅇㅇ분멍
78
77
  희멍번차붇
79
78
  ㅇㅇㅇ희멍
80
79
  ㅊ은 조건 명령으로 저장공간에서 값 하나를 뽑아내서 그 값이 0이 아니면 홀소리의 방향대로, 0이면 그 반대 방향대로 갑니다.
81
- END
82
- # rubocop:enable Metrics/LineLength
80
+ END
83
81
 
84
- let(:result) { '33' }
85
- let(:exit_code) { 0 }
82
+ let(:result) { '33' }
83
+ let(:exit_code) { 0 }
86
84
 
87
- it_behaves_like 'a runner'
88
- end
85
+ it_behaves_like 'a runner'
86
+ end
89
87
 
90
- describe Raheui::Runner, 'with default-storage.aheui' do
91
- # rubocop:disable Metrics/LineLength
92
- let(:source) { <<-END }
88
+ describe Raheui::Runner, 'with default-storage.aheui' do
89
+ let(:source) { <<-END }
93
90
  밞산바삳바사망희
94
91
 
95
92
  처음에 선택되어 있는 스택은 (받침 없음) 스택입니다. (“사” 와 같은 명령으로 선택할 수 있습니다.)
96
- END
97
- # rubocop:enable Metrics/LineLength
93
+ END
98
94
 
99
- let(:result) { '9' }
100
- let(:exit_code) { 0 }
95
+ let(:result) { '9' }
96
+ let(:exit_code) { 0 }
101
97
 
102
- it_behaves_like 'a runner'
103
- end
98
+ it_behaves_like 'a runner'
99
+ end
104
100
 
105
- describe Raheui::Runner, 'with digeut.aheui' do
106
- # rubocop:disable Metrics/LineLength
107
- let(:source) { <<-END }
101
+ describe Raheui::Runner, 'with digeut.aheui' do
102
+ let(:source) { <<-END }
108
103
  반받다망희
109
104
 
110
105
  ㄷ은 덧셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 더한 값을 저장공간에 집어넣습니다.
111
- END
112
- # rubocop:enable Metrics/LineLength
106
+ END
113
107
 
114
- let(:result) { '5' }
115
- let(:exit_code) { 0 }
108
+ let(:result) { '5' }
109
+ let(:exit_code) { 0 }
116
110
 
117
- it_behaves_like 'a runner'
118
- end
111
+ it_behaves_like 'a runner'
112
+ end
119
113
 
120
- describe Raheui::Runner, 'with exhausted-storage.aheui' do
121
- # rubocop:disable Metrics/LineLength
122
- let(:source) { <<-END }
114
+ describe Raheui::Runner, 'with exhausted-storage.aheui' do
115
+ # rubocop:disable Metrics/LineLength
116
+ let(:source) { <<-END }
123
117
  아ㅇㅇ우
124
118
  희멍벋망반망희
125
119
  중복 명령을 포함한 모든 뽑아내기를 쓰는 명령에서 저장 공간에 값이 모자랄 경우, 커서는 그 명령을 실행하지 않고 커서가 있는 글자의 홀소리의 반대방향으로 움직입니다.
126
- END
127
- # rubocop:enable Metrics/LineLength
120
+ END
121
+ # rubocop:enable Metrics/LineLength
128
122
 
129
- let(:result) { '3' }
130
- let(:exit_code) { 0 }
123
+ let(:result) { '3' }
124
+ let(:exit_code) { 0 }
131
125
 
132
- it_behaves_like 'a runner'
133
- end
126
+ it_behaves_like 'a runner'
127
+ end
134
128
 
135
- describe Raheui::Runner, 'with exitcode.aheui' do
136
- # rubocop:disable Metrics/LineLength
137
- let(:source) { <<-END }
129
+ describe Raheui::Runner, 'with exitcode.aheui' do
130
+ let(:source) { <<-END }
138
131
  반월회
139
132
 
140
133
  ㅎ은 끝냄 명령으로 커서의 실행을 끝냅니다. 이 때 스택에서 맨 위 값을 뽑아서 운영체제에 돌려 줍니다.
141
- END
142
- # rubocop:enable Metrics/LineLength
134
+ END
143
135
 
144
- let(:result) { '' }
145
- let(:exit_code) { 2 }
136
+ let(:result) { '' }
137
+ let(:exit_code) { 2 }
146
138
 
147
- it_behaves_like 'a runner'
148
- end
139
+ it_behaves_like 'a runner'
140
+ end
149
141
 
150
- describe Raheui::Runner, 'with ieunghiheuit.aheui' do
151
- # rubocop:disable Metrics/LineLength
152
- let(:source) { <<-END }
142
+ describe Raheui::Runner, 'with ieunghiheuit.aheui' do
143
+ let(:source) { <<-END }
153
144
  아악안앋압알앗았앜앇헐
154
145
 
155
146
  ㅇ은 없음 명령으로 아무 일도 하지 않습니다. * ㅎ은 끝냄 명령으로 커서의 실행을 끝냅니다.
156
147
  사용되지 않는 받침은 모두 무시됩니다.
157
- END
158
- # rubocop:enable Metrics/LineLength
148
+ END
159
149
 
160
- let(:result) { '' }
161
- let(:exit_code) { 0 }
150
+ let(:result) { '' }
151
+ let(:exit_code) { 0 }
162
152
 
163
- it_behaves_like 'a runner'
164
- end
153
+ it_behaves_like 'a runner'
154
+ end
165
155
 
166
- describe Raheui::Runner, 'with jieut.aheui' do
167
- # rubocop:disable Metrics/LineLength
168
- let(:source) { <<-END }
156
+ describe Raheui::Runner, 'with jieut.aheui' do
157
+ # rubocop:disable Metrics/LineLength
158
+ let(:source) { <<-END }
169
159
  반반자망받반자망반받자망희
170
160
 
171
161
  ㅈ은 비교 명령으로 저장공간에서 값 두 개를 뽑아 내서 비교합니다. 나중에 뽑아낸 값이 더 크거나 같으면 1을, 아니면 0을 지금 저장공간에 집어넣습니다.
172
- END
173
- # rubocop:enable Metrics/LineLength
162
+ END
163
+ # rubocop:enable Metrics/LineLength
174
164
 
175
- let(:result) { '110' }
176
- let(:exit_code) { 0 }
165
+ let(:result) { '110' }
166
+ let(:exit_code) { 0 }
177
167
 
178
- it_behaves_like 'a runner'
179
- end
168
+ it_behaves_like 'a runner'
169
+ end
170
+
171
+ describe Raheui::Runner, 'with loop.aheui' do
172
+ let(:source) { <<-END }
173
+ 밦밦따빠뚜
174
+ 뿌뚜뻐뚜뻐
175
+ 따ㅇㅇㅇ우
176
+ ㅇㅇ아ㅇ분
177
+ ㅇㅇ초뻐터
178
+ ㅇㅇ망희
179
+ END
180
180
 
181
- describe Raheui::Runner, 'with mieum.aheui' do
182
- # rubocop:disable Metrics/LineLength
183
- let(:source) { <<-END }
181
+ let(:result) { '0' }
182
+ let(:exit_code) { 0 }
183
+
184
+ it_behaves_like 'a runner'
185
+ end
186
+
187
+ describe Raheui::Runner, 'with mieum.aheui' do
188
+ # rubocop:disable Metrics/LineLength
189
+ let(:source) { <<-END }
184
190
  바반받밤발밦밠밣밞망만맘말망맋맠맟망희
185
191
 
186
192
  ㅁ에 ㅇ받침이 있으면 저장공간에서 뽑아낸 값을 숫자로, ㅎ받침이 있으면 그 값에 해당하는 유니코드 문자로 출력합니다. 나머지 받침은 뽑아낸 값을 그냥 버립니다.
187
- END
188
- # rubocop:enable Metrics/LineLength
193
+ END
194
+ # rubocop:enable Metrics/LineLength
189
195
 
190
- let(:result) { '950' }
191
- let(:exit_code) { 0 }
196
+ let(:result) { '950' }
197
+ let(:exit_code) { 0 }
192
198
 
193
- it_behaves_like 'a runner'
194
- end
199
+ it_behaves_like 'a runner'
200
+ end
195
201
 
196
- describe Raheui::Runner, 'with nieun.aheui' do
197
- # rubocop:disable Metrics/LineLength
198
- let(:source) { <<-END }
202
+ describe Raheui::Runner, 'with nieun.aheui' do
203
+ let(:source) { <<-END }
199
204
  밟받나망희
200
205
 
201
206
  ㄴ은 나눗셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 값을 저장공간에 집어넣습니다.
202
- END
203
- # rubocop:enable Metrics/LineLength
207
+ END
204
208
 
205
- let(:result) { '3' }
206
- let(:exit_code) { 0 }
209
+ let(:result) { '3' }
210
+ let(:exit_code) { 0 }
207
211
 
208
- it_behaves_like 'a runner'
209
- end
212
+ it_behaves_like 'a runner'
213
+ end
210
214
 
211
- describe Raheui::Runner, 'with pieup.aheui' do
212
- # rubocop:disable Metrics/LineLength
213
- let(:source) { <<-END }
215
+ describe Raheui::Runner, 'with pieup.aheui' do
216
+ let(:source) { <<-END }
214
217
  바밟밟땅밝밝땅팡망망우
215
218
  숭ㅇㅇㅇㅇㅇㅇㅇㅇㅇ어
216
219
  밟밟밝밝땅땅바팡망망희
217
220
 
218
221
  ㅍ은 바꿔치기 명령입니다. 지금 저장공간이 스택이라면 맨 위 값과 그 바로 아래 값을, 큐라면 맨 앞의 값과 그 바로 뒤 값을 바꿉니다.
219
- END
220
- # rubocop:enable Metrics/LineLength
222
+ END
221
223
 
222
- let(:result) { '81494981' }
223
- let(:exit_code) { 0 }
224
+ let(:result) { '81494981' }
225
+ let(:exit_code) { 0 }
224
226
 
225
- it_behaves_like 'a runner'
226
- end
227
+ it_behaves_like 'a runner'
228
+ end
227
229
 
228
- describe Raheui::Runner, 'with print.aheui' do
229
- # rubocop:disable Metrics/LineLength
230
- let(:source) { <<-END }
230
+ describe Raheui::Runner, 'with print.aheui' do
231
+ let(:source) { <<-END }
231
232
  밞밞반다따반타뭉
232
233
  ㅇㅇㅇㅇㅇㅇㅇ밞밞반다따반타맣희
233
234
 
234
235
  ㅁ에 ㅇ받침이 있으면 저장공간에서 뽑아낸 값을 숫자로, ㅎ받침이 있으면 그 값에 해당하는 유니코드 문자로 출력합니다.
235
- END
236
- # rubocop:enable Metrics/LineLength
236
+ END
237
237
 
238
- let(:result) { '97a' }
239
- let(:exit_code) { 0 }
238
+ let(:result) { '97a' }
239
+ let(:exit_code) { 0 }
240
240
 
241
- it_behaves_like 'a runner'
242
- end
241
+ it_behaves_like 'a runner'
242
+ end
243
+
244
+ describe Raheui::Runner, 'with queue.aheui' do
245
+ let(:source) { <<-END }
246
+ 상반받뱔우망이
247
+ 뭉뻐벋번성
248
+ 망망희
249
+ END
243
250
 
244
- describe Raheui::Runner, 'with rieul.aheui' do
245
- # rubocop:disable Metrics/LineLength
246
- let(:source) { <<-END }
251
+ let(:result) { '235223' }
252
+ let(:exit_code) { 0 }
253
+
254
+ it_behaves_like 'a runner'
255
+ end
256
+
257
+ describe Raheui::Runner, 'with rieul.aheui' do
258
+ let(:source) { <<-END }
247
259
  밟발라망희
248
260
 
249
261
  ㄹ은 나머지 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 나눈 나머지를 저장공간에 집어넣습니다.
250
- END
251
- # rubocop:enable Metrics/LineLength
262
+ END
252
263
 
253
- let(:result) { '4' }
254
- let(:exit_code) { 0 }
264
+ let(:result) { '4' }
265
+ let(:exit_code) { 0 }
255
266
 
256
- it_behaves_like 'a runner'
257
- end
267
+ it_behaves_like 'a runner'
268
+ end
258
269
 
259
- describe Raheui::Runner, 'with shebang.aheui' do
260
- # rubocop:disable Metrics/LineLength
261
- let(:source) { <<-END }
270
+ describe Raheui::Runner, 'with shebang.aheui' do
271
+ # rubocop:disable Metrics/LineLength
272
+ let(:source) { <<-END }
262
273
  #!/usr/bin/env aheui
263
274
  반망희
264
275
 
265
276
  표준: 커서는 코드 공간의 맨 첫 줄 맨 첫번째 칸에서 시작합니다. 맨 처음에 홀소리가 없을 경우 커서는 기본값으로 아랫쪽으로 이동하는데, 이는 #!과 호환시키기 위한 것으로, 기본 방향이 오른쪽인 funge와는 다른 점입니다.
266
- END
267
- # rubocop:enable Metrics/LineLength
277
+ END
278
+ # rubocop:enable Metrics/LineLength
268
279
 
269
- let(:result) { '2' }
270
- let(:exit_code) { 0 }
280
+ let(:result) { '2' }
281
+ let(:exit_code) { 0 }
271
282
 
272
- it_behaves_like 'a runner'
273
- end
283
+ it_behaves_like 'a runner'
284
+ end
274
285
 
275
- describe Raheui::Runner, 'with ssangbieup.aheui' do
276
- # rubocop:disable Metrics/LineLength
277
- let(:source) { <<-END }
286
+ describe Raheui::Runner, 'with ssangbieup.aheui' do
287
+ let(:source) { <<-END }
278
288
  밟밟땅빵망망희
279
289
 
280
290
  ㅃ은 중복 명령입니다. 지금 저장공간이 스택이라면 맨 위의 값을 그 값 위에 하나 더 집어넣고, 큐라면 맨 앞의 값을 앞에 하나 더 덧붙입니다.
281
- END
282
- # rubocop:enable Metrics/LineLength
291
+ END
283
292
 
284
- let(:result) { '8181' }
285
- let(:exit_code) { 0 }
293
+ let(:result) { '8181' }
294
+ let(:exit_code) { 0 }
286
295
 
287
- it_behaves_like 'a runner'
288
- end
296
+ it_behaves_like 'a runner'
297
+ end
289
298
 
290
- describe Raheui::Runner, 'with ssangdigeut.aheui' do
291
- # rubocop:disable Metrics/LineLength
292
- let(:source) { <<-END }
299
+ describe Raheui::Runner, 'with ssangdigeut.aheui' do
300
+ let(:source) { <<-END }
293
301
  발밞따망희
294
302
 
295
303
  ㄸ은 곱셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 둘을 곱한 값을 저장공간에 집어넣습니다.
296
- END
297
- # rubocop:enable Metrics/LineLength
304
+ END
298
305
 
299
- let(:result) { '45' }
300
- let(:exit_code) { 0 }
306
+ let(:result) { '45' }
307
+ let(:exit_code) { 0 }
301
308
 
302
- it_behaves_like 'a runner'
303
- end
309
+ it_behaves_like 'a runner'
310
+ end
304
311
 
305
- describe Raheui::Runner, 'with ssangsiot.aheui' do
306
- # rubocop:disable Metrics/LineLength
307
- let(:source) { <<-END }
312
+ describe Raheui::Runner, 'with ssangsiot.aheui' do
313
+ let(:source) { <<-END }
308
314
  아바싹반싼받싿우
309
315
  우멍석멍선멍섣어
310
316
  아바쌀반쌈받쌉우
@@ -325,18 +331,17 @@ describe Raheui::Runner, 'with ssangsiot.aheui' do
325
331
  희멍섮멍섰멍서어
326
332
 
327
333
  ㅆ은 이동 명령으로 저장공간에서 값 하나를 뽑아내서 받침이 나타내는 저장공간에 그 값을 집어 넣습니다.
328
- END
329
- # rubocop:enable Metrics/LineLength
334
+ END
330
335
 
331
- let(:result) { '320320320320320320320320320' }
332
- let(:exit_code) { 0 }
336
+ let(:result) { '320320320320320320320320320' }
337
+ let(:exit_code) { 0 }
333
338
 
334
- it_behaves_like 'a runner'
335
- end
339
+ it_behaves_like 'a runner'
340
+ end
336
341
 
337
- describe Raheui::Runner, 'with storage.aheui' do
338
- # rubocop:disable Metrics/LineLength
339
- let(:source) { <<-END }
342
+ describe Raheui::Runner, 'with storage.aheui' do
343
+ # rubocop:disable Metrics/LineLength
344
+ let(:source) { <<-END }
340
345
  바반받뭉
341
346
  우석멍멍
342
347
  바반받뭉
@@ -369,64 +374,65 @@ describe Raheui::Runner, 'with storage.aheui' do
369
374
  아희에서 쓰이는 저장 공간은 여러 개가 있습니다. 대부분이 스택이고, 큐가 하나 있습니다.
370
375
  ㅁ은 뽑기 명령입니다. 지금 저장공간이 스택이라면 맨 위의 값, 큐라면 맨 앞의 값을 뽑아냅니다.(pop) 통로라면 거기서 값을 하나 뽑아옵니다. ㅁ 명령에는 받침이 올 수 있는데, 이에 대한 설명은 아래에 있습니다.
371
376
  ㅁ에 ㅇ받침이 있으면 저장공간에서 뽑아낸 값을 숫자로, ㅎ받침이 있으면 그 값에 해당하는 유니코드 문자로 출력합니다.
372
- END
373
- # rubocop:enable Metrics/LineLength
377
+ END
378
+ # rubocop:enable Metrics/LineLength
374
379
 
375
- let(:result) { '320320320320320320320320023320320320320320' }
376
- let(:exit_code) { 0 }
380
+ let(:result) { '320320320320320320320320023320320320320320' }
381
+ let(:exit_code) { 0 }
377
382
 
378
- it_behaves_like 'a runner'
379
- end
383
+ it_behaves_like 'a runner'
384
+ end
380
385
 
381
- describe Raheui::Runner, 'with syllable.aheui' do
382
- # rubocop:disable Metrics/LineLength
383
- let(:source) { <<-END }
386
+ describe Raheui::Runner, 'with syllable.aheui' do
387
+ # rubocop:disable Metrics/LineLength
388
+ let(:source) { <<-END }
384
389
  ㅏ희ㅣㅊㅓ
385
390
  뱓ㅗㅈㅊ몽
386
391
  ㅂㅁㅎㅣ헥
387
392
 
388
393
  코드는 한글로만 이루어지는데, 여기서 한글은 유니코드 U+AC00에서 U+D7A3까지의 범위에 있는 글자(hangul syllable 영역)를 말합니다. 그 밖의 글자나 코드에서 지정하지 않은 나머지 공간은 모두 빈 칸으로 처리되어 커서가 이동하는 방향에 아무 영향을 주지 않습니다.
389
- END
390
- # rubocop:enable Metrics/LineLength
394
+ END
395
+ # rubocop:enable Metrics/LineLength
391
396
 
392
- let(:result) { '3' }
393
- let(:exit_code) { 0 }
397
+ let(:result) { '3' }
398
+ let(:exit_code) { 0 }
394
399
 
395
- it_behaves_like 'a runner'
396
- end
400
+ it_behaves_like 'a runner'
401
+ end
397
402
 
398
- describe Raheui::Runner, 'with tieut.aheui' do
399
- # rubocop:disable Metrics/LineLength
400
- let(:source) { <<-END }
403
+ describe Raheui::Runner, 'with tieut.aheui' do
404
+ let(:source) { <<-END }
401
405
  받반타망희
402
406
 
403
407
  ㅌ은 뺄셈 명령으로 저장공간에서 두 값을 뽑아낸 다음 나중 값에서 먼저 값을 뺀 값을 저장공간에 집어넣습니다.
404
- END
405
- # rubocop:enable Metrics/LineLength
408
+ END
406
409
 
407
- let(:result) { '1' }
408
- let(:exit_code) { 0 }
410
+ let(:result) { '1' }
411
+ let(:exit_code) { 0 }
409
412
 
410
- it_behaves_like 'a runner'
411
- end
413
+ it_behaves_like 'a runner'
414
+ end
412
415
 
413
- describe Raheui::Runner, 'with vowel-2step.aheui' do
414
- let(:source) { <<-END }
415
- 뷷우우우희우명
416
- 아아아아아아아
417
- 먕오뱞오먕오뵯
416
+ describe Raheui::Runner, 'with vowel-2step.aheui' do
417
+ # rubocop:disable Metrics/LineLength
418
+ let(:source) { <<-END }
419
+ 뷷우희어밍우여
420
+ 아아아아아아아반받망희
421
+ 먕오뱞오뱗오뵬
418
422
 
419
423
  ㅑ, ㅕ, ㅛ, ㅠ - 커서를 각각 오른쪽, 왼쪽, 위, 아래로 두 칸 옮깁니다.
420
- END
424
+ 중복 명령을 포함한 모든 뽑아내기를 쓰는 명령에서 저장 공간에 값이 모자랄 경우, 커서는 그 명령을 실행하지 않고 커서가 있는 글자의 홀소리의 반대방향으로 움직입니다.
425
+ END
426
+ # rubocop:enable Metrics/LineLength
421
427
 
422
- let(:result) { '369' }
423
- let(:exit_code) { 0 }
428
+ let(:result) { '3596' }
429
+ let(:exit_code) { 0 }
424
430
 
425
- it_behaves_like 'a runner'
426
- end
431
+ it_behaves_like 'a runner'
432
+ end
427
433
 
428
- describe Raheui::Runner, 'with vowel-advanced.aheui' do
429
- let(:source) { <<-END }
434
+ describe Raheui::Runner, 'with vowel-advanced.aheui' do
435
+ let(:source) { <<-END }
430
436
  반븓븝불
431
437
  우멍벎망이밟망희
432
438
 
@@ -440,31 +446,30 @@ describe Raheui::Runner, 'with vowel-advanced.aheui' do
440
446
  ㅡ - 커서가 가로로 왔으면 그 방향대로, 세로로 왔으면 전에 있던 자리로 옮깁니다.
441
447
  ㅣ - 커서가 세로로 왔으면 그 방향대로, 가로로 왔으면 전에 있던 자리로 옮깁니다.
442
448
  ㅢ - 커서를 전에 있던 자리로 옮깁니다.
443
- END
449
+ END
444
450
 
445
- let(:result) { '543295432954329' }
446
- let(:exit_code) { 0 }
451
+ let(:result) { '543295432954329' }
452
+ let(:exit_code) { 0 }
447
453
 
448
- it_behaves_like 'a runner'
449
- end
454
+ it_behaves_like 'a runner'
455
+ end
450
456
 
451
- describe Raheui::Runner, 'with vowel-basic.aheui' do
452
- let(:source) { <<-END }
457
+ describe Raheui::Runner, 'with vowel-basic.aheui' do
458
+ let(:source) { <<-END }
453
459
  붇희희멍
454
460
  망밦망볿
455
461
 
456
462
  ㅏ, ㅓ, ㅗ, ㅜ - 커서를 각각 오른쪽, 왼쪽, 위, 아래로 한 칸 옮깁니다.
457
- END
463
+ END
458
464
 
459
- let(:result) { '369' }
460
- let(:exit_code) { 0 }
465
+ let(:result) { '369' }
466
+ let(:exit_code) { 0 }
461
467
 
462
- it_behaves_like 'a runner'
463
- end
468
+ it_behaves_like 'a runner'
469
+ end
464
470
 
465
- describe Raheui::Runner, 'with vowel-useless.aheui' do
466
- # rubocop:disable Metrics/LineLength
467
- let(:source) { <<-END }
471
+ describe Raheui::Runner, 'with vowel-useless.aheui' do
472
+ let(:source) { <<-END }
468
473
  우아앙배벤뱯볩뷜뫙뫵뮝뭥뮁우
469
474
  배맹희맹멩먱몡뮝봘봽붣붠붸어
470
475
  벤멩
@@ -479,18 +484,16 @@ describe Raheui::Runner, 'with vowel-useless.aheui' do
479
484
  아오
480
485
 
481
486
  기능 없음: ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ (커서가 이동하는 방향은 변하지 않습니다.)
482
- END
483
- # rubocop:enable Metrics/LineLength
487
+ END
484
488
 
485
- let(:result) { '54320543205432054320' }
486
- let(:exit_code) { 0 }
489
+ let(:result) { '54320543205432054320' }
490
+ let(:exit_code) { 0 }
487
491
 
488
- it_behaves_like 'a runner'
489
- end
492
+ it_behaves_like 'a runner'
493
+ end
490
494
 
491
- describe Raheui::Runner, 'with vowel-useless2.aheui' do
492
- # rubocop:disable Metrics/LineLength
493
- let(:source) { <<-END }
495
+ describe Raheui::Runner, 'with vowel-useless2.aheui' do
496
+ let(:source) { <<-END }
494
497
  와아앙배벤뱯볩뷜뫙뫵뮝뭥뮁우
495
498
  배맹희맹멩먱몡뮝봘봽붣붠붸어
496
499
  벤멩
@@ -505,11 +508,105 @@ describe Raheui::Runner, 'with vowel-useless2.aheui' do
505
508
  아오
506
509
 
507
510
  기능 없음: ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ (커서가 이동하는 방향은 변하지 않습니다.)
508
- END
509
- # rubocop:enable Metrics/LineLength
511
+ END
512
+
513
+ let(:result) { '54320543205432054320' }
514
+ let(:exit_code) { 0 }
515
+
516
+ it_behaves_like 'a runner'
517
+ end
518
+ end
519
+
520
+ describe 'undefined specifications' do
521
+ describe Raheui::Runner, 'with 2steps.aheui' do
522
+ # rubocop:disable Metrics/LineLength
523
+ let(:source) { <<-END }
524
+ 야ㅇ븐븐븓븓야이멍희
525
+
526
+ ㅡ - 커서가 가로로 왔으면 그 방향대로, 세로로 왔으면 전에 있던 자리로 옮깁니다.
527
+ 기능 없음: ㅐ ㅔ ㅒ ㅖ ㅘ ㅙ ㅚ ㅝ ㅞ ㅟ (커서가 이동하는 방향은 변하지 않습니다.)
528
+
529
+ 해설: 2칸 이동 후 다음 이동에 관해 방향은 정의되어 있지만 이동 간격을 유지하는지는 정의되어 있지 않습니다. 유지하는 경우 32가 나옵니다. 유지하지 않는 경우 무슨 동작을 할 지 짐작도 안되니 유지하는 편을 권장합니다.
530
+ END
531
+ # rubocop:enable Metrics/LineLength
532
+
533
+ let(:result) { '32' }
534
+ let(:exit_code) { 0 }
535
+
536
+ it_behaves_like 'a runner'
537
+ end
538
+
539
+ xdescribe Raheui::Runner, 'with bieup.aheui' do
540
+ let(:source) { <<-END }
541
+ 밯이
542
+
543
+ ㅂ도 마찬가지로 ㅇ받침이 있으면 입력받은 숫자를, ㅎ받침이 있으면 입력받은 문자의 유니코드 코드값을 저장공간에 집어넣습니다.
510
544
 
511
- let(:result) { '54320543205432054320' }
512
- let(:exit_code) { 0 }
545
+ 해설: EOF를 만나거나 ㅇ 받침에 숫자로 해석할 수 없는 값이 들어올 경우의 동작이 정의되지 않았습니다. 권장 구현은 없습니다.
546
+ END
547
+ end
548
+
549
+ xdescribe Raheui::Runner, 'with boundary.aheui' do
550
+ # rubocop:disable Metrics/LineLength
551
+ let(:source) { <<-END }
552
+ 아아아아아우
553
+ 바야희망희야
554
+
555
+ 코드 공간의 한 쪽 끝에 다다르면 커서는 반대편 끝으로 이동합니다. 이는 Funge-98의 wrapping algorithm과 동일합니다.
556
+
557
+ 해설: Funge-98에는 2칸씩 이동하는 경우가 없으므로 줄끝에 '야'가 온 경우 '바'로 이동할지 '야'로 이동할지 불명확합니다. 2칸 이동을 하나의 이동으로 볼 경우 한 쪽 끝에 다다랐으므로 '바'로 이동합니다. 2칸 이동을 2개의 1칸 이동으로 볼 경우 한 쪽 끝에 다다라 '바'로 이동 후 한번 더 이동해 '야'로 이동합니다. 어느 쪽도 합리적인 해석이고 불이익을 판단하기 어려우므로 권장 구현은 없습니다.
558
+ END
559
+ # rubocop:enable Metrics/LineLength
560
+ end
561
+
562
+ describe Raheui::Runner, 'with chieut.aheui' do
563
+ let(:source) { <<-END }
564
+ 반쵕반망희
565
+
566
+ ㅊ은 조건 명령으로 저장공간에서 값 하나를 뽑아내서 그 값이 0이 아니면 홀소리의 방향대로, 0이면 그 반대 방향대로 갑니다.
567
+
568
+ 해설: 방향 없는 홀소리가 나왔을 때의 동작이 정의되지 않았습니다. 경로 유지 외에는 추측 가능한 동작이 없으므로 경로 유지를 권장합니다.
569
+ END
570
+
571
+ let(:result) { '2' }
572
+ let(:exit_code) { 0 }
573
+
574
+ it_behaves_like 'a runner'
575
+ end
513
576
 
514
- it_behaves_like 'a runner'
577
+ describe Raheui::Runner, 'with emptyswap.aheui' do
578
+ # rubocop:disable Metrics/LineLength
579
+ let(:source) { <<-END }
580
+ 뱐희파반망희
581
+
582
+ 중복 명령을 포함한 모든 뽑아내기를 쓰는 명령에서 저장 공간에 값이 모자랄 경우, 커서는 그 명령을 실행하지 않고 커서가 있는 글자의 홀소리의 반대방향으로 움직입니다.
583
+ ㅍ은 바꿔치기 명령입니다. 지금 저장공간이 스택이라면 맨 위 값과 그 바로 아래 값을, 큐라면 맨 앞의 값과 그 바로 뒤 값을 바꿉니다. (통로라면?)
584
+
585
+ 해설: 중복을 별도로 명시하고 있다는 점에서 큐에서 뽑기와 동작이 다른 경우 뽑기 동작으로 취급하지 않음을 알 수 있습니다. 큐의 바꿔치기도 역시 뽑기로는 구현이 불가능하므로 뽑아내기가 들어가는 명령이 아닌 것으로 추측되지만, 그 경우 동작은 정의되지 않으므로 반대로 가는 편을 권장합니다.
586
+ END
587
+ # rubocop:enable Metrics/LineLength
588
+
589
+ let(:result) { '' }
590
+ let(:exit_code) { 2 }
591
+
592
+ it_behaves_like 'a runner'
593
+ end
594
+
595
+ describe Raheui::Runner, 'with hieut-pop.aheui' do
596
+ # rubocop:disable Metrics/LineLength
597
+ let(:source) { <<-END }
598
+ 하멍번버
599
+
600
+ - 조건1: ㅎ은 끝냄 명령으로 커서의 실행을 끝냅니다. 이 때 스택에서 맨 위 값을 뽑아서 운영체제에 돌려 줍니다.
601
+ - 조건2: 중복 명령을 포함한 모든 뽑아내기를 쓰는 명령에서 저장 공간에 값이 모자랄 경우, 커서는 그 명령을 실행하지 않고 커서가 있는 글자의 홀소리의 반대방향으로 움직입니다.
602
+
603
+ - 해설: 스택이 차 있을 경우 조건2에 의해 ㅎ은 프로그램을 종료하지 못하고 2를 출력 후 종료해야 합니다. 하지만 대부분의 구현체는 이 경우 프로그램을 종료합니다.
604
+ END
605
+ # rubocop:enable Metrics/LineLength
606
+
607
+ let(:result) { '' }
608
+ let(:exit_code) { 0 }
609
+
610
+ it_behaves_like 'a runner'
611
+ end
515
612
  end
@@ -83,13 +83,22 @@ describe Raheui::Stack do
83
83
  expect(subject.pop).to be(element)
84
84
  expect(subject.pop).to be(element)
85
85
  end
86
+ end
87
+
88
+ context 'with more than one element' do
89
+ let(:one) { rand(10) }
90
+ let(:two) { rand(10...20) }
91
+
92
+ before(:example) do
93
+ subject.push(one)
94
+ subject.push(two)
95
+ end
86
96
 
87
97
  it 'pushes last pushed element' do
88
- subject.push(42)
89
98
  subject.push_dup
90
- expect(subject.pop).to be(42)
91
- expect(subject.pop).to be(42)
92
- expect(subject.pop).to be(element)
99
+ expect(subject.pop).to be(two)
100
+ expect(subject.pop).to be(two)
101
+ expect(subject.pop).to be(one)
93
102
  end
94
103
  end
95
104
  end
@@ -39,6 +39,20 @@ describe Raheui::Store do
39
39
  end
40
40
  end
41
41
 
42
+ context 'with implemented push_dup' do
43
+ let(:methods) { base_methods - [:push_dup] }
44
+
45
+ before(:context) { Raheui::Store.class_eval { def push_dup; end } }
46
+ after(:context) { Raheui::Store.class_eval { remove_method :push_dup } }
47
+
48
+ it 'raises NotImplementedError' do
49
+ expect(base_methods - methods).to contain_exactly(:push_dup)
50
+ expect { subject }
51
+ .to raise_error(NotImplementedError,
52
+ format(error_msg, methods.join(', ')))
53
+ end
54
+ end
55
+
42
56
  context 'with implemented swap' do
43
57
  let(:methods) { base_methods - [:swap] }
44
58
 
@@ -60,6 +74,8 @@ describe Raheui::Store do
60
74
 
61
75
  def pop; end
62
76
 
77
+ def push_dup; end
78
+
63
79
  def swap; end
64
80
  end
65
81
  end
@@ -68,6 +84,7 @@ describe Raheui::Store do
68
84
  Raheui::Store.class_eval do
69
85
  remove_method :push
70
86
  remove_method :pop
87
+ remove_method :push_dup
71
88
  remove_method :swap
72
89
  end
73
90
  end
@@ -83,10 +100,4 @@ describe Raheui::Store do
83
100
  expect(Raheui::Store.instance_methods(false)).to include(:size)
84
101
  end
85
102
  end
86
-
87
- describe '#push_dup' do
88
- it 'should respond to #push_dup' do
89
- expect(Raheui::Store.instance_methods(false)).to include(:push_dup)
90
- end
91
- end
92
103
  end
data/spec/spec_helper.rb CHANGED
@@ -4,8 +4,8 @@ if ENV['TRAVIS'] || ENV['COVERAGE']
4
4
  require 'simplecov'
5
5
 
6
6
  if ENV['TRAVIS']
7
- require 'coveralls'
8
- SimpleCov.formatter = Coveralls::SimpleCov::Formatter
7
+ require 'codecov'
8
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
9
9
  end
10
10
 
11
11
  SimpleCov.start do
@@ -14,6 +14,8 @@ shared_examples 'a store' do
14
14
  end
15
15
 
16
16
  describe '#push_dup' do
17
+ it { is_expected.to respond_to(:push_dup) }
18
+
17
19
  context 'with no elements' do
18
20
  it "doesn't push" do
19
21
  subject.push_dup
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: raheui
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
- - ChaYoung You
7
+ - Chayoung You
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-27 00:00:00.000000000 Z
11
+ date: 2015-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.29.0
61
+ version: 0.32.0
62
62
  type: :development
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.29.0
68
+ version: 0.32.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -150,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  version: '0'
151
151
  requirements: []
152
152
  rubyforge_project:
153
- rubygems_version: 2.4.6
153
+ rubygems_version: 2.4.8
154
154
  signing_key:
155
155
  specification_version: 4
156
156
  summary: Aheui interpreter in Ruby.