for &value in tests { let value = extract(value); let pg = PgNumeric::from(value); let dec = Decimal::try_from(pg).unwrap();
assert_eq!(dec, value);
}
}
let decimal = Decimal::from_str("-123.456").unwrap(); let expected = PgNumeric::Negative {
weight: 0,
scale: 3,
digits: vec![123, 4560],
};
assert_eq!(expected, decimal.into());
}
#[test] fn pg_numeric_to_decimal_works() { let expected = Decimal::from_str("50").unwrap(); let pg_numeric = PgNumeric::Positive {
weight: 0,
scale: 0,
digits: vec![50],
}; let res: Decimal = pg_numeric.try_into().unwrap();
assert_eq!(res, expected); let expected = Decimal::from_str("123.456").unwrap(); let pg_numeric = PgNumeric::Positive {
weight: 0,
scale: 3,
digits: vec![123, 4560],
}; let res: Decimal = pg_numeric.try_into().unwrap();
assert_eq!(res, expected);
let expected = Decimal::from_str("-56.78").unwrap(); let pg_numeric = PgNumeric::Negative {
weight: 0,
scale: 2,
digits: vec![56, 7800],
}; let res: Decimal = pg_numeric.try_into().unwrap();
assert_eq!(res, expected);
// Verify no trailing zeroes are lost.
let expected = Decimal::from_str("1.100").unwrap(); let pg_numeric = PgNumeric::Positive {
weight: 0,
scale: 3,
digits: vec![1, 1000],
}; let res: Decimal = pg_numeric.try_into().unwrap();
assert_eq!(res.to_string(), expected.to_string());
// To represent 5.00, Postgres can return either [5, 0] as the list of digits. let expected = Decimal::from_str("5.00").unwrap(); let pg_numeric = PgNumeric::Positive {
weight: 0,
scale: 2,
// To represent 5.00, Postgres can return [5] as the list of digits. let expected = Decimal::from_str("5.00").unwrap(); let pg_numeric = PgNumeric::Positive {
weight: 0,
scale: 2,
digits: vec![5],
}; let res: Decimal = pg_numeric.try_into().unwrap();
assert_eq!(res.to_string(), expected.to_string());
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.