test: Initial unit testing

- Test quests vector loading
- Test default quest on empty fields
- Test correct quest
- Fixed config paths handling
This commit is contained in:
Alexey 2025-11-28 17:00:17 +03:00
commit 94d771107d
7 changed files with 102 additions and 15 deletions

View file

@ -8,7 +8,7 @@ use serde::{ Serialize, Deserialize };
use error::QuestError;
/// Difficulty of the quest
#[derive(Serialize, Deserialize)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
pub enum QuestDifficulty {
/// Easy quest
Easy,
@ -39,33 +39,41 @@ fn default_answer() -> String {
}
/// Quest struct
#[derive(Serialize, Deserialize)]
#[derive(Serialize, Deserialize, Debug, PartialEq)]
#[serde(default)]
pub struct Quest {
/// Quest identifier
#[serde(default)]
pub id: u16,
/// Difficulty of this quest
#[serde(default)]
pub difficulty: QuestDifficulty,
/// Reward for the quest
#[serde(default)]
pub reward: u32,
/// Visible quest name
#[serde(default = "default_name")]
pub name: String,
/// Visible quest description
#[serde(default = "default_description")]
pub description: String,
/// Quest answer, available for admins
#[serde(default = "default_answer")]
pub answer: String,
}
impl Default for Quest {
fn default() -> Self {
Quest {
id: u16::default(),
difficulty: QuestDifficulty::default(),
reward: u32::default(),
name: default_name(),
description: default_description(),
answer: default_answer()
}
}
}
impl Quest {
/// Parse quest TOML or return error
pub fn load(path: PathBuf) -> Result<Self, QuestError> {