From b0ea55ade48c1f537546b373ed5d9d2798593468 Mon Sep 17 00:00:00 2001 From: Soukeina Date: Fri, 18 Nov 2022 00:49:38 +0100 Subject: [PATCH] kata --- TypeScript/app/Item.ts | 11 +++ TypeScript/app/gilded-rose.ts | 94 +++++++++------------- TypeScript/test/golden-master-text-test.ts | 3 +- TypeScript/test/jest/gilded-rose.spec.ts | 3 +- TypeScript/test/mocha/gilded-rose.spec.ts | 4 +- 5 files changed, 55 insertions(+), 60 deletions(-) create mode 100644 TypeScript/app/Item.ts diff --git a/TypeScript/app/Item.ts b/TypeScript/app/Item.ts new file mode 100644 index 00000000..0497e01e --- /dev/null +++ b/TypeScript/app/Item.ts @@ -0,0 +1,11 @@ +export class Item { + name: string; + sellIn: number; + quality: number; + + constructor(name, sellIn, quality) { + this.name = name; + this.sellIn = sellIn; + this.quality = quality; + } + } \ No newline at end of file diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index db58d678..5762dd41 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -1,14 +1,6 @@ -export class Item { - name: string; - sellIn: number; - quality: number; +import { throws } from "assert"; +import {Item} from "./Item" - constructor(name, sellIn, quality) { - this.name = name; - this.sellIn = sellIn; - this.quality = quality; - } -} export class GildedRose { items: Array; @@ -18,52 +10,42 @@ export class GildedRose { } updateQuality() { - for (let i = 0; i < this.items.length; i++) { - if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].sellIn < 11) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - if (this.items[i].sellIn < 6) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } - } - } - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].sellIn = this.items[i].sellIn - 1; - } - if (this.items[i].sellIn < 0) { - if (this.items[i].name != 'Aged Brie') { - if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - this.items[i].quality = this.items[i].quality - this.items[i].quality - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } - } + this.items.forEach(item => { + this.update(item); + }); + return this.items; + } - return this.items; + private update(item: Item){ + if(item.name == 'Sulfuras, Hand of Ragnaros') { + return; + } + item.sellIn=item.sellIn-1; + if(item.name=='Aged Brie'){ + this.increaseQuality(item); + if (item.sellIn<0) this.increaseQuality(item); + }else if ( item.name =='Backstage passes to a TAFKAL80ETC concert'){ + this.increaseQuality(item); + if(item.sellIn<10) this.increaseQuality(item); + if(item.sellIn<5) this.increaseQuality(item); + if(item.sellIn<0) item.quality=0; + }else{ + this.decreaseQuality(item); + if(item.sellIn <0) this.decreaseQuality(item); + } + } + + + private decreaseQuality(item :Item){ + if(item.quality>0){ + item.quality = item.quality - 1; + } + } + + private increaseQuality(item :Item){ + if(item.quality<50){ + item.quality = item.quality + 1; + } } } + diff --git a/TypeScript/test/golden-master-text-test.ts b/TypeScript/test/golden-master-text-test.ts index 2259b975..599e5fb7 100644 --- a/TypeScript/test/golden-master-text-test.ts +++ b/TypeScript/test/golden-master-text-test.ts @@ -1,4 +1,5 @@ -import { Item, GildedRose } from '../app/gilded-rose'; +import { GildedRose } from '../app/gilded-rose'; +import { Item } from '../app/./Item'; const items = [ new Item("+5 Dexterity Vest", 10, 20), // diff --git a/TypeScript/test/jest/gilded-rose.spec.ts b/TypeScript/test/jest/gilded-rose.spec.ts index 65330750..0b5c096b 100644 --- a/TypeScript/test/jest/gilded-rose.spec.ts +++ b/TypeScript/test/jest/gilded-rose.spec.ts @@ -1,4 +1,5 @@ -import { Item, GildedRose } from '@/gilded-rose'; +import { GildedRose } from '@/gilded-rose'; +import {Item } from '@/Item' describe('Gilded Rose', () => { it('should foo', () => { diff --git a/TypeScript/test/mocha/gilded-rose.spec.ts b/TypeScript/test/mocha/gilded-rose.spec.ts index 02cd24c5..f4a062b1 100644 --- a/TypeScript/test/mocha/gilded-rose.spec.ts +++ b/TypeScript/test/mocha/gilded-rose.spec.ts @@ -1,6 +1,6 @@ import { expect } from 'chai'; -import { Item, GildedRose } from '@/gilded-rose'; - +import { GildedRose } from '@/gilded-rose'; +import { Item } from '@/Item'; describe('Gilded Rose', () => { it('should foo', () => { const gildedRose = new GildedRose([new Item('foo', 0, 0)]);