Test task

This commit is contained in:
Alex 2019-06-18 17:42:02 +00:00
parent fb3853835e
commit 8efec1b84d
4 changed files with 100 additions and 50 deletions

View File

@ -1,51 +1,57 @@
class GildedRose class GildedRose
def initialize(items) def self.all_items
@items = items ObjectSpace.each_object(Item).to_a
end end
def update_quality() def self.update_quality
@items.each do |item| all_items.each do |item|
if item.name != "Aged Brie" and item.name != "Backstage passes to a TAFKAL80ETC concert" if !item.name.include?("Aged Brie") and !item.name.include?("Backstage")
if item.quality > 0 if item.quality > 0
if item.name != "Sulfuras, Hand of Ragnaros" if !item.name.include?("Sulfuras")
item.quality = item.quality - 1 item.quality -= 1
if item.name.include?("Conjured")
item.quality -= 1
end
end end
end end
else else
if item.quality < 50 if item.quality < 50
item.quality = item.quality + 1 item.quality += 1
if item.name == "Backstage passes to a TAFKAL80ETC concert" if item.name.include?("Backstage")
if item.sell_in < 11 if item.sell_in < 11
if item.quality < 50 if item.quality < 50
item.quality = item.quality + 1 item.quality += 1
end end
end end
if item.sell_in < 6 if item.sell_in < 6
if item.quality < 50 if item.quality < 50
item.quality = item.quality + 1 item.quality += 1
end end
end end
end end
end end
end end
if item.name != "Sulfuras, Hand of Ragnaros" if !item.name.include?("Sulfuras")
item.sell_in = item.sell_in - 1 item.sell_in = item.sell_in - 1
end end
if item.sell_in < 0 if item.sell_in < 0
if item.name != "Aged Brie" if !item.name.include?("Aged Brie")
if item.name != "Backstage passes to a TAFKAL80ETC concert" if !item.name.include?("Backstage")
if item.quality > 0 if item.quality > 0
if item.name != "Sulfuras, Hand of Ragnaros" if !item.name.include?("Sulfuras")
item.quality = item.quality - 1 item.quality -= 1
if item.name.include?("Conjured")
item.quality -= 1
end
end end
end end
else else
item.quality = item.quality - item.quality item.quality = 0
end end
else else
if item.quality < 50 if item.quality < 50
item.quality = item.quality + 1 item.quality += 1
end end
end end
end end

View File

@ -2,11 +2,36 @@ require File.join(File.dirname(__FILE__), 'gilded_rose')
describe GildedRose do describe GildedRose do
describe "#update_quality" do describe "update_quality" do
it "does not change the name" do it "does not change the name" do
items = [Item.new("foo", 0, 0)]
GildedRose.new(items).update_quality() items = [
expect(items[0].name).to eq "fixme" Item.new(name="+5 Dexterity Vest", sell_in=10, quality=20),
Item.new(name="Aged Brie", sell_in=2, quality=0),
Item.new(name="Elixir of the Mongoose", sell_in=5, quality=7),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=39),
# Now it works perfectly
Item.new(name="Conjured Mana Cake", sell_in=0, quality=6),
Item.new(name="Conjured Mana Cake", sell_in=3, quality=6),
]
GildedRose.update_quality()
expect(items[0].quality).to eq 19
expect(items[1].quality).to eq 1
expect(items[2].quality).to eq 6
expect(items[3].quality).to eq 80
expect(items[4].quality).to eq 80
expect(items[5].quality).to eq 21
expect(items[6].quality).to eq 50
expect(items[7].quality).to eq 50
expect(items[8].quality).to eq 42
expect(items[9].quality).to eq 2
expect(items[10].quality).to eq 4
end end
end end

View File

@ -3,10 +3,35 @@ require 'test/unit'
class TestUntitled < Test::Unit::TestCase class TestUntitled < Test::Unit::TestCase
def test_foo def test_gilded_rose
items = [Item.new("foo", 0, 0)]
GildedRose.new(items).update_quality() items = [
assert_equal items[0].name, "fixme" Item.new(name="+5 Dexterity Vest", sell_in=10, quality=20),
Item.new(name="Aged Brie", sell_in=2, quality=0),
Item.new(name="Elixir of the Mongoose", sell_in=5, quality=7),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=39),
# Now it works perfectly
Item.new(name="Conjured Mana Cake", sell_in=0, quality=6),
Item.new(name="Conjured Mana Cake", sell_in=3, quality=6),
]
GildedRose.update_quality()
assert_equal items[0].quality, 19
assert_equal items[1].quality, 1
assert_equal items[2].quality, 6
assert_equal items[3].quality, 80
assert_equal items[4].quality, 80
assert_equal items[5].quality, 21
assert_equal items[6].quality, 50
assert_equal items[7].quality, 50
assert_equal items[8].quality, 42
assert_equal items[9].quality, 2
assert_equal items[10].quality, 4
end end
end end

View File

@ -2,32 +2,26 @@
require File.join(File.dirname(__FILE__), 'gilded_rose') require File.join(File.dirname(__FILE__), 'gilded_rose')
puts "OMGHAI!"
items = [ items = [
Item.new(name="+5 Dexterity Vest", sell_in=10, quality=20), Item.new(name="+5 Dexterity Vest", sell_in=10, quality=20),
Item.new(name="Aged Brie", sell_in=2, quality=0), Item.new(name="Aged Brie", sell_in=2, quality=0),
Item.new(name="Elixir of the Mongoose", sell_in=5, quality=7), Item.new(name="Aged Brie", sell_in=2, quality=49),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80), Item.new(name="Elixir of the Mongoose", sell_in=5, quality=7),
Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80), Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=0, quality=80),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20), Item.new(name="Sulfuras, Hand of Ragnaros", sell_in=-1, quality=80),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49), Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=15, quality=20),
Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49), Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=10, quality=49),
# This Conjured item does not work properly yet Item.new(name="Backstage passes to a TAFKAL80ETC concert", sell_in=5, quality=49),
Item.new(name="Conjured Mana Cake", sell_in=3, quality=6), # <-- :O # Now it works perfectly
] Item.new(name="Conjured Mana Cake", sell_in=0, quality=6),
Item.new(name="Conjured Mana Cake", sell_in=3, quality=6),
]
days = 3
days = 2 (0..days).each do |day|
if ARGV.size > 0
days = ARGV[0].to_i + 1
end
gilded_rose = GildedRose.new items
(0...days).each do |day|
puts "-------- day #{day} --------" puts "-------- day #{day} --------"
puts "name, sellIn, quality"
items.each do |item| items.each do |item|
puts item puts item
end end
puts "" GildedRose.update_quality
gilded_rose.update_quality
end end