Persitence now tracks spent_exp as an additional point to potentially invalidate skills.

This commit is contained in:
Sam
2021-11-14 14:58:29 -05:00
parent c8675eaf45
commit 903c57b862
5 changed files with 26 additions and 80 deletions

View File

@ -476,71 +476,3 @@ pub enum SpRewardError {
InsufficientExp,
UnavailableSkillGroup,
}
#[cfg(test)]
mod tests {
use super::*;
// Code reviewers: Open a comment here, I want to refactor these tests
#[test]
fn test_refund_skill() {
let mut skillset = SkillSet::default();
skillset.unlock_skill_group(SkillGroupKind::Weapon(ToolKind::Axe));
skillset.add_skill_points(SkillGroupKind::Weapon(ToolKind::Axe), 1);
skillset.unlock_skill(Skill::Axe(AxeSkill::UnlockLeap));
assert_eq!(skillset.skill_groups[2].available_sp, 0);
assert_eq!(skillset.skills.len(), 1);
assert!(skillset.has_skill(Skill::Axe(AxeSkill::UnlockLeap)));
skillset.refund_skill(Skill::Axe(AxeSkill::UnlockLeap));
assert_eq!(skillset.skill_groups[2].available_sp, 1);
assert_eq!(skillset.skills.get(&Skill::Axe(AxeSkill::UnlockLeap)), None);
}
#[test]
fn test_unlock_skillgroup() {
let mut skillset = SkillSet::default();
skillset.unlock_skill_group(SkillGroupKind::Weapon(ToolKind::Axe));
assert_eq!(skillset.skill_groups.len(), 3);
assert_eq!(
skillset.skill_groups[2],
SkillGroup::new(SkillGroupKind::Weapon(ToolKind::Axe))
);
}
#[test]
fn test_unlock_skill() {
let mut skillset = SkillSet::default();
skillset.unlock_skill_group(SkillGroupKind::Weapon(ToolKind::Axe));
skillset.add_skill_points(SkillGroupKind::Weapon(ToolKind::Axe), 1);
assert_eq!(skillset.skill_groups[2].available_sp, 1);
assert_eq!(skillset.skills.len(), 0);
// Try unlocking a skill with enough skill points
skillset.unlock_skill(Skill::Axe(AxeSkill::UnlockLeap));
assert_eq!(skillset.skill_groups[2].available_sp, 0);
assert_eq!(skillset.skills.len(), 1);
assert!(skillset.has_skill(Skill::Axe(AxeSkill::UnlockLeap)));
// Try unlocking a skill without enough skill points
skillset.unlock_skill(Skill::Axe(AxeSkill::DsCombo));
assert_eq!(skillset.skills.len(), 1);
assert_eq!(skillset.skills.get(&Skill::Axe(AxeSkill::DsCombo)), None);
}
#[test]
fn test_add_skill_points() {
let mut skillset = SkillSet::default();
skillset.unlock_skill_group(SkillGroupKind::Weapon(ToolKind::Axe));
skillset.add_skill_points(SkillGroupKind::Weapon(ToolKind::Axe), 1);
assert_eq!(skillset.skill_groups[2].available_sp, 1);
}
}