arnaucube
arnaucube/gogame-oldPublic Self-hosted repository
gogame-old/models/calc_test.go
models/calc_test.goRaw
  1package models
  2
  3import (
  4	"testing"
  5
  6	"github.com/arnaucube/gogame/constants"
  7	"github.com/stretchr/testify/assert"
  8)
  9
 10func TestGrowth(t *testing.T) {
 11	// metal
 12	assert.Equal(t, int64(33), MetalGrowth(1, 60)/constants.MineVelocity)
 13	assert.Equal(t, int64(66), MetalGrowth(1, 120)/constants.MineVelocity)
 14	assert.Equal(t, int64(72), MetalGrowth(2, 60)/constants.MineVelocity)
 15
 16	// crystal
 17	assert.Equal(t, int64(22), CrystalGrowth(1, 60)/constants.MineVelocity)
 18	assert.Equal(t, int64(44), CrystalGrowth(1, 120)/constants.MineVelocity)
 19	assert.Equal(t, int64(48), CrystalGrowth(2, 60)/constants.MineVelocity)
 20
 21	// deuterium
 22	assert.Equal(t, int64(8), DeuteriumGrowth(1, 60)/constants.MineVelocity)
 23	assert.Equal(t, int64(17), DeuteriumGrowth(1, 120)/constants.MineVelocity)
 24	assert.Equal(t, int64(19), DeuteriumGrowth(2, 60)/constants.MineVelocity)
 25
 26	// solar
 27	assert.Equal(t, int64(22), SolarGrowth(1, 60)/constants.MineVelocity)
 28	assert.Equal(t, int64(44), SolarGrowth(1, 120)/constants.MineVelocity)
 29	assert.Equal(t, int64(48), SolarGrowth(2, 60)/constants.MineVelocity)
 30
 31	// fusion
 32	assert.Equal(t, int64(31), FusionGrowth(1, 1, 60)/constants.MineVelocity)
 33	assert.Equal(t, int64(63), FusionGrowth(1, 1, 120)/constants.MineVelocity)
 34	assert.Equal(t, int64(34), FusionGrowth(2, 2, 60)/constants.MineVelocity)
 35}
 36
 37func TestMineCost(t *testing.T) {
 38	// metalmine
 39	assert.Equal(t, Resources{Metal: 60, Crystal: 15}, MetalMineCost(1))
 40	assert.Equal(t, Resources{Metal: 90, Crystal: 22}, MetalMineCost(2))
 41	assert.Equal(t, Resources{Metal: 17515, Crystal: 4378}, MetalMineCost(15))
 42
 43	// crystalmine
 44	assert.Equal(t, Resources{Metal: 48, Crystal: 24}, CrystalMineCost(1))
 45	assert.Equal(t, Resources{Metal: 76, Crystal: 38}, CrystalMineCost(2))
 46	assert.Equal(t, Resources{Metal: 34587, Crystal: 17293}, CrystalMineCost(15))
 47
 48	// deuteriummine
 49	assert.Equal(t, Resources{Metal: 225, Crystal: 75}, DeuteriumMineCost(1))
 50	assert.Equal(t, Resources{Metal: 337, Crystal: 112}, DeuteriumMineCost(2))
 51	assert.Equal(t, Resources{Metal: 65684, Crystal: 21894}, DeuteriumMineCost(15))
 52
 53	// energymine
 54	assert.Equal(t, Resources{Metal: 75, Crystal: 30}, EnergyMineCost(1))
 55	assert.Equal(t, Resources{Metal: 112, Crystal: 45}, EnergyMineCost(2))
 56	assert.Equal(t, Resources{Metal: 21894, Crystal: 8757}, EnergyMineCost(15))
 57
 58	// FussionReactorCost
 59	assert.Equal(t, Resources{Metal: 900, Crystal: 360, Deuterium: 180}, FussionReactorCost(1))
 60	assert.Equal(t, Resources{Metal: 1620, Crystal: 648, Deuterium: 324}, FussionReactorCost(2))
 61	assert.Equal(t, Resources{Metal: 3373320, Crystal: 1349328, Deuterium: 674664}, FussionReactorCost(15))
 62
 63	// roboticsfactory
 64	assert.Equal(t, Resources{Metal: 400, Crystal: 120, Deuterium: 200}, RoboticsFactoryCost(1))
 65	assert.Equal(t, Resources{Metal: 800, Crystal: 240, Deuterium: 400}, RoboticsFactoryCost(2))
 66	assert.Equal(t, Resources{Metal: 6553600, Crystal: 1966080, Deuterium: 3276800}, RoboticsFactoryCost(15))
 67
 68	// shipyard
 69	assert.Equal(t, Resources{Metal: 400, Crystal: 200, Deuterium: 100}, ShipyardCost(1))
 70	assert.Equal(t, Resources{Metal: 800, Crystal: 400, Deuterium: 200}, ShipyardCost(2))
 71	assert.Equal(t, Resources{Metal: 6553600, Crystal: 3276800, Deuterium: 1638400}, ShipyardCost(15))
 72
 73	// metalstorage
 74	assert.Equal(t, Resources{Metal: 1000}, MetalStorageCost(1))
 75	assert.Equal(t, Resources{Metal: 2000}, MetalStorageCost(2))
 76	assert.Equal(t, Resources{Metal: 16384000}, MetalStorageCost(15))
 77
 78	// crystalstorage
 79	assert.Equal(t, Resources{Metal: 1000, Crystal: 500}, CrystalStorageCost(1))
 80	assert.Equal(t, Resources{Metal: 2000, Crystal: 1000}, CrystalStorageCost(2))
 81	assert.Equal(t, Resources{Metal: 16384000, Crystal: 8192000}, CrystalStorageCost(15))
 82
 83	// deuteriumstorage
 84	assert.Equal(t, Resources{Metal: 1000, Crystal: 1000}, DeuteriumStorageCost(1))
 85	assert.Equal(t, Resources{Metal: 2000, Crystal: 2000}, DeuteriumStorageCost(2))
 86	assert.Equal(t, Resources{Metal: 16384000, Crystal: 16384000}, DeuteriumStorageCost(15))
 87
 88	// researchlab
 89	assert.Equal(t, Resources{Metal: 200, Crystal: 400, Deuterium: 200}, RessearchLabCost(1))
 90	assert.Equal(t, Resources{Metal: 400, Crystal: 800, Deuterium: 400}, RessearchLabCost(2))
 91	assert.Equal(t, Resources{Metal: 3276800, Crystal: 6553600, Deuterium: 3276800}, RessearchLabCost(15))
 92
 93	// alliancedepot
 94	assert.Equal(t, Resources{Metal: 20000, Crystal: 40000}, AllianceDepotCost(1))
 95	assert.Equal(t, Resources{Metal: 40000, Crystal: 80000}, AllianceDepotCost(2))
 96	assert.Equal(t, Resources{Metal: 327680000, Crystal: 655360000}, AllianceDepotCost(15))
 97
 98	// missilesilo
 99	assert.Equal(t, Resources{Metal: 20000, Crystal: 20000, Deuterium: 1000}, MissileSiloCost(1))
100	assert.Equal(t, Resources{Metal: 40000, Crystal: 40000, Deuterium: 2000}, MissileSiloCost(2))
101	assert.Equal(t, Resources{Metal: 327680000, Crystal: 327680000, Deuterium: 16384000}, MissileSiloCost(15))
102
103	// spacedock
104	assert.Equal(t, Resources{Metal: 20000, Crystal: 20000, Deuterium: 1000}, SpaceDockCost(1))
105	assert.Equal(t, Resources{Metal: 40000, Crystal: 40000, Deuterium: 2000}, SpaceDockCost(2))
106	assert.Equal(t, Resources{Metal: 327680000, Crystal: 327680000, Deuterium: 16384000}, SpaceDockCost(15))
107}
108
109func TestConstructionTime(t *testing.T) {
110	// Numbers of the online calculators
111	// assert.Equal(t, int64(30), ConstructionTime(Resources{Metal: 60, Crystal: 15}, 1))
112	// assert.Equal(t, int64(53), ConstructionTime(Resources{Metal: 90, Crystal: 22}, 1))
113	// assert.Equal(t, int64(96), ConstructionTime(Resources{Metal: 135, Crystal: 33}, 1))
114	// assert.Equal(t, int64(383340), ConstructionTime(Resources{Metal: 204800, Crystal: 61440}, 10))
115
116	// Numbers following the formulas
117	assert.Equal(t, int64(27), ConstructionTime(Resources{Metal: 60, Crystal: 15}, 1))
118	assert.Equal(t, int64(40), ConstructionTime(Resources{Metal: 90, Crystal: 22}, 1))
119	assert.Equal(t, int64(60), ConstructionTime(Resources{Metal: 135, Crystal: 33}, 1))
120	assert.Equal(t, int64(17426), ConstructionTime(Resources{Metal: 204800, Crystal: 61440}, 10))
121}
122func TestRessearchTime(t *testing.T) {
123	assert.Equal(t, int64(1440), RessearchTime(Resources{Metal: 0, Crystal: 800}, 1))
124	assert.Equal(t, int64(5236), RessearchTime(Resources{Metal: 12800, Crystal: 3200}, 10))
125
126	// Numbers of the online calculators
127	// assert.Equal(t, int64(2880), RessearchTime(Resources{Metal: 12800, Crystal: 6400}, 15))
128	// assert.Equal(t, int64(360), RessearchTime(Resources{Metal: 1600, Crystal: 800}, 15))
129}