bank-barcode 0.2.0

Generate Finnish virtual bank barcodes
Documentation
use time::{Date, Month};

use crate::{Barcode, BarcodeBuilder, BarcodeVersion};

#[test]
fn v4_1() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI79 4405 2020 0360 82")
        .euros(4883)
        .cents(15)
        .reference("868516259619897")
        .due_date(Date::from_calendar_date(2010, Month::June, 12).unwrap())
        .build()
        .unwrap();

    assert_eq!(
        "479440520200360820048831500000000868516259619897100612",
        code.to_string(),
    );
}

#[test]
fn v4_2() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI58 1017 1000 0001 22")
        .sum(48299)
        .reference("559582243294671")
        .due_date(Date::from_calendar_date(2012, Month::January, 31).unwrap())
        .build()
        .unwrap();

    assert_eq!(
        "458101710000001220004829900000000559582243294671120131",
        code.to_string(),
    );
}

#[test]
fn v4_3() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI02 5000 4640 0013 02")
        .sum(69380)
        .reference("69875672083435364")
        .due_date(Date::from_calendar_date(2011, Month::July, 24).unwrap())
        .build()
        .unwrap();

    assert_eq!(
        "402500046400013020006938000000069875672083435364110724",
        code.to_string(),
    );
}

#[test]
fn v4_4() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI15 6601 0001 5306 41")
        .euros(7444)
        .cents(54)
        .reference("7758474790647489")
        .due_date(Date::from_calendar_date(2019, Month::December, 19).unwrap())
        .build()
        .unwrap();

    assert_eq!(
        "415660100015306410074445400000007758474790647489191219",
        code.to_string(),
    );
}

#[test]
fn v4_5() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI16 8000 1400 0502 67")
        .euros(935)
        .cents(85)
        .reference("78777679656628687")
        .build()
        .unwrap();

    assert_eq!(
        "416800014000502670009358500000078777679656628687000000",
        code.to_string(),
    );
}

#[test]
fn v4_6() {
    let code = Barcode::builder()
        .version(BarcodeVersion::V4)
        .account_number("FI73 3131 3001 0000 58")
        .reference("868624")
        .due_date(Date::from_calendar_date(2013, Month::August, 9).unwrap())
        .build()
        .unwrap();

    assert_eq!(
        "473313130010000580000000000000000000000000868624130809",
        code.to_string(),
    );
}

#[test]
fn v4_7() {
    let code = BarcodeBuilder::v4()
        .account_number("FI83 3301 0001 1007 75")
        .reference("92125374252539897737")
        .calendar_due_date(2016, 5, 25)
        .sum(15_000_020)
        .build()
        .unwrap();

    assert_eq!(
        "483330100011007751500002000092125374252539897737160525",
        code.to_string(),
    );
}

#[test]
fn v4_8() {
    let code = BarcodeBuilder::v4()
        .account_number("FI39 3636 3002 0924 92")
        .sum(103)
        .calendar_due_date(2023, 3, 11)
        .reference("590738390")
        .build()
        .unwrap();

    assert_eq!(
        "439363630020924920000010300000000000000590738390230311",
        code.to_string(),
    );
}

#[test]
fn v4_9() {
    let code = BarcodeBuilder::v4()
        .account_number("FI92 3939 0001 0033 91")
        .cents(2)
        .reference("1357914")
        .calendar_due_date(2099, 12, 24)
        .build()
        .unwrap();

    assert_eq!(
        "492393900010033910000000200000000000000001357914991224",
        code.to_string(),
    );
}

#[test]
fn v5_1() {
    let code = Barcode::builder()
        .account_number("FI79 4405 2020 0360 82")
        .sum(488_315)
        .reference("RF09868516259619897")
        .calendar_due_date(2010, 6, 12)
        .build()
        .unwrap();

    assert_eq!(
        "579440520200360820048831509000000868516259619897100612",
        code.to_string()
    );
}

#[test]
fn v5_2() {
    let code = Barcode::builder()
        .account_number("FI58 1017 1000 0001 22")
        .euros(482)
        .cents(99)
        .reference("RF06559582243294671")
        .calendar_due_date(2010, 1, 31)
        .build()
        .unwrap();

    assert_eq!(
        "558101710000001220004829906000000559582243294671100131",
        code.to_string()
    );
}

#[test]
fn v5_3() {
    let code = Barcode::builder()
        .account_number("FI02 5000 4640 0013 02")
        .euros(693)
        .cents(80)
        .reference("RF61698756720839")
        .calendar_due_date(2011, 7, 24)
        .build()
        .unwrap();

    assert_eq!(
        "502500046400013020006938061000000000698756720839110724",
        code.to_string()
    );
}

#[test]
fn v5_4() {
    let code = Barcode::builder()
        .account_number("FI15 6601 0001 5306 41")
        .sum(744_454)
        .reference("RF847758474790647489")
        .calendar_due_date(2019, 12, 19)
        .build()
        .unwrap();

    assert_eq!(
        "515660100015306410074445484000007758474790647489191219",
        code.to_string()
    );
}

#[test]
fn v5_5() {
    let code = Barcode::builder()
        .account_number("FI16 8000 1400 0502 67")
        .sum(93585)
        .reference("RF6078777679656628687")
        .build()
        .unwrap();

    assert_eq!(
        "516800014000502670009358560000078777679656628687000000",
        code.to_string()
    );
}

#[test]
fn v5_6() {
    let code = Barcode::builder()
        .account_number("FI73 3131 3001 0000 58")
        .sum(0)
        .reference("RF10868624")
        .calendar_due_date(2013, 8, 9)
        .build()
        .unwrap();

    assert_eq!(
        "573313130010000580000000010000000000000000868624130809",
        code.to_string()
    );
}

#[test]
fn v5_7() {
    let code = Barcode::builder()
        .account_number("FI83 3301 0001 1007 75")
        .euros(150_000)
        .cents(20)
        .reference("RF7192125374252539897737")
        .calendar_due_date(2016, 5, 25)
        .build()
        .unwrap();

    assert_eq!(
        "583330100011007751500002071092125374252539897737160525",
        code.to_string()
    );
}

#[test]
fn v5_8() {
    let code = Barcode::builder()
        .account_number("FI39 3636 3002 0924 92")
        .euros(1)
        .cents(3)
        .reference("RF66590738390")
        .calendar_due_date(2023, 3, 11)
        .build()
        .unwrap();

    assert_eq!(
        "539363630020924920000010366000000000000590738390230311",
        code.to_string()
    );
}

#[test]
fn v5_9() {
    let code = Barcode::builder()
        .account_number("FI92 3939 0001 0033 91")
        .cents(2)
        .reference("RF951357914")
        .calendar_due_date(2099, 12, 24)
        .build()
        .unwrap();

    assert_eq!(
        "592393900010033910000000295000000000000001357914991224",
        code.to_string()
    );
}