d9c8de27e5
* refactor: executors and routers
154 lines
4.2 KiB
Go
154 lines
4.2 KiB
Go
package controller_test
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/iliadenisov/galaxy/internal/controller"
|
|
"github.com/iliadenisov/galaxy/internal/model/game"
|
|
)
|
|
|
|
var (
|
|
Race_0 = game.Race{
|
|
ID: Race_0_ID,
|
|
VoteFor: Race_0_ID,
|
|
Name: "Race_0",
|
|
TTL: 10,
|
|
Tech: map[game.Tech]game.Float{
|
|
game.TechDrive: 1.1,
|
|
game.TechWeapons: 1.2,
|
|
game.TechShields: 1.3,
|
|
game.TechCargo: 1.4,
|
|
},
|
|
Relations: []game.RaceRelation{
|
|
{RaceID: Race_1_ID, Relation: game.RelationWar},
|
|
{RaceID: Race_2_ID, Relation: game.RelationWar},
|
|
},
|
|
}
|
|
Race_1 = game.Race{
|
|
ID: Race_1_ID,
|
|
VoteFor: Race_1_ID,
|
|
Name: "Race_1",
|
|
TTL: 10,
|
|
Tech: map[game.Tech]game.Float{
|
|
game.TechDrive: 2.1,
|
|
game.TechWeapons: 2.2,
|
|
game.TechShields: 2.3,
|
|
game.TechCargo: 2.4,
|
|
},
|
|
Relations: []game.RaceRelation{
|
|
{RaceID: Race_0_ID, Relation: game.RelationPeace},
|
|
{RaceID: Race_2_ID, Relation: game.RelationPeace},
|
|
},
|
|
}
|
|
Race_Extinct = game.Race{
|
|
ID: Race_2_ID,
|
|
VoteFor: Race_2_ID,
|
|
Name: "Race_Extinct",
|
|
Extinct: true,
|
|
TTL: 0,
|
|
Tech: map[game.Tech]game.Float{
|
|
game.TechDrive: 3.1,
|
|
game.TechWeapons: 3.2,
|
|
game.TechShields: 3.3,
|
|
game.TechCargo: 3.4,
|
|
},
|
|
Relations: []game.RaceRelation{
|
|
{RaceID: Race_0_ID, Relation: game.RelationPeace},
|
|
{RaceID: Race_1_ID, Relation: game.RelationWar},
|
|
},
|
|
}
|
|
|
|
Race_0_ID = uuid.New()
|
|
Race_0_idx = 0
|
|
Race_0_Gunship = "R0_Gunship"
|
|
Race_0_Freighter = "R0_Freighter"
|
|
R0_Planet_0_num uint = 0
|
|
R0_Planet_2_num uint = 2
|
|
Race_0_Gunship_idx = 0
|
|
Race_0_Freighter_idx = 1
|
|
Race_0_Cruiser_idx = 2
|
|
|
|
Race_1_ID = uuid.New()
|
|
Race_1_idx = 1
|
|
Race_1_Gunship = "R1_Gunship"
|
|
Race_1_Freighter = "R1_Freighter"
|
|
R1_Planet_1_num uint = 1
|
|
Race_1_Gunship_idx = 0
|
|
Race_1_Freighter_idx = 1
|
|
Race_1_Cruiser_idx = 2
|
|
|
|
Race_2_ID = uuid.New()
|
|
|
|
Uninhabited_Planet_3_num uint = 3
|
|
Uninhabited_Planet_4_num uint = 4
|
|
|
|
ShipType_Cruiser = "Cruiser"
|
|
|
|
Cruiser = game.ShipType{
|
|
Name: "Cruiser",
|
|
Drive: 15,
|
|
Armament: 1,
|
|
Weapons: 15,
|
|
Shields: 15,
|
|
Cargo: 0,
|
|
}
|
|
|
|
BadEntityName = "Bad(entitty)Name"
|
|
UnknownRace = "UnknownRace"
|
|
|
|
InSpace = game.InSpace{Origin: 2, X: floatRef(1.23), Y: floatRef(1.23)}
|
|
)
|
|
|
|
func assertNoError(err error) {
|
|
if err != nil {
|
|
panic(fmt.Sprintf("init assertion failed: %v", err))
|
|
}
|
|
}
|
|
|
|
func newGame() *game.Game {
|
|
g := &game.Game{
|
|
Race: []game.Race{
|
|
Race_0,
|
|
Race_1,
|
|
Race_Extinct,
|
|
},
|
|
Map: game.Map{
|
|
Width: 1000,
|
|
Height: 1000,
|
|
Planet: []game.Planet{
|
|
controller.NewPlanet(R0_Planet_0_num, "Planet_0", &Race_0.ID, 1, 1, 100, 100, 100, 0, game.ProductionCapital.AsType(uuid.Nil)),
|
|
controller.NewPlanet(R1_Planet_1_num, "Planet_1", &Race_1.ID, 2, 2, 100, 0, 0, 0, game.ProductionCapital.AsType(uuid.Nil)),
|
|
controller.NewPlanet(R0_Planet_2_num, "Planet_2", &Race_0.ID, 3, 3, 100, 0, 0, 0, game.ProductionCapital.AsType(uuid.Nil)),
|
|
controller.NewPlanet(Uninhabited_Planet_3_num, "Planet_3", &uuid.Nil, 500, 500, 100, 0, 0, 0, game.ProductionNone.AsType(uuid.Nil)),
|
|
controller.NewPlanet(Uninhabited_Planet_4_num, "Planet_4", nil, 10, 10, 500, 0, 0, 10, game.ProductionNone.AsType(uuid.Nil)),
|
|
},
|
|
},
|
|
}
|
|
return g
|
|
}
|
|
|
|
func newCache() (*controller.Cache, *controller.Controller) {
|
|
ctl := controller.NewGameController(newGame())
|
|
// g := newGame()
|
|
// c := controller.NewCache(g)
|
|
c := ctl.Cache
|
|
assertNoError(c.CreateShipType(Race_0_idx, Race_0_Gunship, 60, 3, 30, 100, 0))
|
|
assertNoError(c.CreateShipType(Race_0_idx, Race_0_Freighter, 8, 0, 0, 2, 10))
|
|
assertNoError(c.CreateShipType(Race_0_idx, ShipType_Cruiser, Cruiser.Drive.F(), int(Cruiser.Armament), Cruiser.Weapons.F(), Cruiser.Shields.F(), Cruiser.Cargo.F()))
|
|
|
|
assertNoError(c.CreateShipType(Race_1_idx, Race_1_Gunship, 60, 3, 30, 100, 0))
|
|
assertNoError(c.CreateShipType(Race_1_idx, Race_1_Freighter, 8, 0, 0, 2, 10))
|
|
assertNoError(c.CreateShipType(Race_1_idx, ShipType_Cruiser, 15, 2, 15, 15, 0)) // same name - different type (why.)
|
|
|
|
// ctl := controller.NewRepoController(nil)
|
|
// ctl.Cache = c
|
|
|
|
return c, ctl
|
|
}
|
|
|
|
func floatRef(v float64) *game.Float {
|
|
f := game.Float(v)
|
|
return &f
|
|
}
|