commit ad13ae19c6c43f8e9d77be2b38c0ef50d642036c Author: Raphael Roberts Date: Sun Oct 27 18:26:50 2019 -0500 Added files diff --git a/Song.java b/Song.java new file mode 100644 index 0000000..c4984b4 --- /dev/null +++ b/Song.java @@ -0,0 +1,52 @@ +// The Song class that represents a song +// Do not make any changes to this file! +// Xiwei Wang + +public class Song +{ + // instance variables + private String m_artist; + private String m_title; + private Song m_link; + + // constructor + public Song(String artist, String title) + { + m_artist = artist; + m_title = title; + m_link = null; + } + + // getters and setters + public void setArtist(String artist) + { + m_artist = artist; + } + + public String getArtist() + { + return m_artist; + } + + public void setTitle(String title) + { + m_title = title; + } + + public String getTitle() + { + return m_title; + } + + public void setLink(Song link) + { + m_link = link; + } + + public Song getLink() + { + return m_link; + } +} + + \ No newline at end of file diff --git a/SongList.java b/SongList.java new file mode 100644 index 0000000..3ba75cb --- /dev/null +++ b/SongList.java @@ -0,0 +1,74 @@ +// The SongList class that represents a circular linked list of Song nodes +// Your name here + +public class SongList +{ + // instance variables + private Song m_last; + private int m_numElements; + + // constructor + // Do not make any changes to this method! + public SongList() + { + m_last = null; + m_numElements = 0; + } + + // check whether the list is empty + // Do not make any changes to this method! + boolean isEmpty() + { + if (m_last == null) + return true; + else + return false; + } + + // return the size of the list (# of Song nodes) + // Do not make any changes to this method! + public int size() + { + return m_numElements; + } + + // add a new Song to the circular linked list with the given artist and + // title, keeping the list sorted by *song title*. + public void add(String artist, String title) + { + // TODO: implement this method + } + + // remove a Song associated with the given artist and title from the list, + // keeping the list sorted by *song title*. + public boolean remove(String artist, String title) + { + // TODO: implement this method + } + + + // build and return a circular linked list that contains all songs from the + // given artist + public SongList buildList(String artist) + { + // TODO: implement this method + } + + // return a string representation of the list + // Do not make any changes to this method! + public String toString() + { + String listContent = ""; + Song current = m_last; + + if (m_last != null) + do + { + current = current.getLink(); + listContent += " [" + current.getArtist() + " - " + current.getTitle() + "]\n"; + + } while (current != m_last); + + return listContent; + } +} \ No newline at end of file diff --git a/TestSongList.java b/TestSongList.java new file mode 100644 index 0000000..d388808 --- /dev/null +++ b/TestSongList.java @@ -0,0 +1,375 @@ +// Test driver for the SongList class +// Do not make any changes to this file! +// Xiwei Wang + +public class TestSongList +{ + public static void main(String[] args) + { + SongList mylist = new SongList(); + SongList builtlist = null; + int numPassedTests = 0; + int numTotalTests = 0; + String testResult; + + // Test 1 + numTotalTests++; + boolean bReturn = false; + testResult = "[Failed]"; + String eMsg = "N/A"; + try + { + mylist.add("Lewis Capaldi", "Someone You Loved"); + bReturn = mylist.isEmpty(); + + if (bReturn == false) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n add(\"Lewis Capaldi\", \"Someone You Loved\")\n Expected return of isEmpty(): false" ); + if (eMsg.equals("N/A")) + System.out.println(" Your isEmpty() returns: " + bReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 2 + numTotalTests++; + int iReturn = -1; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + mylist.add("Lil Nas X", "Old Town Road"); + mylist.add("Ed Sheeran & Justin Bieber", "I Don't Care"); + iReturn = mylist.size(); + + if (iReturn == 3) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n add(\"Lil Nas X\", \"Old Town Road\")\n add(\"Ed Sheeran & Justin Bieber\", \"I Don't Care\")\n Expected return of size(): 3" ); + if (eMsg.equals("N/A")) + System.out.println(" Your size() returns: " + iReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 3 + numTotalTests++; + String sReturn = ""; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + sReturn = mylist.toString(); + + if (sReturn.equals(" [Ed Sheeran & Justin Bieber - I Don't Care]\n [Lil Nas X - Old Town Road]\n [Lewis Capaldi - Someone You Loved]\n")) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n Expected return of toString():\n [Ed Sheeran & Justin Bieber - I Don't Care]\n [Lil Nas X - Old Town Road]\n [Lewis Capaldi - Someone You Loved]\n"); + if (eMsg.equals("N/A")) + System.out.println(" Your toString() returns:\n" + sReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 4 + numTotalTests++; + bReturn = false; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + bReturn = mylist.remove("Ava Max", "Sweet But Psycho"); + + if (bReturn == false) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult +"\n remove(\"Ava Max\", \"Sweet But Psycho\")\n Expected: false" ); + if (eMsg.equals("N/A")) + System.out.println(" Yours: " + bReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 5 + numTotalTests++; + iReturn = -1; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + mylist.add("Ava Max", "Sweet But Psycho"); + mylist.add("Billie Eilish", "Bad Guy"); + mylist.add("Mabel", "Don't Call Me Up"); + mylist.add("Lewis Capaldi", "Hold Me While You Wait"); + iReturn = mylist.size(); + + if (iReturn == 7) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n add(\"Ava Max\", \"Sweet But Psycho\")\n add(\"Billie Eilish\", \"Bad Guy\")\n add(\"Mabel\", \"Don't Call Me Up\")\n add(\"Lewis Capaldi\", \"Hold Me While You Wait\")\n Expected return of size(): 7" ); + if (eMsg.equals("N/A")) + System.out.println(" Your size() returns: " + iReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + System.out.println(mylist); + + // Test 6 + numTotalTests++; + bReturn = false; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + bReturn = mylist.remove("Billie Eilish", "Bad Guy"); + + if (bReturn == true) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult +"\n remove(\"Billie Eilish\", \"Bad Guy\")\n Expected: true" ); + if (eMsg.equals("N/A")) + System.out.println(" Yours: " + bReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 7 + numTotalTests++; + bReturn = false; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + bReturn = mylist.remove("Ava Max", "Sweet But Psycho"); + + if (bReturn == true) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult +"\n remove(\"Ava Max\", \"Sweet But Psycho\")\n Expected: true" ); + if (eMsg.equals("N/A")) + System.out.println(" Yours: " + bReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 8 + numTotalTests++; + sReturn = ""; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + mylist.add("Billie Eilish", "Bury A Friend"); + mylist.add("Lewis Capaldi", "Grace"); + sReturn = mylist.toString(); + + if (sReturn.equals(" [Billie Eilish - Bury A Friend]\n [Mabel - Don't Call Me Up]\n [Lewis Capaldi - Grace]\n [Lewis Capaldi - Hold Me While You Wait]\n [Ed Sheeran & Justin Bieber - I Don't Care]\n [Lil Nas X - Old Town Road]\n [Lewis Capaldi - Someone You Loved]\n")) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n add(\"Billie Eilish\", \"Bury A Friend\")\n add(\"Lewis Capaldi\", \"Grace\")\n Expected return of toString():\n" + + " [Billie Eilish - Bury A Friend]\n [Mabel - Don't Call Me Up]\n [Lewis Capaldi - Grace]\n [Lewis Capaldi - Hold Me While You Wait]\n" + + " [Ed Sheeran & Justin Bieber - I Don't Care]\n [Lil Nas X - Old Town Road]\n [Lewis Capaldi - Someone You Loved]\n"); + if (eMsg.equals("N/A")) + System.out.println(" Your toString() returns:\n" + sReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 9 + numTotalTests++; + bReturn = false; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + bReturn = mylist.remove("Mabel", "Don't Call Me Up"); + + if (bReturn == true) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult +"\n remove(\"Mabel\", \"Don't Call Me Up\")\n Expected: true" ); + if (eMsg.equals("N/A")) + System.out.println(" Yours: " + bReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 10 + numTotalTests++; + iReturn = -1; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + iReturn = mylist.size(); + + if (iReturn == 6) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n Expected return of size(): 6" ); + if (eMsg.equals("N/A")) + System.out.println(" Your size() returns: " + iReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 11 + numTotalTests++; + builtlist = null; + sReturn = ""; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + builtlist = mylist.buildList("Lewis Capaldi"); + sReturn = builtlist.toString(); + + if (sReturn.equals(" [Lewis Capaldi - Grace]\n [Lewis Capaldi - Hold Me While You Wait]\n [Lewis Capaldi - Someone You Loved]\n")) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n mylist.buildList(\"Lewis Capaldi\")\n Expected return of toString() on the new list:\n" + + " [Lewis Capaldi - Grace]\n [Lewis Capaldi - Hold Me While You Wait]\n [Lewis Capaldi - Someone You Loved]\n"); + if (eMsg.equals("N/A")) + System.out.println(" Your toString() returns:\n" + sReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 12 + numTotalTests++; + builtlist = null; + sReturn = ""; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + builtlist = mylist.buildList("Lil Nas X"); + sReturn = builtlist.toString(); + + if (sReturn.equals(" [Lil Nas X - Old Town Road]\n")) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n mylist.buildList(\"Lil Nas X\")\n Expected return of toString() on the new list:\n" + + " [Lil Nas X - Old Town Road]\n"); + if (eMsg.equals("N/A")) + System.out.println(" Your toString() returns:\n" + sReturn + "\n"); + else + System.out.println(" Yours: " + eMsg + "\n"); + + // Test 13 + numTotalTests++; + builtlist = null; + sReturn = ""; + testResult = "[Failed]"; + eMsg = "N/A"; + try + { + builtlist = mylist.buildList("Ava Max"); + sReturn = builtlist.toString(); + + if (sReturn.equals("")) + { + numPassedTests++; + testResult = "[Passed]"; + } + } + catch (RuntimeException e) + { + eMsg = "RuntimeException - \"" + e.getMessage() + "\""; + } + + System.out.println("Test " + numTotalTests + ": " + testResult + "\n mylist.buildList(\"Ava Max\")\n Expected return of toString() on the new list:\n An empty list\n"); + if (eMsg.equals("N/A")) + System.out.println(" Your toString() returns:\n" + (sReturn.equals("") ? " An empty list\n" : sReturn)); + else + System.out.println(" Yours: " + eMsg + "\n"); + + System.out.println("Total test cases: " + numTotalTests + "\nCorrect: " + numPassedTests + "\nWrong: " + (numTotalTests - numPassedTests)); + } +}