diff options
Diffstat (limited to 'budget/tests')
| -rw-r--r-- | budget/tests/budget.rs | 121 | ||||
| -rw-r--r-- | budget/tests/test.toml | 19 | 
2 files changed, 91 insertions, 49 deletions
| diff --git a/budget/tests/budget.rs b/budget/tests/budget.rs index 4ed549c..836a715 100644 --- a/budget/tests/budget.rs +++ b/budget/tests/budget.rs @@ -11,7 +11,7 @@ fn can_parse_account() -> Result<(), ParseError> {  		end_date: NaiveDate::from_ymd(2020, 10, 31),  		budget: 420.0,  		essential_categories: vec![ -			String::from("products"), +			String::from("produce"),  			String::from("transport"),  			String::from("utilities"),  		], @@ -22,42 +22,40 @@ fn can_parse_account() -> Result<(), ParseError> {  					Expense {  						name: String::from("Potato masher"),  						price: 3.81, -						qty: 1, -						shared: 1, -						recurring: false, +						shared: vec![], +						owed: false,  						category: Some(String::from("supplies")),  					},  					Expense {  						name: String::from("Bacon"),  						price: 3.33, -						qty: 1, -						shared: 3, -						recurring: false, -						category: Some(String::from("products")), +						shared: vec![ +							String::from("Fox"),  +							String::from("Falco"), +						], +						owed: false, +						category: Some(String::from("produce")),  					},  					Expense {  						name: String::from("Yoghurt"),  						price: 1.24, -						qty: 2, -						shared: 2, -						recurring: false, -						category: Some(String::from("products")), +						shared: vec![String::from("Falco")], +						owed: true, +						category: Some(String::from("produce")),  					},  					Expense {  						name: String::from("Onion"),  						price: 0.15, -						qty: 1, -						shared: 1, -						recurring: false, -						category: Some(String::from("products")), +						shared: vec![], +						owed: false, +						category: Some(String::from("produce")),  					},  					Expense {  						name: String::from("Chicken"),  						price: 2.28, -						qty: 1, -						shared: 2, -						recurring: false, -						category: Some(String::from("products")), +						shared: vec![String::from("Fox")], +						owed: false, +						category: Some(String::from("produce")),  					},  				],  			}, @@ -71,17 +69,15 @@ fn can_parse_account() -> Result<(), ParseError> {  					Expense {  						name: String::from("VPS"),  						price: 5.0, -						qty: 1, -						shared: 1, -						recurring: true, +						shared: vec![], +						owed: false,  						category: Some(String::from("utilities")),  					},  					Expense {  						name: String::from("Transport card"),  						price: 6.9, -						qty: 1, -						shared: 1, -						recurring: false, +						shared: vec![], +						owed: false,  						category: Some(String::from("transport")),  					},  				], @@ -99,16 +95,17 @@ fn can_parse_account() -> Result<(), ParseError> {  #[test]  fn can_calculate() -> Result<(), ParseError> {  	let mut should_be = Calculated { -		all_day_average: 5.6775, -		essential_day_average: 4.725, +		all_day_average: 4.5275, +		essential_day_average: 3.575,  		categories_day_average: HashMap::<String, f64>::new(), -		essential_subtotal: 18.9, +		essential_subtotal: 14.3,  		categories_subtotal: HashMap::<String, f64>::new(), -		total: 22.71, -		balance: 397.29, -		total_owed: HashMap::<u32, f64>::new(), -		days_left: 69.9762219286658, -		days_left_essential: 84.08253968253969, +		total: 18.11, +		balance: 401.89, +		owed: HashMap::<String, f64>::new(), +		total_owed: 4.6, +		days_left: 88.76642738818333, +		days_left_essential: 112.4167832167832,  		last_day: NaiveDate::from_ymd(2020, 10, 04),  	}; @@ -117,7 +114,7 @@ fn can_calculate() -> Result<(), ParseError> {  		.insert("supplies".to_string(), 0.9525);  	should_be  		.categories_day_average -		.insert("products".to_string(), 1.75); +		.insert("produce".to_string(), 0.6);  	should_be  		.categories_day_average  		.insert("transport".to_string(), 1.725); @@ -130,7 +127,7 @@ fn can_calculate() -> Result<(), ParseError> {  		.insert("supplies".to_string(), 3.81);  	should_be  		.categories_subtotal -		.insert("products".to_string(), 7.0); +		.insert("produce".to_string(), 2.4);  	should_be  		.categories_subtotal  		.insert("transport".to_string(), 6.9); @@ -138,13 +135,59 @@ fn can_calculate() -> Result<(), ParseError> {  		.categories_subtotal  		.insert("utilities".to_string(), 5.0); -	should_be.total_owed.insert(2, 1.7599999999999998); -	should_be.total_owed.insert(3, 2.22); +	should_be.owed.insert(String::from("Fox"), 2.25); +	should_be.owed.insert(String::from("Falco"), 2.35); + +	let mut should_be_with_owed = Calculated { +		all_day_average: 5.6775, +		essential_day_average: 4.725, +		categories_day_average: HashMap::<String, f64>::new(), +		essential_subtotal: 18.9, +		categories_subtotal: HashMap::<String, f64>::new(), +		total: 22.71, +		balance: 397.29, +		owed: HashMap::<String, f64>::new(), +		total_owed: 4.6, +		days_left: 69.9762219286658, +		days_left_essential: 84.08253968253969, +		last_day: NaiveDate::from_ymd(2020, 10, 04), +	}; + +	should_be_with_owed +		.categories_day_average +		.insert("supplies".to_string(), 0.9525); +	should_be_with_owed +		.categories_day_average +		.insert("produce".to_string(), 1.75); +	should_be_with_owed +		.categories_day_average +		.insert("transport".to_string(), 1.725); +	should_be_with_owed +		.categories_day_average +		.insert("utilities".to_string(), 1.25); + +	should_be_with_owed +		.categories_subtotal +		.insert("supplies".to_string(), 3.81); +	should_be_with_owed +		.categories_subtotal +		.insert("produce".to_string(), 7.0); +	should_be_with_owed +		.categories_subtotal +		.insert("transport".to_string(), 6.9); +	should_be_with_owed +		.categories_subtotal +		.insert("utilities".to_string(), 5.0); + +	should_be_with_owed.owed.insert(String::from("Fox"), 2.25); +	should_be_with_owed.owed.insert(String::from("Falco"), 2.35);  	let account = budget::parse_account("tests/test.toml")?; -	let actually_is = budget::calculate(&account).unwrap(); +	let actually_is = budget::calculate(&account, false).unwrap(); +	let actually_is_with_owed = budget::calculate(&account, true).unwrap();  	assert_eq!(actually_is, should_be); +	assert_eq!(actually_is_with_owed, should_be_with_owed);  	Ok(())  } diff --git a/budget/tests/test.toml b/budget/tests/test.toml index ca2c1e5..103094e 100644 --- a/budget/tests/test.toml +++ b/budget/tests/test.toml @@ -2,7 +2,7 @@ start_date = 2020-10-01  end_date = 2020-10-31  budget = 420.0  essential_categories = [ -  "products", +  "produce",    "transport",    "utilities",  ] @@ -18,26 +18,26 @@ date = 2020-10-01    [[days.expenses]]    name = "Bacon"    price = 3.33 -  category = "products" -  shared = 3 +  category = "produce" +  shared = ["Fox", "Falco"]    [[days.expenses]]    name = "Yoghurt"    price = 1.24 -  category = "products" -  qty = 2 -  shared = 2 +  category = "produce" +  owed = true +  shared = ["Falco"]    [[days.expenses]]    name = "Onion"    price = 0.15 -  category = "products" +  category = "produce"    [[days.expenses]]    name = "Chicken"    price = 2.28 -  category = "products" -  shared = 2 +  category = "produce" +  shared = ["Fox"]  [[days]]  date = 2020-10-04 @@ -49,7 +49,6 @@ date = 2020-10-02    name = "VPS"    price = 5.0    category = "utilities" -  recurring = true    [[days.expenses]]    name = "Transport card" | 
