diff options
-rw-r--r-- | spec/fln_rules_spec.rb | 37 | ||||
-rw-r--r-- | spec/mock_board.rb | 82 |
2 files changed, 105 insertions, 14 deletions
diff --git a/spec/fln_rules_spec.rb b/spec/fln_rules_spec.rb index fe8e301..1b55288 100644 --- a/spec/fln_rules_spec.rb +++ b/spec/fln_rules_spec.rb @@ -2,6 +2,7 @@ require './lib/colonial_twilight/fln_rules' require './lib/colonial_twilight/board' +require './spec/mock_board' class FLNRulesImpl include ColonialTwilight::FLNRules @@ -25,31 +26,39 @@ describe ColonialTwilight::FLNRules do expect(rules.rally_spaces(@board).size).to eq(27) end - it 'may_rally_in? not in city at support' do - a = ColonialTwilight::City.new('a', 'w', 0, 0) - a.shift :support - expect(rules.may_rally_in?(a)).to be false + it 'may_rally_in? sector' do + a = Sector.new + expect(rules.may_rally_in?(a)).to be true end - it 'may_rally_in? not in not independent country' do - a = ColonialTwilight::Country.new('country') + it 'may_rally_in? in city not at support' do + a = Sector.new({ name: 'city', support: false }) + expect(rules.may_rally_in?(a)).to be true + end + + it 'may_rally_in? not in city at support' do + a = Sector.new({ name: 'city', support: true }) expect(rules.may_rally_in?(a)).to be false end - it 'may_rally_in?' do - a = ColonialTwilight::Sector.new('a', 'w', 0, 0) + it 'may_rally_in? in independent country' do + a = Sector.new({ name: 'country', independent: true }) expect(rules.may_rally_in?(a)).to be true end - it 'may place 1 FLN cube' do - a = ColonialTwilight::Sector.new('a', 'w', 0, 0) + it 'may_rally_in? not in not independent country' do + a = Sector.new({ name: 'country', independent: false }) + expect(rules.may_rally_in?(a)).to be false + end + + it 'may place 1 guerrillas' do + a = Sector.new({ pop: 3 }) expect(rules.max_placable_guerrillas(a)).to eq(1) end - it 'may place 2 FLN cube' do - a = ColonialTwilight::Sector.new('a', 'w', 0, 2) - a.add :fln_base - expect(rules.max_placable_guerrillas(a)).to eq(3) + it 'may place pop + base guerrillas' do + a = Sector.new({ pop: 3, fln_bases: 2 }) + expect(rules.max_placable_guerrillas(a)).to eq(5) end end diff --git a/spec/mock_board.rb b/spec/mock_board.rb new file mode 100644 index 0000000..18dad5b --- /dev/null +++ b/spec/mock_board.rb @@ -0,0 +1,82 @@ +# frozen_string_literal: true + +class Sector + attr_reader :name + attr_writer :data + + def initialize(data = { name: 'sector', pop: 0, fln_bases: 0, fln_active: 0, fln_underground: 0, gov_cubes: 0, independent: true, support: false, terror: false }) + @name = data[:name] || 'sector' + @data = data + end + + def sector? + @name == 'sector' + end + + def city? + @name == 'city' + end + + def country? + @name == 'country' + end + + def max_bases + 3 + end + + def independent? + @data[:independent] + end + + def support? + @data[:support] + end + + def terror? + @data[:terror] + end + + def pop + @data[:pop] || 0 + end + + def guerrillas + fln_active + fln_underground + end + + def fln_bases + @data[:fln_bases] || 0 + end + + def fln_active + @data[:fln_active] || 0 + end + + def fln_underground + @data[:fln_underground] || 0 + end + + def gov_cubes + @data[:gov_cubes] || 0 + end +end + +class Board + attr_reader :sector + attr_accessor :fln_resources, :available_fln_bases + + def initialize + @fln_resources = 0 + @available_fln_bases = 1 + @sector = Sector.new + end + + def has(&block) + block.call(@sector) + end + + def count(&block) + block.call(@sector) + end +end |