use rust_decimal_macros::dec;

#[test]
fn accepts_integer() {
    assert_eq!(german_decimal::parse("1").unwrap(), dec!(1))
}

#[test]
fn accepts_decimals() {
    let parsed = german_decimal::parse("0,3").unwrap();
    assert_eq!(parsed, dec!(0.3))
}

#[test]
fn accepts_group_seperators() {
    let parsed = german_decimal::parse("2.500").unwrap();
    assert_eq!(parsed, dec!(2500))
}

#[test]
fn accepts_group_seperators_and_decimals() {
    let parsed = german_decimal::parse("2.500,12345").unwrap();
    assert_eq!(parsed, dec!(2500.12345))
}

#[test]
fn accepts_minus_sign() {
    assert_eq!(
        german_decimal::parse("-2.500,12345").unwrap(),
        dec!(-2500.12345)
    );
}

#[test]
fn accepts_plus_sign() {
    assert_eq!(
        german_decimal::parse("+2.500,12345").unwrap(),
        dec!(2500.12345)
    );
}

#[test]
fn rejects_empty_numbers() {
    german_decimal::parse("").unwrap_err();
}

#[test]
fn rejects_leading_separator() {
    german_decimal::parse(".500,12345").unwrap_err();
}

#[test]
fn rejects_only_decimal_separator() {
    german_decimal::parse(",").unwrap_err();
}

#[test]
fn rejects_only_plus_sign() {
    german_decimal::parse("+").unwrap_err();
}

#[test]
fn rejects_only_minus_sign() {
    german_decimal::parse("-").unwrap_err();
}

#[test]
fn rejects_interior_minus_sign() {
    german_decimal::parse("12-345").unwrap_err();
}

#[test]
fn rejects_interior_plus_sign() {
    german_decimal::parse("12+345").unwrap_err();
}

#[test]
fn rejects_letters() {
    german_decimal::parse("a").unwrap_err();
}

#[test]
fn rejects_symbols() {
    german_decimal::parse("_").unwrap_err();
}

#[test]
fn rejects_group_separators_in_decimals() {
    german_decimal::parse("2.500,123.456").unwrap_err();
}