diff options
Diffstat (limited to 'spec/fln_rules_spec.rb')
| -rw-r--r-- | spec/fln_rules_spec.rb | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/spec/fln_rules_spec.rb b/spec/fln_rules_spec.rb deleted file mode 100644 index dc19be1..0000000 --- a/spec/fln_rules_spec.rb +++ /dev/null @@ -1,199 +0,0 @@ -# frozen_string_literal: true - -require './lib/colonial_twilight/fln_bot/fln_rules' -require './lib/colonial_twilight/board' -require './spec/mock_board' - -class FLNRulesImpl - include ColonialTwilight::FLNRules -end - -describe ColonialTwilight::FLNRules do - rules = FLNRulesImpl.new - - before do - @board = ColonialTwilight::Board.new - end - - describe 'Rally' do - it 'collects spaces where operation can be conducted' do - expect(rules.rally_spaces(@board).size).to eq(28) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 25 sectors + 2 countries - expect(rules.rally_spaces(@board).size).to eq(27) - end - - it 'may_rally_in? sector' do - a = Sector.new - expect(rules.may_rally_in?(a)).to be true - end - - 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? in independent country' do - a = Sector.new({ name: 'country', independent: true }) - expect(rules.may_rally_in?(a)).to be true - end - - 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 pop + base guerrillas' do - a = Sector.new({ pop: 3, fln_bases: 2 }) - expect(rules.max_placable_guerrillas(a)).to eq(5) - end - end - - describe 'Agitate' do - it 'collects spaces where operation can be conducted' do - expect(rules.agitate_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 4 with bases + 1 in fln control : but only 1 without fln control - expect(rules.agitate_spaces(@board).size).to eq(1) - end - - it 'compute agitate cost terror and shift' do - a = Sector.new(terror: 2) - expect(rules.max_agitate_cost(a)).to eq(3) - end - - it 'compute agitate terror' do - a = Sector.new(terror: 1, oppose: true) - expect(rules.max_agitate_cost(a)).to eq(1) - end - end - - describe 'Attack' do - it 'collects spaces where operation can be conducted' do - # 25 sectors + 3 cities - expect(rules.attack_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 25 sectors + 2 countries - expect(rules.attack_spaces(@board).size).to eq(7) - end - end - - describe 'Terror' do - it 'collects spaces where operation can be conducted' do - expect(rules.terror_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - # 6 sectors - @board.load :short - expect(rules.terror_spaces(@board).size).to eq(6) - end - end - - describe 'Extort' do - it 'collects spaces where operation can be conducted' do - expect(rules.extort_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 2 sectors + 2 countries - expect(rules.extort_spaces(@board).size).to eq(4) - end - end - - describe 'Subvert' do - it 'collects spaces where operation can be conducted' do - expect(rules.subvert_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 4 sectors - expect(rules.subvert_spaces(@board).size).to eq(4) - end - end - - describe 'Ambush' do - it 'collects spaces where operation can be conducted' do - # 25 sectors + 3 cities - expect(rules.ambush_spaces(@board).size).to eq(0) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 25 sectors + 2 countries - expect(rules.ambush_spaces(@board).size).to eq(7) - end - end - - describe 'OAS' do - it 'collects spaces where operation can be conducted' do - # 14 sectors + 3 cities - expect(rules.oas_spaces(@board).size).to eq(17) - end - - it 'collects spaces where operation can be conducted' do - @board.load :short - # 11 sectors + 3 countries - expect(rules.oas_spaces(@board).size).to eq(14) - end - end - - describe 'March' do - it 'may keep on' do - expect(rules.must_stop?(@board.by_name('Saida'), @board.by_name('Mecheria'))).to be false - end - - it 'must stop when crossing international borders' do - expect(rules.must_stop?(@board.by_name('Morocco'), @board.by_name('Mecheria'))).to be true - end - - it 'must stop when crossing international borders' do - expect(rules.must_stop?(@board.by_name('Tebessa'), @board.by_name('Tunisia'))).to be true - end - - it 'must stop when crossing a wilaya border' do - expect(rules.must_stop?(@board.by_name('Setif'), @board.by_name('Barika'))).to be true - end - - it 'must not activate' do - expect(rules.must_activate?(@board, @board.by_name('Setif'), @board.by_name('Barika'))).to be false - end - - it 'might activate when support' do - c = @board.by_name('Constantine') - c.alignment = :support - c.add :french_troops, 1 - expect(rules.must_activate?(@board, @board.by_name('Setif'), c, 2)).to be false - expect(rules.must_activate?(@board, @board.by_name('Setif'), c, 3)).to be true - end - - it 'might activate when crossing border' do - c = @board.by_name('Mecheria') - c.add :french_troops, 1 - expect(rules.must_activate?(@board, @board.by_name('Morocco'), c, 2)).to be false - expect(rules.must_activate?(@board, @board.by_name('Morocco'), c, 3)).to be true - end - - end -end |
