role-playing-game
This commit is contained in:
70
role-playing-game/test/role_playing_game_test.gleam
Normal file
70
role-playing-game/test/role_playing_game_test.gleam
Normal file
@@ -0,0 +1,70 @@
|
||||
import exercism/should
|
||||
import exercism/test_runner
|
||||
import gleam/option.{None, Some}
|
||||
import role_playing_game.{Player}
|
||||
|
||||
pub fn main() {
|
||||
test_runner.main()
|
||||
}
|
||||
|
||||
pub fn introduce_someone_with_their_name_test() {
|
||||
Player(name: Some("Gandalf"), level: 1, health: 42, mana: None)
|
||||
|> role_playing_game.introduce
|
||||
|> should.equal("Gandalf")
|
||||
}
|
||||
|
||||
pub fn introducing_an_unidentified_player_should_return_mighty_magician_test() {
|
||||
Player(name: None, level: 1, health: 42, mana: None)
|
||||
|> role_playing_game.introduce
|
||||
|> should.equal("Mighty Magician")
|
||||
}
|
||||
|
||||
pub fn revive_a_player_that_is_alive_should_return_none_test() {
|
||||
Player(name: None, level: 12, health: 42, mana: Some(7))
|
||||
|> role_playing_game.revive
|
||||
|> should.equal(None)
|
||||
}
|
||||
|
||||
pub fn reviving_a_low_level_player_resets_its_health_to_100_test() {
|
||||
Player(name: None, level: 3, health: 0, mana: None)
|
||||
|> role_playing_game.revive
|
||||
|> should.equal(Some(Player(name: None, level: 3, health: 100, mana: None)))
|
||||
}
|
||||
|
||||
pub fn reviving_a_high_level_player_resets_both_its_health_and_mana_test() {
|
||||
Player(name: None, level: 10, health: 0, mana: Some(14))
|
||||
|> role_playing_game.revive
|
||||
|> should.equal(
|
||||
Some(Player(name: None, level: 10, health: 100, mana: Some(100))),
|
||||
)
|
||||
}
|
||||
|
||||
pub fn cast_spell_causes_damage_of_double_the_mana_test() {
|
||||
Player(name: None, level: 10, health: 69, mana: Some(20))
|
||||
|> role_playing_game.cast_spell(9)
|
||||
|> should.equal(#(
|
||||
Player(name: None, level: 10, health: 69, mana: Some(11)),
|
||||
18,
|
||||
))
|
||||
}
|
||||
|
||||
pub fn casting_a_spell_with_insufficient_mana_does_none_test() {
|
||||
Player(name: None, level: 10, health: 69, mana: Some(20))
|
||||
|> role_playing_game.cast_spell(39)
|
||||
|> should.equal(#(
|
||||
Player(name: None, level: 10, health: 69, mana: Some(20)),
|
||||
0,
|
||||
))
|
||||
}
|
||||
|
||||
pub fn casting_a_spell_without_a_mana_pool_decreases_the_players_health_test() {
|
||||
Player(name: None, level: 5, health: 58, mana: None)
|
||||
|> role_playing_game.cast_spell(7)
|
||||
|> should.equal(#(Player(name: None, level: 5, health: 51, mana: None), 0))
|
||||
}
|
||||
|
||||
pub fn a_players_health_cannot_go_below_0_test() {
|
||||
Player(name: None, level: 5, health: 6, mana: None)
|
||||
|> role_playing_game.cast_spell(12)
|
||||
|> should.equal(#(Player(name: None, level: 5, health: 0, mana: None), 0))
|
||||
}
|
||||
Reference in New Issue
Block a user