Skip to main content

wowlab_engine_domain/dbc/
test_support.rs

1//! Reusable DBC fixtures for passive-effect tests.
2
3use wowlab_types::data::{SpellDataFlat, SpellEffect};
4
5const CLASS_SET: i32 = 11;
6const LABEL: i32 = 4_013;
7
8#[must_use]
9pub fn masked_effect(aura: i32, misc_value_0: i32, base_points: f64) -> SpellEffect {
10    SpellEffect {
11        aura,
12        misc_value_0,
13        base_points,
14        effect_class_mask_1: 1,
15        ..Default::default()
16    }
17}
18
19#[must_use]
20pub fn label_effect(aura: i32, misc_value_0: i32, base_points: f64) -> SpellEffect {
21    SpellEffect {
22        aura,
23        misc_value_0,
24        base_points,
25        misc_value_1: LABEL,
26        ..Default::default()
27    }
28}
29
30#[must_use]
31pub fn passive(effects: Vec<SpellEffect>) -> SpellDataFlat {
32    SpellDataFlat {
33        is_passive: true,
34        spell_class_set: CLASS_SET,
35        effects,
36        ..Default::default()
37    }
38}
39
40#[cfg(test)]
41mod tests {
42    use googletest::prelude::*;
43
44    use super::*;
45
46    #[gtest]
47    fn masked_effect_sets_class_mask() -> Result<()> {
48        let effect = masked_effect(1, 2, 3.0);
49
50        verify_that!(effect.effect_class_mask_1, eq(1))?;
51
52        verify_that!(effect.base_points, near(3.0, 1e-9))
53    }
54
55    #[gtest]
56    fn label_effect_sets_fixture_label() -> Result<()> {
57        verify_that!(label_effect(1, 2, 3.0).misc_value_1, eq(LABEL))
58    }
59
60    #[gtest]
61    fn passive_sets_fixture_class() -> Result<()> {
62        let spell = passive(vec![SpellEffect::default()]);
63
64        verify_that!(spell.is_passive, eq(true))?;
65        verify_that!(spell.spell_class_set, eq(CLASS_SET))?;
66
67        verify_that!(spell.effects, len(eq(1)))
68    }
69}