001 package ps6.test;
002
003 import ps6.Address;
004
005 /**
006 * A test record is a fairly simple record type to hold a query and its expected
007 * results
008 *
009 * @author tws
010 */
011 public final class TestRecord {
012
013 //TODO: make sure this points to /cse/courses/cse331/tigerdb when you turn-in the problem set
014 private static final String tigerBaseDir = "/cse/courses/cse331/tigerdb";
015
016 /**
017 * Database information the various testing databases
018 * @author tws
019 */
020 public static enum TestDB{
021 TINY ("tiny"),
022 SMALL ("small"),
023 //MYDB ("mydb"),
024 MEDIUM ("medium");
025
026 private final String dbPath;
027 TestDB(String name){
028 this.dbPath = tigerBaseDir + "/" + name;
029 }
030 public String dbPath(){
031 return dbPath;
032 }
033 }
034
035 /** Types of tests, e.g. a walking test or an invalid address test */
036 public static enum TestType
037 {WALKING,DRIVING,INVALID_DIR_TYPE,INVALID_ADDRESS,NO_PATH};
038
039 private final String testName;
040 private final TestDB db;
041 private final TestType type;
042
043 private final Address start;
044 private final Address end;
045
046 private final String[] directions;
047 private final String tripLength;
048 private final double length;
049 private final String errorMessage;
050
051 /**
052 *
053 * @param testName name of the test (for use by JUnit)
054 * @param db database information for the test
055 * @param type type of the test
056 * @param start starting address of the query
057 * @param end ending address of the query
058 * @param directions sequence of directions lines expected from getDirections, or null if we
059 * expect not to find any directions. the elements must not contain newlines
060 * at the end.
061 * @param tripLength the trip length or trip time that appear at the end of the directions
062 * @param length expected length of the path, or NaN if we expect not to find any
063 * directions
064 * @param errorMessage expected error message or null if no error is expected
065 */
066 public TestRecord(String testName,TestDB db,TestType type,
067 Address start, Address end,
068 String[] directions, String tripLength, double length,
069 String errorMessage) {
070 this.db = db;
071 this.testName = testName;
072 this.type = type;
073 this.start = start;
074 this.end = end;
075 this.directions = directions;
076 this.tripLength = tripLength;
077 this.length = length;
078 this.errorMessage = errorMessage;
079 }
080
081 /**
082 * Get a string rep. of the direction type for the test (e.g. "w" or "d")
083 * @return a string representation of the direction type for the test
084 */
085 public String getDirectionType() {
086 switch (type){
087 case WALKING:
088 return "w";
089 case INVALID_DIR_TYPE:
090 return "q";
091 case DRIVING:
092 default:
093 return "d";
094 }
095 }
096
097 /**
098 * Get the name of the Test
099 * @return the name of the test
100 */
101 public String getTestName(){
102 return testName;
103 }
104
105 /**
106 * Get the starting test's starting address
107 * @return the starting address
108 */
109 public Address getStart() {
110 return start;
111 }
112
113 /**
114 * Get the test's ending address
115 * @return the ending address
116 */
117 public Address getEnd() {
118 return end;
119 }
120
121 /**
122 * Get the type of test
123 * @return the type of test
124 */
125 public TestType getType() {
126 return type;
127 }
128
129 /**
130 * Get the expected direction lines
131 * @return the expected direction lines
132 */
133 public String[] getDirections() {
134 return directions;
135 }
136
137 /**
138 * Get the expected length / travel time line
139 * @return the expected length / travel time line
140 */
141 public String getTripLength() {
142 return tripLength;
143 }
144
145 /**
146 * Get the expected length of the path
147 * @return the expected length of path
148 */
149 public double getLength() {
150 return length;
151 }
152
153 /**
154 * Get the expected error message
155 * @return the expected error message
156 */
157 public String getErrorMessage() {
158 return errorMessage;
159 }
160
161 /**
162 * Get the database information for the test
163 * @return the database for the test
164 */
165 public TestDB getDb(){
166 return db;
167 }
168
169 }