Finished testing and docs for now. Time for new features!

This commit is contained in:
2025-10-02 23:58:24 -06:00
parent 279658f3e5
commit b8f54b44a3
16 changed files with 316 additions and 66 deletions
+20 -16
View File
@@ -24,15 +24,15 @@ RSpec.describe Universe do
describe '#initialize' do
it 'stores all expected instance variables' do
expect(universe.name).to eq(name)
expect(universe.instance_variable_get(:@universe_size)).to eq(universe_size)
expect(universe.instance_variable_get(:@seed)).to eq(seed)
expect(universe.name).to eq name
expect(universe.instance_variable_get(:@universe_size)).to eq universe_size
expect(universe.instance_variable_get(:@seed)).to eq seed
end
it 'creates a deterministic Random object when a seed is given' do
rng = universe.instance_variable_get(:@random)
expect(rng).to be_a(Random)
expect(rng.rand(100)).to eq(Random.new(seed).rand(100))
expect(rng.rand(100)).to eq Random.new(seed).rand(100)
end
it 'initializes the random if no seed is passed in' do
@@ -50,12 +50,12 @@ RSpec.describe Universe do
it 'is symmetric' do
a = Position.new(0, 0)
b = Position.new(4, 2)
expect(universe.distance(a, b)).to eq(universe.distance(b, a))
expect(universe.distance(a, b)).to eq universe.distance(b, a)
end
it 'returns 0 when both points are identical' do
p = Position.new(1, 1)
expect(universe.distance(p, p)).to eq(0)
expect(universe.distance(p, p)).to eq 0
end
it 'correctly computes known hex distances' do
@@ -64,13 +64,13 @@ RSpec.describe Universe do
p2 = Position.new(4, 2)
p3 = Position.new(2, 2)
# (0,0) to (2,0) → 1
expect(universe.distance(p0, p1)).to eq(1)
expect(universe.distance(p0, p1)).to eq 1
# (0,0) to (4,2) → 3
expect(universe.distance(p0, p2)).to eq(3)
expect(universe.distance(p0, p2)).to eq 3
# (0,0) to (2,2) → 2
expect(universe.distance(p0, p3)).to eq(2)
expect(universe.distance(p0, p3)).to eq 2
end
end
end # describe '#distance'
describe '#map generation' do
it 'creates the expected dimensions' do
@@ -80,7 +80,7 @@ RSpec.describe Universe do
# (our stub) and every other entry is nil.
expect(map).to be_a(UniverseArray)
# Check how may nodes were created:
expect(map.flatten.compact.length).to eq(19) # 1 + 1*6 + 2*6
expect(map.flatten.compact.length).to eq 19 # 1 + 1*6 + 2*6
end
it 'contains a planet at every valid point when create_chances is 1' do
@@ -89,12 +89,16 @@ RSpec.describe Universe do
map.each do |row|
row.each do |idx|
# The indexes are allowed to be nil
if !idx.nil?
expect(idx).to be_a(Planet)
if idx.nil?
next # Is allowed to be nil
end
if idx.is_a? Star
next # Is allowed to be star
end
expect(idx).to be_a(Planet)
end
end
end
end # describe '#map generation'
it 'is deterministic when the same seed is used' do
first_universe = Universe.new(
@@ -113,7 +117,7 @@ RSpec.describe Universe do
)
second_map = second_universe.instance_variable_get(:@universe_map)
expect(first_map).to eq(second_map)
expect(first_map).to eq second_map
end
end
@@ -140,7 +144,7 @@ RSpec.describe Universe do
describe '#planets' do
it 'lists all of the generated planets' do
universe.create_universe
expect(universe.planets.length).to eq(19)
expect(universe.planets.length).to eq 18
end
end
end