package game_test import ( "testing" "github.com/iliadenisov/galaxy/internal/model/game" "github.com/stretchr/testify/assert" ) func TestPlanetProduction(t *testing.T) { assert.Equal(t, 1000., game.PlanetProduction(1000., 1000.)) assert.Equal(t, 625., game.PlanetProduction(500., 1000.)) assert.Equal(t, 750., game.PlanetProduction(1000., 0.)) assert.Equal(t, 250., game.PlanetProduction(0., 1000.)) } func TestProduceIndustry(t *testing.T) { HW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 1000, Resources: 10, }, Population: 1000, Industry: 1000, }, } DW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 500, Resources: 10, }, Population: 500, Industry: 500, }, } HW.ProduceIndustry() assert.InDelta(t, 196.078, HW.Capital, 0.0005) HW.Capital = 0 HW.Material = 200 HW.ProduceIndustry() assert.Equal(t, 200., HW.Capital) assert.Equal(t, 0., HW.Material) DW.ProduceIndustry() assert.InDelta(t, 98.039, DW.Capital, 0.0003) DW.Capital = 0 DW.Material = 100 DW.ProduceIndustry() assert.Equal(t, 100., DW.Capital) assert.Equal(t, 0., DW.Material) } func TestProduceMaterial(t *testing.T) { HW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 1000, Resources: 10, }, Population: 1000, Industry: 1000, }, } assert.Equal(t, 0., HW.Material) HW.ProduceMaterial() assert.Equal(t, 10000., HW.Material) HW.Industry = 500 HW.Population = 500 HW.ProduceMaterial() assert.Equal(t, 15000., HW.Material) HW.Population = 1000 HW.ProduceMaterial() assert.Equal(t, 21250., HW.Material) } func TestUnpackCapital(t *testing.T) { HW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 1000, Resources: 10, }, Population: 1000, Industry: 1000, }, } assert.Equal(t, 0., HW.Capital) HW.UnpackCapital() assert.Equal(t, 1000., HW.Industry) assert.Equal(t, 0., HW.Capital) HW.Capital = 123. HW.UnpackCapital() assert.Equal(t, 1000., HW.Industry) assert.Equal(t, 123., HW.Capital) HW.Industry = 987. HW.UnpackCapital() assert.Equal(t, 1000., HW.Industry) assert.Equal(t, 110., HW.Capital) HW.Population = 876. HW.Industry = 800. HW.UnpackCapital() assert.Equal(t, 876., HW.Population) assert.Equal(t, 876., HW.Industry) assert.Equal(t, 34., HW.Capital) } func TestUnpackColonists(t *testing.T) { HW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 1000, Resources: 10, }, Population: 1000, Industry: 1000, }, } assert.Equal(t, 0., HW.Colonists) HW.UnpackColonists() assert.Equal(t, 1000., HW.Population) assert.Equal(t, 0., HW.Colonists) HW.Colonists = 1.05 HW.UnpackColonists() assert.Equal(t, 1000., HW.Population) assert.Equal(t, 1.05, HW.Colonists) HW.Population = 996.0 HW.UnpackColonists() assert.Equal(t, 1000., HW.Population) assert.Equal(t, 0.55, HW.Colonists) HW.Population = 0.0 HW.UnpackColonists() assert.Equal(t, 4.4, HW.Population) assert.Equal(t, 0., HW.Colonists) } func TestProducePopulation(t *testing.T) { HW := &game.Planet{ PlanetReport: game.PlanetReport{ UninhabitedPlanet: game.UninhabitedPlanet{ Size: 1000, Resources: 10, }, Population: 500, Industry: 1000, }, } assert.Equal(t, 500., HW.Population) assert.Equal(t, 0., HW.Colonists) HW.ProducePopulation() assert.Equal(t, 540., HW.Population) assert.Equal(t, 0., HW.Colonists) HW.Population = 1000. HW.ProducePopulation() assert.Equal(t, 1000., HW.Population) assert.Equal(t, 10., HW.Colonists) }