raheui 1.0.2 → 1.0.3

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