import util.*; import acm.program.*; import java.lang.*; import java.text.DecimalFormat; public class TestTemperature extends DialogProgram { public void run() { //create a single string to output to a dialog box String results = "The constructor TEST results are:\n"; // Testing constructors and setting up for various tests Temperature T0 = new Temperature(); Temperature T1 = new Temperature(0.0); Temperature T2 = new Temperature('C'); Temperature T3 = new Temperature(0.0, 'C'); Temperature T4 = new Temperature(-40.0, 'C'); Temperature T5 = new Temperature(-40.0, 'F'); Temperature T6 = new Temperature(0.0, 'C'); Temperature T7 = new Temperature(32.0, 'F'); Temperature T8 = new Temperature(100.0, 'C'); Temperature T9 = new Temperature(212.0, 'F'); Temperature Bad1 = new Temperature(100.0,'K'); Temperature Bad2 = new Temperature('M'); // Test that 0 degrees Celsius same no matter how created; also tests isEquals() if (T0.isEqual(T1)) results += "Default and double (zero) -- OKAY\n"; else results += "Default and double (zero) failed equals\n"; /* if (T0.isEqual(T2)) results += "Default and 'C' (zero) -- OKAY\n"; else results += "Default and 'C' (zero) failed equals\n"; if (T0.isEqual(T3)) results += "Default and two-param (zero) -- OKAY\n"; else results += "Default and two-param (zero) failed equals\n"; if (Bad2.isEqual(T3)) results += "Bad scale replaced with 'C', one-param -- OKAY\n"; else results += "Bad scale in constructor, one-param -- FAILED\n"; if (Bad1.isEqual(T8)) results += "Bad scale replaced with 'C', two-param -- OKAY\n"; else results += "Bad scale in constructor, two-param -- FAILED\n"; // Test equivalent values in Celsius and Fahrenheit results += "\nTEST equivalent temperatures:\n"; if (T4.isEqual(T5)) results += "Same at -40.0 -- OKAY\n"; else results += "Same at -40.0 failed equals\n"; if (T6.isEqual(T7)) results += "Same at freezing -- OKAY\n"; else results += "Same at freezing failed equals\n"; if (T8.isEqual(T9)) results += "Same at boiling -- OKAY\n"; else results += "Same at boiling failed equals\n"; // Test toString() and getDegreesF()/getDegreesC() results += "\nTEST toString() and getDegreesC()/getDegreesF(): \n"; results += "toString(): " +T8.toString() + " --- in F is: " + patternDot2.format(T8.getDegreesF()) + "\n"; results += "toString(): " + T9.toString() + " --- in C is: " + patternDot2.format(T9.getDegreesC()) + "\n"; // Test isGreater() / isLess() results += "\nTEST inequalities\n"; if (T7.isLess(T9)) results += "isLess() -- OKAY\n"; else results += "isLess() -- FAILED\n"; if (T9.isGreater(T7)) results += "isGreater() -- OKAY\n"; else results += "isGreater() -- FAILED\n"; // TEST mutators results += "\nTEST mutators\n"; T5.setValue(98.6); T1.setScale('F'); T2.setTemperature(98.6, 'F'); T9.setScale('W'); results += "Should be 98.60F: " + T5.toString() + "\nShould be 0.00F: " + T1.toString() + "\nShould be 98.60F: " + T2.toString() + "\nShould be 212.0C: " + T9.toString(); // TEST add() results += "\n\nTEST add()"; Temperature adder = Bad1.add(T9); results += "\nShould be 312.0C: " + adder.toString(); // Last test results += "\n\nlast TEST \nDisplay 123.4567 F, rounded to 2 decimal places: \n"; Temperature T10 = new Temperature(123.4567, 'F'); results += T10.toString() + ", and equiv: " + patternDot2.format(T10.getDegreesC()) + " Celsius \n"; */ results += "\nEND of TESTING"; println(results); } public static void main(String args[]){ (new TestTemperature()).start(); } // create a global floating-point formatter DecimalFormat patternDot2 = new DecimalFormat("####0.00"); }