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 MEDIUM ("medium"),
024 //MYDB ("mydb"),
025 LARGE ("large");
026
027 private final String dbPath;
028 TestDB(String name) {
029 this.dbPath = tigerBaseDir + "/" + name;
030 }
031 public String dbPath() {
032 return dbPath;
033 }
034 }
035
036 /** Types of tests, e.g. a walking test or an invalid address test */
037 public static enum TestType
038 {WALKING,DRIVING,INVALID_DIR_TYPE,INVALID_ADDRESS,NO_PATH};
039
040 private final String testName;
041 private final TestDB db;
042 private final TestType type;
043
044 private final Address start;
045 private final Address end;
046
047 private final String[] directions;
048 private final String tripLength;
049 private final double length;
050 private final String errorMessage;
051
052 /**
053 *
054 * @param testName name of the test (for use by JUnit)
055 * @param db database information for the test
056 * @param type type of the test
057 * @param start starting address of the query
058 * @param end ending address of the query
059 * @param directions sequence of directions lines expected from getDirections, or null if we
060 * expect not to find any directions. the elements must not contain newlines
061 * at the end.
062 * @param tripLength the trip length or trip time that appear at the end of the directions
063 * @param length expected length of the path, or NaN if we expect not to find any
064 * directions
065 * @param errorMessage expected error message or null if no error is expected
066 */
067 public TestRecord(String testName,TestDB db,TestType type,
068 Address start, Address end,
069 String[] directions, String tripLength, double length,
070 String errorMessage) {
071 this.db = db;
072 this.testName = testName;
073 this.type = type;
074 this.start = start;
075 this.end = end;
076 this.directions = directions;
077 this.tripLength = tripLength;
078 this.length = length;
079 this.errorMessage = errorMessage;
080 }
081
082 /**
083 * Get a string rep. of the direction type for the test (e.g. "w" or "d")
084 * @return a string representation of the direction type for the test
085 */
086 public String getDirectionType() {
087 switch (type) {
088 case WALKING:
089 return "w";
090 case INVALID_DIR_TYPE:
091 return "q";
092 case DRIVING:
093 default:
094 return "d";
095 }
096 }
097
098 /**
099 * Get the name of the Test
100 * @return the name of the test
101 */
102 public String getTestName() {
103 return testName;
104 }
105
106 /**
107 * Get the starting test's starting address
108 * @return the starting address
109 */
110 public Address getStart() {
111 return start;
112 }
113
114 /**
115 * Get the test's ending address
116 * @return the ending address
117 */
118 public Address getEnd() {
119 return end;
120 }
121
122 /**
123 * Get the type of test
124 * @return the type of test
125 */
126 public TestType getType() {
127 return type;
128 }
129
130 /**
131 * Get the expected direction lines
132 * @return the expected direction lines
133 */
134 public String[] getDirections() {
135 return directions;
136 }
137
138 /**
139 * Get the expected length / travel time line
140 * @return the expected length / travel time line
141 */
142 public String getTripLength() {
143 return tripLength;
144 }
145
146 /**
147 * Get the expected length of the path
148 * @return the expected length of path
149 */
150 public double getLength() {
151 return length;
152 }
153
154 /**
155 * Get the expected error message
156 * @return the expected error message
157 */
158 public String getErrorMessage() {
159 return errorMessage;
160 }
161
162 /**
163 * Get the database information for the test
164 * @return the database for the test
165 */
166 public TestDB getDb() {
167 return db;
168 }
169
170 }