diff --git a/js/TexttestFixture.html b/js/TexttestFixture.html new file mode 100644 index 00000000..cf453495 --- /dev/null +++ b/js/TexttestFixture.html @@ -0,0 +1,54 @@ + + + + +Gilded Rose Texttest Fixture + + + + + + + + + + + diff --git a/js/src/gilded_rose.js b/js/src/gilded_rose.js index c6517b3c..4d28da89 100644 --- a/js/src/gilded_rose.js +++ b/js/src/gilded_rose.js @@ -6,13 +6,6 @@ function Item(name, sell_in, quality) { var items = [] -items.push(new Item('+5 Dexterity Vest', 10, 20)); -items.push(new Item('Aged Brie', 2, 0)); -items.push(new Item('Elixir of the Mongoose', 5, 7)); -items.push(new Item('Sulfuras, Hand of Ragnaros', 0, 80)); -items.push(new Item('Backstage passes to a TAFKAL80ETC concert', 15, 20)); -items.push(new Item('Conjured Mana Cake', 3, 6)); - function update_quality() { for (var i = 0; i < items.length; i++) { if (items[i].name != 'Aged Brie' && items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { diff --git a/plsql/item.sql b/plsql/item.sql index 199acd73..97bd9e83 100644 --- a/plsql/item.sql +++ b/plsql/item.sql @@ -1,5 +1,14 @@ PROMPT Creating Table 'ITEM' -DROP TABLE item; + +BEGIN + EXECUTE IMMEDIATE 'DROP TABLE item'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -942 THEN + RAISE; + END IF; +END; + CREATE TABLE item ( name VARCHAR2(100) NOT NULL, @@ -7,3 +16,5 @@ CREATE TABLE item quality NUMBER(6) NOT NULL ); / + +SHOW ERRORS; diff --git a/plsql/item_with_id.sql b/plsql/item_with_id.sql index 7d78aedf..8d431257 100644 --- a/plsql/item_with_id.sql +++ b/plsql/item_with_id.sql @@ -1,5 +1,14 @@ PROMPT Creating Table 'ITEM' with auto-increment primary key 'ID' -DROP TABLE item; + +BEGIN + EXECUTE IMMEDIATE 'DROP TABLE item'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -942 THEN + RAISE; + END IF; +END; + CREATE TABLE item ( id NUMBER(6) NOT NULL, @@ -13,19 +22,29 @@ ALTER TABLE item ADD ( CONSTRAINT item_pk PRIMARY KEY (ID)); / -DROP SEQUENCE item_id_seq; -CREATE SEQUENCE item_id_seq - INCREMENT BY 1 - START WITH 1 +BEGIN + EXECUTE IMMEDIATE 'DROP SEQUENCE item_id_seq'; +EXCEPTION + WHEN OTHERS THEN + IF SQLCODE != -2289 THEN + RAISE; + END IF; +END; + +CREATE SEQUENCE item_id_seq + INCREMENT BY 1 + START WITH 1 MAXVALUE 999999 - MINVALUE 1 + MINVALUE 1 NOCYCLE; / -CREATE OR REPLACE TRIGGER item_bis_trg - BEFORE INSERT ON item - FOR EACH ROW +CREATE OR REPLACE TRIGGER item_bis_trg + BEFORE INSERT ON item + FOR EACH ROW BEGIN SELECT item_id_seq.NEXTVAL INTO :new.id FROM dual; END; / + +SHOW ERRORS; diff --git a/plsql/texttest_fixture.sql b/plsql/texttest_fixture.sql index 59a8f39c..6d2bbeef 100644 --- a/plsql/texttest_fixture.sql +++ b/plsql/texttest_fixture.sql @@ -1,13 +1,15 @@ +SET SERVEROUTPUT ON; + DELETE FROM item; DECLARE l_days NUMBER(3); - CURSOR c_items IS + CURSOR c_items IS SELECT name, sell_in, quality FROM item; l_item c_items%ROWTYPE; BEGIN DBMS_OUTPUT.PUT_LINE('OMGHAI!'); - + new_item('+5 Dexterity Vest', 10, 20); new_item('Aged Brie', 2, 0); new_item('Elixir of the Mongoose', 5, 7); @@ -18,7 +20,7 @@ BEGIN new_item('Backstage passes to a TAFKAL80ETC concert', 5, 49); -- this conjured item does not work properly yet ; new_item('Conjured Mana Cake', 3, 6); - + l_days := 2; FOR i IN 0 .. l_days - 1 diff --git a/plsql/update_quality.sql b/plsql/update_quality.sql index c1f2febe..372b6bdb 100644 --- a/plsql/update_quality.sql +++ b/plsql/update_quality.sql @@ -12,10 +12,10 @@ BEGIN l_name := l_item.name; l_sell_in := l_item.sell_in; l_quality := l_item.quality; - - IF l_name != 'Aged Brie' AND l_name != 'Backstage passes to a TAFKAL80ETC concert' THEN + + IF l_name <> 'Aged Brie' AND l_name <> 'Backstage passes to a TAFKAL80ETC concert' THEN IF l_quality > 0 THEN - IF l_name != 'Sulfuras, Hand of Ragnaros' THEN + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN l_quality := l_quality - 1; END IF; END IF; @@ -36,16 +36,16 @@ BEGIN END IF; END IF; END IF; - - IF l_name != 'Sulfuras, Hand of Ragnaros' THEN + + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN l_sell_in := l_sell_in - 1; END IF; - + IF l_sell_in < 0 THEN - IF l_name != 'Aged Brie' THEN - IF l_name != 'Backstage passes to a TAFKAL80ETC concert' THEN + IF l_name <> 'Aged Brie' THEN + IF l_name <> 'Backstage passes to a TAFKAL80ETC concert' THEN IF l_quality > 0 THEN - IF l_name != 'Sulfuras, Hand of Ragnaros' THEN + IF l_name <> 'Sulfuras, Hand of Ragnaros' THEN l_quality := l_quality - 1; END IF; END IF; @@ -58,7 +58,7 @@ BEGIN END IF; END IF; END IF; - + UPDATE item SET name = l_name, sell_in = l_sell_in, quality = l_quality WHERE CURRENT OF c_items; END LOOP;