media-rental-manager / MEDIA RENTAL MANAGER / src / tests / PublicTests.java
PublicTests.java
Raw
package tests;

import static org.junit.Assert.*;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;
import mediaRentalManager.*;
import java.util.ArrayList;

@FixMethodOrder(MethodSorters.NAME_ASCENDING)

public class PublicTests {

	@Test
	public void pubAddingCustomers() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();		
		loadCustomersData(manager);
		
		resultsBuffer.append(manager.getAllCustomersInfo());
	
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}

	@Test
	public void pubAddingMedia() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();		
		loadMediaData(manager);
		
		resultsBuffer.append(manager.getAllMediaInfo());
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubAddingToQueue() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadCustomersData(manager);
		loadMediaData(manager);
		
		resultsBuffer.append(manager.getAllCustomersInfo() + "\n");
		
		if (!manager.addToQueue("Smith, John", "Jaws")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Bad")) {
			resultsBuffer.append("Failed to add to queue");
		}
		resultsBuffer.append("After adding to queues\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubRemovingFromQueue() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadCustomersData(manager);
		loadMediaData(manager);
				
		if (!manager.addToQueue("Smith, John", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Journey")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		resultsBuffer.append("After adding to queues\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
	
		manager.removeFromQueue("Albert, Mike", "Rocky");
		resultsBuffer.append("After removing from queue\n");
		
		resultsBuffer.append(manager.getAllCustomersInfo());
		
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubProcessingRequestsOne() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadCustomersData(manager);
		loadMediaData(manager);
		
		if (!manager.addToQueue("Smith, John", "Jaws")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Smith, John", "Mickey")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Smith, John", "Gone with the Wind")) {
			resultsBuffer.append("Failed to add to queue");
		}
				
		if (!manager.addToQueue("Albert, Mike", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Bad")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Journey")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		resultsBuffer.append("After adding to queues\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		
		resultsBuffer.append("Result of processing requests\n");
		resultsBuffer.append(manager.processRequests());
		
		resultsBuffer.append("After processing requests\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		
		resultsBuffer.append(manager.getAllMediaInfo());
		
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubProcessingRequestsTwo() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadCustomersData(manager);
		loadMediaData(manager);
		
		if (!manager.addToQueue("Smith, John", "Mickey")) {
			resultsBuffer.append("Failed to add to queue");
		}

		if (!manager.addToQueue("Smith, John", "Jaws")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Mickey")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		if (!manager.addToQueue("Albert, Mike", "Journey")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		resultsBuffer.append("After adding to queues\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		
		resultsBuffer.append("Result of processing requests\n");
		resultsBuffer.append(manager.processRequests());
		
		resultsBuffer.append("After processing requests\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		resultsBuffer.append(manager.getAllMediaInfo());
		
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubReturnMedia() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadCustomersData(manager);
		loadMediaData(manager);
		
		if (!manager.addToQueue("Smith, John", "Mickey")) {
			resultsBuffer.append("Failed to add to queue");
		}
					
		if (!manager.addToQueue("Albert, Mike", "Rocky")) {
			resultsBuffer.append("Failed to add to queue");
		}
		
		resultsBuffer.append(manager.processRequests());
		resultsBuffer.append("Result of processing requests\n");
		resultsBuffer.append("**** Customer Info ****\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		resultsBuffer.append("\n**** Media Info ****\n");
		resultsBuffer.append(manager.getAllMediaInfo());
		
		manager.returnMedia("Smith, John", "Mickey");
		resultsBuffer.append("\nAfter returning media\n");
		resultsBuffer.append(manager.getAllCustomersInfo());
		resultsBuffer.append(manager.getAllMediaInfo());

		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	@Test
	public void pubSearchMedia() {
		String testName = new Object() {
		}.getClass().getEnclosingMethod().getName();
		
		StringBuffer resultsBuffer = new StringBuffer();
		MediaRentalManager manager = new MediaRentalManager();
		loadMediaData(manager);
		
		ArrayList<String> searchResults = manager.searchMedia(null, "PG", null, null);
		resultsBuffer.append("PG Search: " + searchResults);
		
		searchResults = manager.searchMedia("Rocky", null, null, null);
		resultsBuffer.append("\nTitle Search: " + searchResults);
		
		searchResults = manager.searchMedia(null, null, null, "Far Away");
		resultsBuffer.append("\nSong Search: " + searchResults);
		
		assertTrue(TestingSupport.isResultCorrect(testName, resultsBuffer.toString(), true));
	}
	
	/* Private support methods */
	private static void loadCustomersData(MediaRentalManager manager) {
		String limited = "LIMITED", unlimited = "UNLIMITED";
		
		String[] names = {"Smith, John", "Albert, Mike", "Park, Laura"};
		String[] addresses = {"354 South J Ave MD", 
							  "11 Apple Mount VA",
							  "227 Park Lane DC"};
		String[] plans = {unlimited, limited, unlimited}; 
		if ((names.length != addresses.length) && (addresses.length != plans.length)) {
			System.err.println("Invalid data in loadCustomerData");
			System.exit(0);
		}
		
		for (int i = 0; i < names.length; i++) {
			manager.addCustomer(names[i], addresses[i], plans[i]);
		}
	}
	
	private static void loadMediaData(MediaRentalManager manager) {
		
		/* Loading movies */
		String title[] =          {"Rocky", "Jaws", "Mickey", "Gone with the Wind"};
		int[] copiesAvailable =   {3,       4,      1,        2};
		String[] rating =         {"PG",    "R",    "PG",     "PG"};
		
		if ((title.length != copiesAvailable.length) && (copiesAvailable.length != rating.length)) {
			System.err.println("Invalid data in loadMedia (loading movies)");
			System.exit(0);
		}
		
		for (int i = 0; i < title.length; i++) {
			manager.addMovie(title[i], copiesAvailable[i], rating[i]);
		}

		/* Loading Albums */
		String albumTitle[] =          {"Bad", 			    "Journey", };
		int[] albumCopiesAvailable =   {2,       		    1,        };
		String[] albumArtist =         {"Mike J",           "ABBA"    };
		String[] albumSongs = 		   {"Mirror, Far Away", "Yesterday, Hello"};
		
		if ((albumTitle.length != albumCopiesAvailable.length) &&
			(albumCopiesAvailable.length != albumArtist.length) && (albumArtist.length != albumSongs.length)) {
			System.err.println("Invalid data in loadMedia (loading albums)");
			System.exit(0);			
		}
		
		for (int i = 0; i < albumTitle.length; i++) {
			manager.addAlbum(albumTitle[i], albumCopiesAvailable[i], albumArtist[i], albumSongs[i]);
		}
	}
}