// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum Command {
// 	/** cdrdao scanbus command */
// 	SCANBUS("scanbus", new Option[] {}),
// 	/** cdrdao drive-info command */
// 	DRIVE_INFO("drive-info", new Option[] { Option.DEVICE }),
// 	/** cdrdao disk-info command */
// 	DISC_INFO("disk-info", new Option[] { Option.DEVICE }),
// 	/** cdrdao read-toc command */
// 	READ_TOC("read-toc", new Option[] { Option.READ_RAW_OPTION,
// 			Option.FAST_TOC_OPTION, Option.DEVICE }),
// 	/** cdrdao read-cd command */
// 	READ_CD("read-cd", new Option[] { Option.DEVICE,
// 			Option.READ_RAW_OPTION, Option.DATA_FILE_OPTION });
// 
// 	private final String command;
// 	private final List<Option> defaultOptions;
// 
// 	Command(final String command, final Option[] defaultOptions) {
// 		this.command = command;
// 		this.defaultOptions = Collections.unmodifiableList(Arrays
// 				.asList(defaultOptions));
// 	}
// 
// 	/**
// 	 * @return the cdrdao command string
// 	 */
// 	public String value() {
// 		return this.command;
// 	}
// 
// 	/**
// 	 * @return the default options for the command
// 	 */
// 	public List<Option> defaultOptions() {
// 		return this.defaultOptions;
// 	}
// }
// 
// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum Option {
// 	/** cdrdao device option */
// 	DEVICE("--device"),
// 	/** cdrdao read-raw option */
// 	READ_RAW_OPTION("--read-raw"),
// 	/** cdrdao fast-tco option */
// 	FAST_TOC_OPTION("--fast-toc"),
// 	/** cdrdao datafile option */
// 	DATA_FILE_OPTION("--datafile");
// 
// 	private final String option;
// 
// 	Option(final String option) {
// 		this.option = option;
// 	}
// 
// 	/**
// 	 * @return the string option value
// 	 */
// 	public String getOption() {
// 		return this.option;
// 	}
// }
// 
// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum ParanoiaModeOption {
// 	/** Fastest mode with no error checking */
// 	NO_CHECKING(0),
// 	/** Overlapped Reading to avoid jitter */
// 	OVERLAPPED_READING(1),
// 	/** OVERLAPPED_READING with additional checks of read audio data */
// 	AUDIO_DATA_CHECKS(2),
// 	/** AUDION_DATA_CHECKS with additional scratch detection and repair */
// 	SCRATCH_REPAIR(3);
// 	static final String PARANOIA_MODE_OPTION = "--paranoia-mode";
// 
// 	private final int modeValue;
// 	private final List<String> optionList;
// 
// 	private ParanoiaModeOption(final int modeValue) {
// 		this.modeValue = modeValue;
// 		this.optionList = Collections.unmodifiableList(new ArrayList<>(
// 				Arrays.asList(new String[] { PARANOIA_MODE_OPTION,
// 						this.getModeValueAsString() })));
// 	}
// 
// 	/**
// 	 * @return the cd paranoia mode value as a string for use in commands
// 	 */
// 	public String getModeValueAsString() {
// 		return Integer.toString(this.modeValue);
// 	}
// 
// 	/**
// 	 * @return the cd paranoia mode value
// 	 */
// 	public int getModeValue() {
// 		return this.modeValue;
// 	}
// 
// 	/**
// 	 * @return an unmodifiable list containing the cdrdao options for
// 	 *         paranoia mode
// 	 */
// 	public List<String> getOptionList() {
// 		return this.optionList;
// 	}
// }


import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.Command;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.Option;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.ParanoiaModeOption;
	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyDevice() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(EMPTY_STRING, TOC_PATH, BIN_PATH);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyTocPath() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(DEVICE, EMPTY_STRING, BIN_PATH);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyBinPath() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(DEVICE, TOC_PATH, EMPTY_STRING);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test
	public void testReadCdNoChecking() {
		CdrdaoCommands testInstance = CdrdaoCommands.getNewInstance(COMMAND, ParanoiaModeOption.NO_CHECKING);
// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum Command {
// 	/** cdrdao scanbus command */
// 	SCANBUS("scanbus", new Option[] {}),
// 	/** cdrdao drive-info command */
// 	DRIVE_INFO("drive-info", new Option[] { Option.DEVICE }),
// 	/** cdrdao disk-info command */
// 	DISC_INFO("disk-info", new Option[] { Option.DEVICE }),
// 	/** cdrdao read-toc command */
// 	READ_TOC("read-toc", new Option[] { Option.READ_RAW_OPTION,
// 			Option.FAST_TOC_OPTION, Option.DEVICE }),
// 	/** cdrdao read-cd command */
// 	READ_CD("read-cd", new Option[] { Option.DEVICE,
// 			Option.READ_RAW_OPTION, Option.DATA_FILE_OPTION });
// 
// 	private final String command;
// 	private final List<Option> defaultOptions;
// 
// 	Command(final String command, final Option[] defaultOptions) {
// 		this.command = command;
// 		this.defaultOptions = Collections.unmodifiableList(Arrays
// 				.asList(defaultOptions));
// 	}
// 
// 	/**
// 	 * @return the cdrdao command string
// 	 */
// 	public String value() {
// 		return this.command;
// 	}
// 
// 	/**
// 	 * @return the default options for the command
// 	 */
// 	public List<Option> defaultOptions() {
// 		return this.defaultOptions;
// 	}
// }
// 
// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum Option {
// 	/** cdrdao device option */
// 	DEVICE("--device"),
// 	/** cdrdao read-raw option */
// 	READ_RAW_OPTION("--read-raw"),
// 	/** cdrdao fast-tco option */
// 	FAST_TOC_OPTION("--fast-toc"),
// 	/** cdrdao datafile option */
// 	DATA_FILE_OPTION("--datafile");
// 
// 	private final String option;
// 
// 	Option(final String option) {
// 		this.option = option;
// 	}
// 
// 	/**
// 	 * @return the string option value
// 	 */
// 	public String getOption() {
// 		return this.option;
// 	}
// }
// 
// Path: arc-cd-wrap-cdrdao/src/main/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommands.java
// public enum ParanoiaModeOption {
// 	/** Fastest mode with no error checking */
// 	NO_CHECKING(0),
// 	/** Overlapped Reading to avoid jitter */
// 	OVERLAPPED_READING(1),
// 	/** OVERLAPPED_READING with additional checks of read audio data */
// 	AUDIO_DATA_CHECKS(2),
// 	/** AUDION_DATA_CHECKS with additional scratch detection and repair */
// 	SCRATCH_REPAIR(3);
// 	static final String PARANOIA_MODE_OPTION = "--paranoia-mode";
// 
// 	private final int modeValue;
// 	private final List<String> optionList;
// 
// 	private ParanoiaModeOption(final int modeValue) {
// 		this.modeValue = modeValue;
// 		this.optionList = Collections.unmodifiableList(new ArrayList<>(
// 				Arrays.asList(new String[] { PARANOIA_MODE_OPTION,
// 						this.getModeValueAsString() })));
// 	}
// 
// 	/**
// 	 * @return the cd paranoia mode value as a string for use in commands
// 	 */
// 	public String getModeValueAsString() {
// 		return Integer.toString(this.modeValue);
// 	}
// 
// 	/**
// 	 * @return the cd paranoia mode value
// 	 */
// 	public int getModeValue() {
// 		return this.modeValue;
// 	}
// 
// 	/**
// 	 * @return an unmodifiable list containing the cdrdao options for
// 	 *         paranoia mode
// 	 */
// 	public List<String> getOptionList() {
// 		return this.optionList;
// 	}
// }


// Path: arc-cd-wrap-cdrdao/src/test/java/org/opf_labs/arc_cd/cdrdao/CdrdaoCommandsTest.java
import static org.junit.Assert.assertTrue;
import java.util.List;
import org.junit.Test;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.Command;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.Option;
import org.opf_labs.arc_cd.cdrdao.CdrdaoCommands.ParanoiaModeOption;

	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyDevice() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(EMPTY_STRING, TOC_PATH, BIN_PATH);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyTocPath() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(DEVICE, EMPTY_STRING, BIN_PATH);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test(expected=IllegalArgumentException.class)
	public void testReadCdEmptyBinPath() {
		CdrdaoCommands testInstance = CdrdaoCommands.getParanoidInstance(COMMAND);
		testInstance.readCd(DEVICE, TOC_PATH, EMPTY_STRING);
	}

	/**
	 * Test method for {@link org.opf_labs.arc_cd.cdrdao.CdrdaoCommands#readCd(java.lang.String, java.lang.String, java.lang.String)}.
	 */
	@Test
	public void testReadCdNoChecking() {
		CdrdaoCommands testInstance = CdrdaoCommands.getNewInstance(COMMAND, ParanoiaModeOption.NO_CHECKING);
		List<String> readTocCommandList = testInstance.readCd(DEVICE, TOC_PATH, BIN_PATH);