From 7311f07e16fc73c06d2ac601995c0955d83ac83c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Zurcher?= Date: Fri, 27 Oct 2023 14:09:33 +0200 Subject: FLNBotRules spec : simplify ({ ... }) into ( ... ) --- lib/colonial_twilight/fln_bot_rules.rb | 2 +- spec/fln_bot_rules_spec.rb | 190 ++++++++++++++++----------------- 2 files changed, 96 insertions(+), 96 deletions(-) diff --git a/lib/colonial_twilight/fln_bot_rules.rb b/lib/colonial_twilight/fln_bot_rules.rb index eb06af6..625d31e 100644 --- a/lib/colonial_twilight/fln_bot_rules.rb +++ b/lib/colonial_twilight/fln_bot_rules.rb @@ -180,7 +180,7 @@ module ColonialTwilight s = spaces.sample n -= h[s] = (g = _removable_guerrillas(s)) >= n ? n : g end - h + h.reject { |_k, v| v.zero? } end # 1) place: outofplay -> available | bases -> guerrillas if choice diff --git a/spec/fln_bot_rules_spec.rb b/spec/fln_bot_rules_spec.rb index c21d339..fed7b24 100644 --- a/spec/fln_bot_rules_spec.rb +++ b/spec/fln_bot_rules_spec.rb @@ -74,22 +74,22 @@ describe ColonialTwilight::FLNBotRules do describe 'Terror' do it 'terror1? 1 pop 2 underground' do - @rules.set({ pop: 1, fln_bases: 1, fln_underground: 2 }) + @rules.set(pop: 1, fln_bases: 1, fln_underground: 2) expect(@rules.terror1?).to be true end it 'terror1? 1 pop 1 underground' do - @rules.set({ pop: 1, fln_bases: 1, fln_underground: 1 }) + @rules.set(pop: 1, fln_bases: 1, fln_underground: 1) expect(@rules.terror1?).to be false end it 'terror1? 0 pop 1 underground' do - @rules.set({ pop: 0, fln_bases: 1, fln_underground: 1 }) + @rules.set(pop: 0, fln_bases: 1, fln_underground: 1) expect(@rules.terror1?).to be true end it 'terror1? 0 pop 0 underground' do - @rules.set({ pop: 0, fln_bases: 1, fln_underground: 0 }) + @rules.set(pop: 0, fln_bases: 1, fln_underground: 0) expect(@rules.terror1?).to be false end @@ -115,68 +115,68 @@ describe ColonialTwilight::FLNBotRules do end it 'rally1? may rally_1' do - @rules.set({ fln_active: 1, fln_underground: 2 }) + @rules.set(fln_active: 1, fln_underground: 2) expect(@rules.rally1?).to be true end it 'rally1? may rally_2' do - @rules.set({ fln_active: 2, fln_underground: 2 }) + @rules.set(fln_active: 2, fln_underground: 2) expect(@rules.rally1?).to be true end it 'rally1? may rally_1 but no bases' do - @rules.set({ fln_active: 1, fln_underground: 2 }) + @rules.set(fln_active: 1, fln_underground: 2) @board.available_fln_bases = 0 expect(@rules.rally1?).to be false end it 'rally1? may rally_2 but no bases' do - @rules.set({ fln_active: 2, fln_underground: 2 }) + @rules.set(fln_active: 2, fln_underground: 2) @board.available_fln_bases = 0 expect(@rules.rally1?).to be false end it 'rally2? enough fln at bases' do - @rules.set({ fln_bases: 2, fln_underground: 3 }) + @rules.set(fln_bases: 2, fln_underground: 3) expect(@rules.rally2?).to be false end it 'rally2? false' do - @rules.set({ fln_bases: 2, fln_underground: 2 }) + @rules.set(fln_bases: 2, fln_underground: 2) expect(@rules.rally2?).to be true end end describe 'Rally Specific' do it 'may_rally_1_in? not enough fln guerrillas' do - a = Sector.new({ fln_active: 1, fln_underground: 1 }) + a = Sector.new(fln_active: 1, fln_underground: 1) expect(@rules.may_rally_1_in?(a)).to be false end it 'may_rally_1_in? 3+ guerrillas' do - a = Sector.new({ fln_active: 1, fln_underground: 2 }) + a = Sector.new(fln_active: 1, fln_underground: 2) expect(@rules.may_rally_1_in?(a)).to be true end it 'may_rally_1_in? 3+ guerrillas no limited op' do - a = Sector.new({ fln_active: 1, fln_underground: 2 }) + a = Sector.new(fln_active: 1, fln_underground: 2) @rules.limited_op_only = false expect(@rules.may_rally_1_in?(a)).to be true end it 'may_rally_1_in? 3+ guerrillas but gov cubes' do - a = Sector.new({ fln_active: 1, fln_underground: 2, gov_cubes: 1 }) + a = Sector.new(fln_active: 1, fln_underground: 2, gov_cubes: 1) @rules.limited_op_only = false expect(@rules.may_rally_1_in?(a)).to be false end it 'may_rally_2_in? not enough fln guerrillas' do - a = Sector.new({ fln_active: 2, fln_underground: 1 }) + a = Sector.new(fln_active: 2, fln_underground: 1) expect(@rules.may_rally_2_in?(a)).to be false end it 'may_rally_2_in? 4+ guerrillas' do - a = Sector.new({ fln_active: 2, fln_underground: 2 }) + a = Sector.new(fln_active: 2, fln_underground: 2) expect(@rules.may_rally_2_in?(a)).to be true end @@ -186,131 +186,131 @@ describe ColonialTwilight::FLNBotRules do end it 'may_rally_3_in? base and pop 0' do - a = Sector.new({ fln_bases: 1 }) + a = Sector.new(fln_bases: 1) expect(@rules.may_rally_3_in?(a)).to be true end it 'may_rally_3_in? base and pop 0 but has fln underground' do - a = Sector.new({ fln_bases: 1, fln_underground: 1 }) + a = Sector.new(fln_bases: 1, fln_underground: 1) expect(@rules.may_rally_3_in?(a)).to be false end it 'may_rally_3_in? base and country but not independent' do - a = Sector.new({ fln_bases: 1, pop: 1, name: 'country', independent: false }) + a = Sector.new(fln_bases: 1, pop: 1, name: 'country', independent: false) expect(@rules.may_rally_3_in?(a)).to be false end it 'may_rally_3_in? base and country' do - a = Sector.new({ fln_bases: 1, pop: 1, name: 'country', independent: true }) + a = Sector.new(fln_bases: 1, pop: 1, name: 'country', independent: true) expect(@rules.may_rally_3_in?(a)).to be true end it 'may_rally_3_in? base and country but has fln underground' do - a = Sector.new({ fln_bases: 1, pop: 1, name: 'country', independent: true, fln_underground: 1 }) + a = Sector.new(fln_bases: 1, pop: 1, name: 'country', independent: true, fln_underground: 1) expect(@rules.may_rally_3_in?(a)).to be false end it 'may_rally_3_in? base and pop' do - a = Sector.new({ fln_bases: 1, pop: 1, fln_underground: 1 }) + a = Sector.new(fln_bases: 1, pop: 1, fln_underground: 1) expect(@rules.may_rally_3_in?(a)).to be true end it 'may_rally_3_in? base and pop but too many fln underground ' do - a = Sector.new({ fln_bases: 1, pop: 1, fln_underground: 2 }) + a = Sector.new(fln_bases: 1, pop: 1, fln_underground: 2) expect(@rules.may_rally_3_in?(a)).to be false end it 'rally_3_priority Algeria' do a = Sector.new - b = Sector.new({ name: 'country' }) + b = Sector.new(name: 'country') expect(@rules.rally_3_priority([a, b])[0]).to be a end it 'rally_3_priority with GOV cubes' do a = Sector.new - b = Sector.new({ gov_cubes: 1 }) + b = Sector.new(gov_cubes: 1) expect(@rules.rally_3_priority([a, b])[0]).to be b end it 'rally_3_priority pop 1+' do - a = Sector.new({ pop: 1 }) - b = Sector.new({ gov_cubes: 1, pop: 1 }) - c = Sector.new({ gov_cubes: 1 }) + a = Sector.new(pop: 1) + b = Sector.new(gov_cubes: 1, pop: 1) + c = Sector.new(gov_cubes: 1) expect(@rules.rally_3_priority([a, b, c])[0]).to be b end it 'rally_3_priority least fln_underground' do - a = Sector.new({ pop: 1 }) - b = Sector.new({ gov_cubes: 1, pop: 1 }) - c = Sector.new({ gov_cubes: 1, pop: 1, fln_underground: 1 }) + a = Sector.new(pop: 1) + b = Sector.new(gov_cubes: 1, pop: 1) + c = Sector.new(gov_cubes: 1, pop: 1, fln_underground: 1) expect(@rules.rally_3_priority([a, b, c])[0]).to be b end it 'may_rally_5_in? city' do - a = Sector.new({ name: 'city', support: true }) + a = Sector.new(name: 'city', support: true) expect(@rules.may_rally_5_in?(a)).to be false end it 'may_rally_5_in? fln underground' do - a = Sector.new({ support: true, fln_underground: 1 }) + a = Sector.new(support: true, fln_underground: 1) expect(@rules.may_rally_5_in?(a)).to be false end it 'may_rally_5_in? no support' do - a = Sector.new({ support: false }) + a = Sector.new(support: false) expect(@rules.may_rally_5_in?(a)).to be false end it 'may_rally_5_in? good' do - a = Sector.new({ support: true }) + a = Sector.new(support: true) expect(@rules.may_rally_5_in?(a)).to be true end it 'rally_5_priority most pop' do - a = Sector.new({ pop: 1 }) - b = Sector.new({ pop: 2 }) + a = Sector.new(pop: 1) + b = Sector.new(pop: 2) expect(@rules.rally_5_priority([a, b])[0]).to be b end it 'may_rally_6_in? pop 1' do - a = Sector.new({ pop: 1 }) + a = Sector.new(pop: 1) expect(@rules.may_rally_6_in?(a, false)).to be false end it 'may_rally_6_in? pop 2+ but no base, no control after' do - a = Sector.new({ pop: 2, gov_cubes: 1 }) + a = Sector.new(pop: 2, gov_cubes: 1) @board.available_fln_underground = 1 expect(@rules.may_rally_6_in?(a, false)).to be false end it 'may_rally_6_in? pop 2+ and base' do - a = Sector.new({ pop: 2, gov_cubes: 6, fln_bases: 1 }) + a = Sector.new(pop: 2, gov_cubes: 6, fln_bases: 1) expect(@rules.may_rally_6_in?(a, false)).to be true end it 'may_rally_6_in? pop 2+ and control' do - a = Sector.new({ pop: 2, gov_cubes: 1, fln_active: 1 }) + a = Sector.new(pop: 2, gov_cubes: 1, fln_active: 1) @board.available_fln_underground = 1 expect(@rules.may_rally_6_in?(a, false)).to be true end it 'rally_6_priority population' do - a = Sector.new({ pop: 2 }) - b = Sector.new({ pop: 1 }) + a = Sector.new(pop: 2) + b = Sector.new(pop: 1) expect(@rules.rally_6_priority([a, b])[0]).to be a end it 'rally_6_priority min terror' do - a = Sector.new({ pop: 1, terror: 2 }) - b = Sector.new({ pop: 2, terror: 1 }) - c = Sector.new({ pop: 2, terror: 2 }) + a = Sector.new(pop: 1, terror: 2) + b = Sector.new(pop: 2, terror: 1) + c = Sector.new(pop: 2, terror: 2) expect(@rules.rally_6_priority([a, b, c])[0]).to be b end it 'rally_6_priority support' do - a = Sector.new({ pop: 2, terror: 1, support: false }) - b = Sector.new({ pop: 2, terror: 1, support: true }) - c = Sector.new({ pop: 2, terror: 2, support: true }) + a = Sector.new(pop: 2, terror: 1, support: false) + b = Sector.new(pop: 2, terror: 1, support: true) + c = Sector.new(pop: 2, terror: 2, support: true) expect(@rules.rally_6_priority([a, b, c])[0]).to be b end @@ -320,48 +320,48 @@ describe ColonialTwilight::FLNBotRules do end it 'may_rally_7_in? not in city at support' do - a = Sector.new({ name: 'city', support: true }) + a = Sector.new(name: 'city', support: true) expect(@rules.may_rally_7_in?(a)).to be false end it 'may_rally_7_in? not in not independent country' do - a = Sector.new({ name: 'country', independent: false }) + a = Sector.new(name: 'country', independent: false) expect(@rules.may_rally_7_in?(a)).to be false end it 'rally_7_priority population' do - a = Sector.new({ pop: 2 }) - b = Sector.new({ pop: 1 }) - c = Sector.new({ pop: 1 }) + a = Sector.new(pop: 2) + b = Sector.new(pop: 1) + c = Sector.new(pop: 1) expect(@rules.rally_7_priority([a, b, c])[0]).to be a end it 'rally_7_priority gain FLN control' do - a = Sector.new({ gov_cubes: 2 }) - b = Sector.new({ gov_cubes: 1, fln_active: 1 }) - c = Sector.new({ gov_cubes: 1 }) + a = Sector.new(gov_cubes: 2) + b = Sector.new(gov_cubes: 1, fln_active: 1) + c = Sector.new(gov_cubes: 1) @board.available_fln_underground = 1 expect(@rules.rally_7_priority([a, b, c])[0]).to be b end it 'rally_7_priority remove GOV control' do - a = Sector.new({ gov_cubes: 3 }) - b = Sector.new({ gov_cubes: 1 }) - c = Sector.new({ gov_cubes: 2 }) + a = Sector.new(gov_cubes: 3) + b = Sector.new(gov_cubes: 1) + c = Sector.new(gov_cubes: 2) @board.available_fln_underground = 1 expect(@rules.rally_7_priority([a, b, c])[0]).to be b end it 'rally_7_priority city?' do - a = Sector.new({ name: 'city' }) + a = Sector.new(name: 'city') b = Sector.new expect(@rules.rally_7_priority([a, b])[0]).to be a end it 'rally_7_priority least terror' do a = Sector.new - b = Sector.new({ name: 'city', terror: 1 }) - c = Sector.new({ name: 'city', terror: 2 }) + b = Sector.new(name: 'city', terror: 1) + c = Sector.new(name: 'city', terror: 2) expect(@rules.rally_7_priority([a, b, c])[0]).to be b end @@ -371,32 +371,32 @@ describe ColonialTwilight::FLNBotRules do end it 'may_rally_8_in? fln guerrillas but base' do - a = Sector.new({ fln_active: 1, fln_bases: 1 }) + a = Sector.new(fln_active: 1, fln_bases: 1) expect(@rules.may_rally_8_in?(a)).to be false end it 'may_rally_8_in? fln guerrillas and 0 base' do - a = Sector.new({ fln_underground: 1 }) + a = Sector.new(fln_underground: 1) expect(@rules.may_rally_8_in?(a)).to be true end it 'rally_8_priority Algeria' do a = Sector.new - b = Sector.new({ name: 'country' }) + b = Sector.new(name: 'country') expect(@rules.rally_8_priority([a, b])[0]).to be a end it 'rally_8_priority most guerrillas' do a = Sector.new - b = Sector.new({ fln_active: 2, fln_underground: 1 }) - c = Sector.new({ fln_active: 1, fln_underground: 1 }) + b = Sector.new(fln_active: 2, fln_underground: 1) + c = Sector.new(fln_active: 1, fln_underground: 1) expect(@rules.rally_8_priority([a, b, c])[0]).to be b end it 'rally_8_priority no cubes' do a = Sector.new - b = Sector.new({ fln_active: 1, fln_underground: 1 }) - c = Sector.new({ fln_active: 1, fln_underground: 1, gov_cubes: 1 }) + b = Sector.new(fln_active: 1, fln_underground: 1) + c = Sector.new(fln_active: 1, fln_underground: 1, gov_cubes: 1) expect(@rules.rally_8_priority([a, b, c])[0]).to be b end end @@ -413,49 +413,49 @@ describe ColonialTwilight::FLNBotRules do end it 'may_add_base_in?' do - a = Sector.new({ fln_active: 3 }) + a = Sector.new(fln_active: 3) expect(@rules.may_add_base_in?(a)).to be true end it 'may_add_base_in? not enough fln' do - a = Sector.new({ fln_active: 2 }) + a = Sector.new(fln_active: 2) expect(@rules.may_add_base_in?(a)).to be false end it 'may_add_base_in? but has base' do - a = Sector.new({ fln_bases: 1, fln_active: 3 }) + a = Sector.new(fln_bases: 1, fln_active: 3) expect(@rules.may_add_base_in?(a)).to be false end it 'may_add_base_in? country ' do - a = Sector.new({ name: 'country', fln_bases: 2, fln_active: 3 }) + a = Sector.new(name: 'country', fln_bases: 2, fln_active: 3) expect(@rules.may_add_base_in?(a)).to be true end it 'may_add_base_in? country but limit' do - a = Sector.new({ name: 'country', fln_bases: 3, fln_active: 3 }) + a = Sector.new(name: 'country', fln_bases: 3, fln_active: 3) expect(@rules.may_add_base_in?(a)).to be false end it 'max_placable_guerrillas_in? 1' do - a = Sector.new({ pop: 2 }) + a = Sector.new(pop: 2) expect(@rules.max_placable_guerrillas_in?(a)).to eq(1) end it 'max_placable_guerrillas_in? pop + base' do - a = Sector.new({ pop: 2, fln_bases: 1 }) + a = Sector.new(pop: 2, fln_bases: 1) expect(@rules.max_placable_guerrillas_in?(a)).to eq(3) end it 'max_placable_guerrillas_in? max pop + 1' do - a = Sector.new({ pop: 2, fln_bases: 1, fln_active: 1, fln_underground: 1 }) + a = Sector.new(pop: 2, fln_bases: 1, fln_active: 1, fln_underground: 1) expect(@rules.max_placable_guerrillas_in?(a)).to eq(1) end it 'place_guerrillas_in' do - a = Sector.new({ pop: 2, fln_bases: 1 }) + a = Sector.new(pop: 2, fln_bases: 1) @board.available_fln_underground = 1 - @board.spaces << Sector.new({ name: 'a', fln_bases: 1, fln_active: 2, fln_underground: 1 }) + @board.spaces << Sector.new(name: 'a', fln_bases: 1, fln_active: 2, fln_underground: 1) h = @rules.place_guerrillas_in(a) expect(@rules.max_placable_guerrillas_in?(a)).to eq(3) expect(h[:available]).to eq(1) @@ -463,31 +463,31 @@ describe ColonialTwilight::FLNBotRules do end it '_removable_guerrillas active' do - a = Sector.new({ fln_active: 2, fln_underground: 3 }) + a = Sector.new(fln_active: 2, fln_underground: 3) expect(@rules._removable_guerrillas(a)).to eq(2) end it '_removable_guerrillas leave 2 at support' do - a = Sector.new({ support: true, fln_active: 3 }) + a = Sector.new(support: true, fln_active: 3) expect(@rules._removable_guerrillas(a)).to eq(1) end it '_removable guerrillas leave 2 at bases' do - a = Sector.new({ fln_bases: 1, fln_active: 3, fln_underground: 1 }) + a = Sector.new(fln_bases: 1, fln_active: 3, fln_underground: 1) expect(@rules._removable_guerrillas(a)).to eq(2) end it 'place_guerrillas support' do - a = Sector.new({ support: false }) - b = Sector.new({ support: true }) - c = Sector.new({ support: false }) + a = Sector.new(support: false) + b = Sector.new(support: true) + c = Sector.new(support: false) expect(@rules.place_guerrillas([a, b, c])[0]).to be b end it 'place_guerrillas support and fln_active' do - a = Sector.new({ support: false }) - b = Sector.new({ support: true, fln_active: 1 }) - c = Sector.new({ support: true }) + a = Sector.new(support: false) + b = Sector.new(support: true, fln_active: 1) + c = Sector.new(support: true) expect(@rules.place_guerrillas([a, b, c])[0]).to be b end @@ -498,15 +498,15 @@ describe ColonialTwilight::FLNBotRules do end it '_remove_guerrillas_priority most guerrillas' do - a = Sector.new({ fln_active: 2, fln_underground: 1 }) - b = Sector.new({ fln_active: 2, fln_underground: 2 }) - c = Sector.new({ fln_active: 1, fln_underground: 2 }) - d = Sector.new({ fln_active: 3, fln_underground: 2 }) + a = Sector.new(fln_active: 2, fln_underground: 1) + b = Sector.new(fln_active: 2, fln_underground: 2) + c = Sector.new(fln_active: 1, fln_underground: 2) + d = Sector.new(fln_active: 3, fln_underground: 2) expect(@rules._remove_guerrillas_priority([a, b, c, d], { d => true })[0]).to be b end it 'remove_from all' do - a = Sector.new({ fln_active: 2, fln_underground: 1, fln_bases: 1 }) + a = Sector.new(fln_active: 2, fln_underground: 1, fln_bases: 1) h = @rules.remove_from(a, 6) expect(h[:fln_underground]).to be 1 expect(h[:fln_active]).to be 2 @@ -514,7 +514,7 @@ describe ColonialTwilight::FLNBotRules do end it 'remove_from a few' do - a = Sector.new({ fln_active: 1, fln_underground: 1 }) + a = Sector.new(fln_active: 1, fln_underground: 1) h = @rules.remove_from(a, 2) expect(h[:fln_underground]).to be 1 expect(h[:fln_active]).to be 1 -- cgit v1.1-2-g2b99