summaryrefslogtreecommitdiffstats
path: root/spec/spaces_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/spaces_spec.rb')
-rw-r--r--spec/spaces_spec.rb169
1 files changed, 169 insertions, 0 deletions
diff --git a/spec/spaces_spec.rb b/spec/spaces_spec.rb
new file mode 100644
index 0000000..0c7e6bc
--- /dev/null
+++ b/spec/spaces_spec.rb
@@ -0,0 +1,169 @@
+# frozen_string_literal: true
+
+require './lib/colonial_twilight/spaces'
+# require './spec/mock_board'
+
+describe ColonialTwilight::Track do
+ before do
+ @t = ColonialTwilight::Track.new(10)
+ end
+
+ it 'initialize' do
+ expect(@t.v).to eq 0
+ end
+
+ it 'shift' do
+ expect(@t.shift(3)).to eq 3
+ expect(@t.shift(-2)).to eq 1
+ end
+
+ it 'clamp' do
+ expect(@t.clamp(12)).to eq 10
+ end
+
+ it 'overflow' do
+ expect { @t.shift(11) }.to raise_error(Exception)
+ end
+
+ it 'data' do
+ expect(@t.shift(3)).to eq 3
+ expect(@t.data).to eq 3
+ end
+end
+
+describe ColonialTwilight::Sector do
+ before do
+ @s = ColonialTwilight::Sector.new('Name', 'Wilaya', 'I', 0)
+ end
+
+ it 'to_s data inspect' do
+ expect(@s.to_s).to eq 'Name'
+ expect(@s.data.instance_of?(Hash)).to be true
+ expect(@s.inspect.instance_of?(String)).to be true
+ end
+
+ it 'is a Sector' do
+ expect(@s.sector?).to be true
+ expect(@s.city?).to be false
+ expect(@s.country?).to be false
+ end
+
+ it 'has border' do
+ s = ColonialTwilight::Sector.new('Name', 'Wilaya', 'I', 1, ColonialTwilight::Sector::BORDER)
+ expect(s.border?).to be true
+ expect(s.coastal?).to be false
+ expect(s.mountain?).to be false
+ end
+
+ it 'is coastal' do
+ s = ColonialTwilight::Sector.new('Name', 'Wilaya', 'I', 1, ColonialTwilight::Sector::COASTAL)
+ expect(s.border?).to be false
+ expect(s.coastal?).to be true
+ expect(s.mountain?).to be false
+ end
+
+ it 'has mountains' do
+ s = ColonialTwilight::Sector.new('Name', 'Wilaya', 'I', 1, ColonialTwilight::Sector::MOUNTAIN)
+ expect(s.border?).to be false
+ expect(s.coastal?).to be false
+ expect(s.mountain?).to be true
+ end
+
+ it 'has all' do
+ s = ColonialTwilight::Sector.new('Name', 'Wilaya', 'I', 1, ColonialTwilight::Sector::BORDER ||
+ ColonialTwilight::Sector::COASTAL || ColonialTwilight::Sector::MOUNTAIN)
+ expect(s.border?).to be true
+ expect(s.coastal?).to be false
+ expect(s.mountain?).to be false
+ end
+
+ it 'terror' do
+ expect(@s.terror?).to be false
+ expect(@s.terror).to eq 0
+ @s.shift_terror 2
+ expect(@s.terror?).to be true
+ expect(@s.terror).to eq 2
+ expect { @t.shift_terrort(-3) }.to raise_error(Exception)
+ end
+
+ it 'alignment' do
+ expect(@s.oppose?).to be false
+ expect(@s.neutral?).to be true
+ expect(@s.support?).to be false
+ expect { @s.shift :wrong }.to raise_error(Exception)
+ end
+
+ it 'shift alignment toward oppose' do
+ @s.shift :oppose
+ expect(@s.oppose?).to be true
+ expect(@s.neutral?).to be false
+ expect(@s.support?).to be false
+ end
+
+ it 'shift alignment toward support' do
+ @s.shift :support
+ expect(@s.oppose?).to be false
+ expect(@s.neutral?).to be false
+ expect(@s.support?).to be true
+ end
+
+ it 'control' do
+ expect(@s.fln_control?).to be false
+ expect(@s.uncontrolled?).to be true
+ expect(@s.gov_control?).to be false
+ end
+
+ it 'control fln' do
+ @s.add :fln_active
+ expect(@s.fln_control?).to be true
+ expect(@s.uncontrolled?).to be false
+ expect(@s.gov_control?).to be false
+ end
+
+ it 'control gov' do
+ @s.add :french_troops
+ expect(@s.fln_control?).to be false
+ expect(@s.uncontrolled?).to be false
+ expect(@s.gov_control?).to be true
+ end
+
+ it 'resettle' do
+ expect { @s.resettle! }.to raise_error(Exception)
+ @s.pop = 2
+ expect { @s.resettle! }.to raise_error(Exception)
+ @s.pop = 1
+ @s.resettle!
+ expect(@s.resettled?).to be true
+ expect(@s.pop).to eq 0
+ end
+end
+
+describe ColonialTwilight::City do
+ before do
+ @c = ColonialTwilight::City.new('Name', 'Wilaya', 'I', 0)
+ end
+
+ it 'is a City' do
+ expect(@c.sector?).to be false
+ expect(@c.city?).to be true
+ expect(@c.country?).to be false
+ end
+end
+
+describe ColonialTwilight::Country do
+ before do
+ @c = ColonialTwilight::Country.new('Name')
+ end
+
+ it 'is a Coutry' do
+ expect(@c.sector?).to be false
+ expect(@c.city?).to be false
+ expect(@c.country?).to be true
+ end
+
+ it 'independent' do
+ expect(@c.independent?).to be false
+ @c.independent!
+ expect(@c.independent?).to be true
+ end
+end