03-08-2019, 05:26 PM
(Modification du message : 03-08-2019, 10:49 PM par Sephi-Chan.)
Hm, ça n'apporte pas grand chose, du coup : ce n'est ni plus sexy, ni plus pratique.
Ça y est : j'ai terminé les fonction de la première itération ! Comme souvent, j'ai posté le code sur GitHub.
La seule gestion des convois a été un gros morceau avec 30 cas de test !
Les fonctionnalités sont là et testées, mais il y a quand même encore un peu de travail pour se servir du code en dehors de tests, notamment sur l'arrivée des convois à destination, et les ticks de récolte des ressources.
Pour ces deux fonctionnalités, je vais utiliser un outil de tâches différées/récurrentes : il se trouve que Commanded en propose un (Commanded Scheduler), qui s'intègre bien dans son architecture event sourcée. Il faut donc que je l'intègre, lui et sa dépendance… PostgreSQL. On ne peut pas dire que ce soit une petite dépendance, mais une base de données relationnelle sera de toute façon précieuse pour implémenter les read models.
Ça y est : j'ai terminé les fonction de la première itération ! Comme souvent, j'ai posté le code sur GitHub.
La seule gestion des convois a été un gros morceau avec 30 cas de test !
Citation :ConvoysTest
* test Nonexistent convoy can't be disbanded (33.3ms)
* test Unit can't join a nonexistent convoy (3.4ms)
* test Convoy ID must be unique (3.4ms)
* test Convoy can only start to neighbour territories (3.4ms)
* test Unit can't join a convoy twice (1.1ms)
* test Convoy starts at the speed of its slowest unit and can't be started anymore (9.7ms)
* test Nonexistent convoy can't be unloaded (0.7ms)
* test Unit leaves the convoy and becomes available again (6.6ms)
* test Convoy is prepared on a territory (1.3ms)
* test Nonexistent unit can't leave the convoy (0.7ms)
* test Convoy is unloaded upon arrival and convoy is disbanded (9.3ms)
* test Convoy can't go to nonexistent territory (1.0ms)
* test Departed convoys can't be disbanded (1.8ms)
* test Unit can't leave a nonexistent convoy (0.9ms)
* test Convoy need at least one unit to start (0.7ms)
* test Loaded resources are moved from the territory to the convoy (1.0ms)
* test Unit can't join a convoy from another territory (1.2ms)
* test Resources of a disbanded are unloaded and units are returned (4.5ms)
* test Nonexistent unit can't join a convoy (0.7ms)
* test Only loaded resources can be unloaded from the convoy (0.8ms)
* test Unit can only leave the convoy if it belongs to it (0.9ms)
* test Nonexistent convoy can't start (0.6ms)
* test Unit can't join convoy while exploiting (1.0ms)
* test Nonexistent convoy can't be loaded with resources (0.5ms)
* test Unit joins the convoy and is no longer available for exploitation (1.6ms)
* test Convoy can't be prepared on a nonexistent territory (0.8ms)
* test Convoy can't be loaded if resources are missing (0.7ms)
* test Unloaded resources are moved from the convoy to the territory (4.3ms)
DepositsExploitationTest
* test Unit can't be sent again if already exploiting (1.0ms)
* test Unit can't exploit a nonexistent deposit (0.7ms)
* test Nonexistent unit can't exploit a deposit (0.8ms)
* test Unit starts exploiting the deposit (1.4ms)
* test Unit can't exploit a deposit from a distant area (0.7ms)
* test Stopping exploitation bring some resources back to the territory (4.5ms)
* test Exploitation ticks make units bring some resources back to their territory (5.2ms)
ResourcesQuantityTest
* test Resources quantities can be added (0.01ms)
* test Resources quantities can be substracted (0.01ms)
* test Resources comparision (0.03ms)
UnitsDeploymentTest
* test Unit can't be deployed on a nonexistent territory (0.7ms)
* test Unit ID must be unique (0.7ms)
* test Deploys a starting unit to a territory (0.9ms)
SeeliesTest
* test Game can be started (0.5ms)
* test Resources can be added to a territory (0.7ms)
Finished in 0.5 seconds
43 tests, 0 failures
Les fonctionnalités sont là et testées, mais il y a quand même encore un peu de travail pour se servir du code en dehors de tests, notamment sur l'arrivée des convois à destination, et les ticks de récolte des ressources.
Pour ces deux fonctionnalités, je vais utiliser un outil de tâches différées/récurrentes : il se trouve que Commanded en propose un (Commanded Scheduler), qui s'intègre bien dans son architecture event sourcée. Il faut donc que je l'intègre, lui et sa dépendance… PostgreSQL. On ne peut pas dire que ce soit une petite dépendance, mais une base de données relationnelle sera de toute façon précieuse pour implémenter les read models.