diff --git a/src/main/data/WatchList.java b/src/main/data/WatchList.java index 96c8d40..83c3893 100644 --- a/src/main/data/WatchList.java +++ b/src/main/data/WatchList.java @@ -4,6 +4,7 @@ import java.util.*; import java.io.*; import data.StockEntry; import ui.Main; +import data.exceptions.*; public class WatchList implements Load,Save { private LinkedHashMap listdata; @@ -38,7 +39,10 @@ public class WatchList implements Load,Save { // Effects: Delete an entry with key==target // Modifies: this.listdata // Requires: target exists in list - public void delStock(String target) { + public void delStock(String target) throws StockNotExistsException { + if (!listdata.containsKey(target)) { + throw new StockNotExistsException(); + } this.listdata.remove(target); } diff --git a/src/main/data/exceptions/StockNotExistsException.java b/src/main/data/exceptions/StockNotExistsException.java new file mode 100644 index 0000000..27162df --- /dev/null +++ b/src/main/data/exceptions/StockNotExistsException.java @@ -0,0 +1,6 @@ +package data.exceptions; + +import data.exceptions.WatchListExceptions; + +public class StockNotExistsException extends WatchListExceptions { +} diff --git a/src/main/data/exceptions/WatchListExceptions.java b/src/main/data/exceptions/WatchListExceptions.java new file mode 100644 index 0000000..77a8077 --- /dev/null +++ b/src/main/data/exceptions/WatchListExceptions.java @@ -0,0 +1,4 @@ +package data.exceptions; + +public abstract class WatchListExceptions extends Exception { +} diff --git a/src/main/ui/Main.java b/src/main/ui/Main.java index d472956..9303e0b 100644 --- a/src/main/ui/Main.java +++ b/src/main/ui/Main.java @@ -6,6 +6,7 @@ import data.StypeMap; import data.StockType; import data.WatchList; import ui.IfaceFactory; +import data.exceptions.*; public class Main { private Iface iface; @@ -60,7 +61,11 @@ public class Main { public void delWatchStock(String target) { //XXX Concurrency not ready // Should add runnable to executor - mainList.delStock(target); + try { + mainList.delStock(target); + } catch (StockNotExistsException e) { + System.out.println("Stock: " + target + " doesn't exists"); + } } // Consider moving all to watchlist diff --git a/src/test/NasdaqTest.java b/src/test/data/NasdaqTest.java similarity index 98% rename from src/test/NasdaqTest.java rename to src/test/data/NasdaqTest.java index 364430d..cb57871 100644 --- a/src/test/NasdaqTest.java +++ b/src/test/data/NasdaqTest.java @@ -1,3 +1,5 @@ +package test; + import data.StypeMap; import data.StockType; import data.Nasdaq; diff --git a/src/test/NyseTest.java b/src/test/data/NyseTest.java similarity index 98% rename from src/test/NyseTest.java rename to src/test/data/NyseTest.java index 9f202a3..e85744f 100644 --- a/src/test/NyseTest.java +++ b/src/test/data/NyseTest.java @@ -1,3 +1,5 @@ +package data; + import data.StypeMap; import data.StockType; import data.Nyse; diff --git a/src/test/StockEntryTest.java b/src/test/data/StockEntryTest.java similarity index 98% rename from src/test/StockEntryTest.java rename to src/test/data/StockEntryTest.java index e426a5c..f257bdc 100644 --- a/src/test/StockEntryTest.java +++ b/src/test/data/StockEntryTest.java @@ -1,3 +1,5 @@ +package data; + import data.StockEntry; import data.StypeMap; import data.StockType; diff --git a/src/test/StypeMapTest.java b/src/test/data/StypeMapTest.java similarity index 97% rename from src/test/StypeMapTest.java rename to src/test/data/StypeMapTest.java index 498eb39..68f194e 100644 --- a/src/test/StypeMapTest.java +++ b/src/test/data/StypeMapTest.java @@ -1,3 +1,5 @@ +package data; + import data.StypeMap; import data.StockType; import data.Nyse; diff --git a/src/test/WatchListTest.java b/src/test/data/WatchListTest.java similarity index 68% rename from src/test/WatchListTest.java rename to src/test/data/WatchListTest.java index b82c05e..815a44a 100644 --- a/src/test/WatchListTest.java +++ b/src/test/data/WatchListTest.java @@ -1,7 +1,10 @@ +package data; + import data.WatchList; import data.StypeMap; import data.StockType; import data.Nyse; +import data.exceptions.*; import ui.Main; import java.io.*; import org.junit.jupiter.api.BeforeEach; @@ -9,6 +12,7 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; public class WatchListTest { private WatchList watchlist; @@ -18,7 +22,7 @@ public class WatchListTest { @BeforeEach public void runBefore() { mainObj = new Main(true); - watchlist = mainObj.getWatchList(); + watchlist = mainObj.getWatchList(); smap = new StypeMap(); } @@ -39,19 +43,37 @@ public class WatchListTest { } assertEquals(watchlist.size(), 100); } - + @Test - public void testDelStock() { + public void testDelStockNoThrow() { StockType nyyyse = smap.getStype("Nyse"); for (int i = 0; i < 100; i++) { watchlist.addStock(Integer.toString(i), nyyyse); } for (int i = 0; i < 50; i++) { - watchlist.delStock(Integer.toString(i)); + try { + watchlist.delStock(Integer.toString(i)); + } catch (WatchListExceptions e) { + fail(); + } } assertEquals(watchlist.size(), 50); } + @Test + public void testDelNotExistsStock() { + StockType nyyyse = smap.getStype("Nyse"); + for (int i = 0; i < 100; i++) { + watchlist.addStock(Integer.toString(i), nyyyse); + } + try { + watchlist.delStock(Integer.toString(-1)); + fail(); + } catch (WatchListExceptions e) { + //expected to throw + } + } + @Test public void testSaveLoad() { StockType nyyyse = smap.getStype("Nyse"); @@ -60,9 +82,9 @@ public class WatchListTest { } watchlist.save(""); assertTrue(watchlist.fileExists(watchlist.DEFAULT_SAVEFILE)); - Main testMain = new Main(true); - WatchList testlist = testMain.getWatchList(); - testlist.load(""); + Main testMain = new Main(true); + WatchList testlist = testMain.getWatchList(); + testlist.load(""); assertEquals(watchlist.size(), testlist.size()); File testFile = new File(watchlist.DEFAULT_SAVEFILE); testFile.delete();