impls undoable events
This commit is contained in:
@@ -22,7 +22,7 @@ fn unpack_gold_value(gold: f64) -> (i32, i32, i32, i32) {
|
||||
///
|
||||
/// Values are held as individual pieces counts.
|
||||
/// Allows conversion from and to a floating amount of gold pieces.
|
||||
#[derive(Queryable, AsChangeset, Serialize, Deserialize, Debug)]
|
||||
#[derive(Queryable, AsChangeset, Serialize, Deserialize, PartialEq, Copy, Clone, Debug)]
|
||||
#[table_name = "players"]
|
||||
pub struct Wealth {
|
||||
pub cp: i32,
|
||||
@@ -116,4 +116,52 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_negative_wealth() {
|
||||
use super::Wealth;
|
||||
|
||||
assert_eq!(
|
||||
Wealth{ cp: 3, sp: 2, gp: 1, pp: 0 } + Wealth{ cp: -8, pp: 0, sp: 0, gp: 0 },
|
||||
Wealth::from_gp(1.23 - 0.08)
|
||||
)
|
||||
|
||||
}
|
||||
#[test]
|
||||
fn test_negative_wealth_inverse() {
|
||||
use super::Wealth;
|
||||
|
||||
assert_eq!(
|
||||
(Wealth{ cp: 3, sp: 2, gp: 1, pp: 0 } + Wealth{ cp: -8, pp: 0, sp: 0, gp: 0 }).to_gp(),
|
||||
1.23 - 0.08
|
||||
)
|
||||
|
||||
}
|
||||
#[test]
|
||||
fn test_diff_adding() {
|
||||
use super::Wealth;
|
||||
|
||||
/// Let say we add 0.08 gp
|
||||
/// 1.23 + 0.08 gold is 1.31, diff is cp: -2, sp: +1
|
||||
let old = Wealth::from_gp(1.23);
|
||||
let new = Wealth::from_gp(1.31);
|
||||
let diff = new - old;
|
||||
assert_eq!(diff.as_tuple(), (-2, 1, 0, 0));
|
||||
assert_eq!(diff.to_gp(), 0.08);
|
||||
assert_eq!(new - diff, old);
|
||||
|
||||
}
|
||||
#[test]
|
||||
fn test_diff_subbing() {
|
||||
use super::Wealth;
|
||||
|
||||
/// Let say we sub 0.08 gp
|
||||
/// 1.31 - 0.08 gold is 1.23, diff is cp: +2, sp: -1
|
||||
let old = Wealth::from_gp(1.31);
|
||||
let new = Wealth::from_gp(1.23);
|
||||
let diff = new - old;
|
||||
assert_eq!(diff.as_tuple(), (2, -1, 0, 0));
|
||||
assert_eq!(diff.to_gp(), -0.08);
|
||||
assert_eq!(new - diff, old);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user