summaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
authorJérémy Zurcher <jeremy@asynk.ch>2023-10-24 15:03:28 +0200
committerJérémy Zurcher <jeremy@asynk.ch>2023-10-24 15:03:28 +0200
commit88b968a4a3bf84d4e60c1b150a25c46e7a84e97c (patch)
tree6fc62fa9fe21f3d35e59dfd286a242b14403bc6c /spec
parentd2a82f70866631968c570275d424336a3034dc09 (diff)
downloadcolonial-twilight-88b968a4a3bf84d4e60c1b150a25c46e7a84e97c.zip
colonial-twilight-88b968a4a3bf84d4e60c1b150a25c46e7a84e97c.tar.gz
Forces : add spec
Diffstat (limited to 'spec')
-rw-r--r--spec/forces_spec.rb127
1 files changed, 127 insertions, 0 deletions
diff --git a/spec/forces_spec.rb b/spec/forces_spec.rb
new file mode 100644
index 0000000..549b917
--- /dev/null
+++ b/spec/forces_spec.rb
@@ -0,0 +1,127 @@
+# frozen_string_literal: true
+
+require './lib/colonial_twilight/forces'
+
+describe ColonialTwilight::Forces do
+ describe 'Available' do
+ f = ColonialTwilight::Forces.new :available
+ it 'nil' do
+ %i[control fln_active].each do |sym|
+ expect(f.send(sym)).to be nil
+ end
+ end
+
+ it 'fln_active -> fln_underground' do
+ f.add :fln_active, 1
+ expect(f.fln_underground).to be 1
+ end
+ end
+
+ describe 'Casualties' do
+ f = ColonialTwilight::Forces.new :casualties
+ it 'nil' do
+ %i[control fln_active fln_bases].each do |sym|
+ expect(f.send(sym)).to be nil
+ end
+ end
+
+ it 'raise' do
+ %i[fln_active fln_bases].each do |sym|
+ expect { f.add sym, 1 }.to raise_error(Exception)
+ end
+ end
+ end
+
+ describe 'OutOfPlay' do
+ f = ColonialTwilight::Forces.new :out_of_play
+ it 'nil' do
+ %i[control algerian_troops algerian_police fln_active fln_bases].each do |sym|
+ expect(f.send(sym)).to be nil
+ end
+ end
+
+ it 'raise' do
+ %i[algerian_troops algerian_police fln_active fln_bases].each do |sym|
+ expect { f.add sym, 1 }.to raise_error(Exception)
+ end
+ end
+ end
+
+ describe 'Country' do
+ f = ColonialTwilight::Forces.new :Country
+ it 'nil' do
+ %i[control algerian_troops algerian_police french_troops french_police].each do |sym|
+ expect(f.send(sym)).to be nil
+ end
+ end
+
+ it 'raise' do
+ %i[algerian_troops algerian_police french_troops french_police].each do |sym|
+ expect { f.add sym, 1 }.to raise_error(Exception)
+ end
+ end
+ end
+
+ describe 'City' do
+ ColonialTwilight::Forces.new :City
+ end
+
+ describe 'Sector' do
+ f = ColonialTwilight::Forces.new :Sector
+ data = { fln_bases: 0, gov_bases: 1, algerian_troops: 2, algerian_police: 3,
+ french_troops: 4, french_police: 5, fln_underground: 6, fln_active: 7 }
+ f.init data
+ it 'init' do
+ data.keys.each_with_index do |k, i|
+ expect(f.send(k)).to be i
+ end
+ end
+
+ it 'count bases' do
+ expect(f.bases).to be 1
+ end
+
+ it 'count fln' do
+ expect(f.fln).to be 13
+ end
+
+ it 'count guerrillas' do
+ expect(f.guerrillas).to be 13
+ end
+
+ it 'count troops' do
+ expect(f.troops).to be 6
+ end
+
+ it 'count police' do
+ expect(f.police).to be 8
+ end
+
+ it 'switch control' do
+ expect(f.control).to be :GOV
+ f.add :fln_active, 2
+ expect(f.control).to be :uncontrolled
+ f.add :fln_active, 1
+ expect(f.control).to be :FLN
+ end
+
+ it 'inspect' do
+ expect(f.inspect.instance_of?(String)).to be true
+ end
+
+ it 'raise' do
+ expect { f.add :fln_bases, 2 }.to raise_error(Exception)
+ end
+
+ it 'raise wrong type' do
+ expect { f.add :wrong, 1 }.to raise_error(Exception)
+ end
+
+ it 'data' do
+ d = f.data
+ data.keys do |k, v|
+ expect(d[k]).to be v
+ end
+ end
+ end
+end