initial commit
This commit is contained in:
49
exercises/03_ticket_v1/12_outro/tests/integration.rs
Normal file
49
exercises/03_ticket_v1/12_outro/tests/integration.rs
Normal file
@@ -0,0 +1,49 @@
|
||||
use outro_02::Order;
|
||||
|
||||
// Files inside the `tests` directory are only compiled when you run tests.
|
||||
// As a consequence, we don't need the `#[cfg(test)]` attribute for conditional compilation—it's
|
||||
// implied.
|
||||
|
||||
#[test]
|
||||
fn test_order() {
|
||||
let mut order = Order::new("Rusty Book".to_string(), 3, 2999);
|
||||
|
||||
assert_eq!(order.product_name(), "Rusty Book");
|
||||
assert_eq!(order.quantity(), &3);
|
||||
assert_eq!(order.unit_price(), &2999);
|
||||
assert_eq!(order.total(), 8997);
|
||||
|
||||
order.set_product_name("Rust Book".to_string());
|
||||
order.set_quantity(2);
|
||||
order.set_unit_price(3999);
|
||||
|
||||
assert_eq!(order.product_name(), "Rust Book");
|
||||
assert_eq!(order.quantity(), &2);
|
||||
assert_eq!(order.unit_price(), &3999);
|
||||
assert_eq!(order.total(), 7998);
|
||||
}
|
||||
|
||||
// Validation tests
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn test_empty_product_name() {
|
||||
Order::new("".to_string(), 3, 2999);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn test_long_product_name() {
|
||||
Order::new("a".repeat(301), 3, 2999);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn test_zero_quantity() {
|
||||
Order::new("Rust Book".to_string(), 0, 2999);
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[should_panic]
|
||||
fn test_zero_unit_price() {
|
||||
Order::new("Rust Book".to_string(), 3, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user