Skip to content

Commit

Permalink
バリデーションを追加しました
Browse files Browse the repository at this point in the history
  • Loading branch information
jiikko committed Jul 29, 2021
1 parent 238b56b commit 80e5a2a
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@
- siwtch, proコンが電源OFF時にCPU使いまくるのを修正した
- 連打中に無視するボタンを複数登録できるようにした
- キーのリマップ先に複数ボタンを登録できるようにした
- 1つのボタンへ連打とリマップをできないようにしました
- NG ex)
- flip :zr, if_pressed: [:y]
- remap :zr, to: [:x]

## [0.1.4] - 2021-07-11
- ProconBypassMan.rootの定義を、gem rootからproject rootへ変更した
Expand Down
13 changes: 13 additions & 0 deletions lib/procon_bypass_man/configuration/validator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ def valid?
validate_require_prefix_keys
validate_config_of_button_lonely
validate_verify_button_existence
validate_flip_and_remap_are_hate_each_other

@errors.empty?
end
Expand Down Expand Up @@ -72,6 +73,18 @@ def validate_verify_button_existence
end
end
end

def validate_flip_and_remap_are_hate_each_other
@layers.each do |layer_key, value|
flip_buttons = []
remap_buttons = []
value.instance_eval { @flips.keys }.map(&:to_sym).each { |b| flip_buttons << b }
value.instance_eval { @remaps.keys }.map(&:to_sym).each { |b| remap_buttons << b }
if(duplicated_buttons = flip_buttons & remap_buttons).length > 0
@errors[:layers] << "レイヤー#{layer_key}で、連打とリマップの定義が重複しているボタン#{duplicated_buttons.join(", ")}があります"
end
end
end
end
end
end
15 changes: 14 additions & 1 deletion spec/lib/procon_bypass_man/configuration_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ def self.binaries; ['a']; end
end

describe 'validations' do
context '1つのレイヤーで同じボタンへの設定をしているとき' do
context '同じレイヤーで同じボタンへの設定をしているとき' do
it do
# TODO validationとして捕捉したい
expect {
Expand All @@ -440,6 +440,19 @@ def self.binaries; ['a']; end
# expect(ProconBypassMan::Configuration.instance.errors).to eq(:layers=>["upで同じボタンへの設定はできません。"])
end
end
context '同じレイヤーで1つのボタンへのflipとremapを設定をしているとき' do
it do
ProconBypassMan.configure do
prefix_keys_for_changing_layer [:zr]
layer :up do
flip :zr, if_pressed: [:y]
remap :zr, to: [:y]
end
end
expect(ProconBypassMan::Configuration.instance.valid?).to eq(false)
expect(ProconBypassMan::Configuration.instance.errors).to eq({:layers=>["レイヤーupで、連打とリマップの定義が重複しているボタンzrがあります"]})
end
end
context 'modeを設定しているのにブロックを渡しているとき' do
it do
class AModePlugin
Expand Down

0 comments on commit 80e5a2a

Please sign in to comment.