From 8035bc5746dfff34849d40b450cc30f4919520b6 Mon Sep 17 00:00:00 2001 From: lautaro Date: Wed, 26 Mar 2025 18:52:32 +0100 Subject: [PATCH] test basic functionality of the different types of items --- rust/src/gildedrose.rs | 89 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 84 insertions(+), 5 deletions(-) diff --git a/rust/src/gildedrose.rs b/rust/src/gildedrose.rs index e65fa085..9d322e2f 100644 --- a/rust/src/gildedrose.rs +++ b/rust/src/gildedrose.rs @@ -83,17 +83,96 @@ impl GildedRose { } } } - +// Todos tienen SellIn y Quality +// En general, Quality esta entre 0 y 50 +// Una vez que pasa SellIn, Quality se degrada al doble de velocidad +// Aged Brie aumenta su Quality con el tiempo +// Sulfuras Nunca tiene SellIn o Quality +// Backstage passes también aumenta Quality a medida que se acerca SellIn +// -Aumenta 2 cuando faltan 10 días o menos, 3 cuando faltan 5 o menos +// -Es 0 cuando sellin==0 +// Conjured bajan su calidad el doble de rápido +// Sulfuras siempre tiene quality en 80 #[cfg(test)] mod tests { use super::{GildedRose, Item}; + #[test] - pub fn foo() { - let items = vec![Item::new("foo", 0, 0)]; + pub fn test_aged_brie_quality_limits(){ + let items = vec![Item::new("Aged Brie", 2, 50)]; let mut rose = GildedRose::new(items); rose.update_quality(); - - assert_eq!("fixme", rose.items[0].name); + assert_eq!(50, rose.items[0].quality); + } + #[test] + pub fn test_aged_brie_quality_increase_doble(){ + let items = vec![Item::new("Aged Brie", 0, 40)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(42, rose.items[0].quality); + } + #[test] + pub fn test_aged_brie_quality_increase(){ + let items = vec![Item::new("Aged Brie", 2, 40)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(41, rose.items[0].quality); + } + #[test] + pub fn test_sulfuras_quality(){ + let items = vec![Item::new("Sulfuras, Hand of Ragnaros", 2, 80)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(80, rose.items[0].quality); + } + #[test] + pub fn test_sulfuras_sellin(){ + let items = vec![Item::new("Sulfuras, Hand of Ragnaros", 2, 80)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(2, rose.items[0].sell_in); + } + #[test] + pub fn test_backstage_passes_quality(){ + let items = vec![Item::new("Backstage passes to a TAFKAL80ETC concert", 15, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(21, rose.items[0].quality); + } + #[test] + pub fn test_backstage_passes_quality_10(){ + let items = vec![Item::new("Backstage passes to a TAFKAL80ETC concert", 10, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(22, rose.items[0].quality); + } + #[test] + pub fn test_backstage_passes_quality_5(){ + let items = vec![Item::new("Backstage passes to a TAFKAL80ETC concert", 5, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(23, rose.items[0].quality); + } + #[test] + pub fn test_backstage_passes_quality_0(){ + let items = vec![Item::new("Backstage passes to a TAFKAL80ETC concert", 0, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(0, rose.items[0].quality); + } + #[test] + pub fn test_normal_item_quality(){ + let items = vec![Item::new("foo", 2, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(19, rose.items[0].quality); + } + #[test] + pub fn test_normal_after_sellin(){ + let items = vec![Item::new("foo", 0, 20)]; + let mut rose = GildedRose::new(items); + rose.update_quality(); + assert_eq!(18, rose.items[0].quality); } }