Source of testime4.cpp


  1: // Filenme: TESTIME4.CPP
  2: // Purpose: Tests the Time class in TIME4.H and TIME4.CPP, which
  3: //          has a four-in-one constructor, accessor functions,
  4: //          friend functions, and overloaded operators.

  6: #include <iostream>
  7: #include <fstream>
  8: #include <iomanip>
  9: using namespace std;

 11: #include "TIME4.H"
 12: #include "PAUSE.H"


 15: int main()
 16: {
 17:     cout << endl
 18:          << "This program tests the Time class with "
 19:          << "a four-in-one constructor, "             << endl
 20:          << "accessor functions, friend functions, "
 21:          << "and overloaded operators. "              << endl
 22:          << "You should study the source code "
 23:          << "at the same time as the output. "        << endl << endl;

 25:     Time t0;      // Default constructor (no parameters) invoked
 26:     Time t1(12);  // One-parameter constructor invoked
 27:     Time t2(11, 45);      // Two-parameter constructor invoked
 28:     Time t3(11, 44, 55);  // Three-parameter constructor invoked
 29:     cout << t0;  cout << endl;  // Overloaded << operator used with cout
 30:     cout << t1;  cout << endl;
 31:     cout << t2 << setw(12) << t3;  cout << endl;  // How does setw work?
 32:     Pause(0);

 34:     while (!(t3 == t2))  // Overloaded == operator
 35:     {
 36:         cout << t3;  cout << endl;
 37:         t3.Increment();
 38:     }
 39:     if (t3 == t2)
 40:         cout << "\nt2: " << t2 << "\nt3: " << t3 << endl;
 41:     Pause(0);

 43:     Time t4 = t1 + t2;  // Overloaded + operator used in initialization
 44:     Time t5;
 45:     t5 = t1 + t3;       // Overloaded + operator used in assignment
 46:     cout << t4;  cout << endl;
 47:     cout << t5;  cout << endl;
 48:     Pause(0);

 50:     ofstream outFile("times.tmp"); // Initialize outFile object with specific file
 51:     outFile << t1 << endl // Overloaded << operator used with outFile
 52:             << t2 << endl // Cascading of output values, i.e.,
 53:             << t3 << endl // ... << value1 << value2 << value3 << ...
 54:             << t4 << endl
 55:             << t5 << endl;
 56:     outFile.close();

 58:     ifstream inFile("times.tmp");
 59:     Time t;
 60:     
 61:     inFile >> t;  // Overloaded >> operator used with inFile
 62:     while (inFile)
 63:     {
 64:         cout << t << endl;
 65:         inFile >> t;
 66:     }
 67:     inFile.close();
 68:     Pause(0);

 70:     inFile.open("times.tmp");
 71:     // Cascading of input values (... >> value1 >> value2 >> value3 ...):
 72:     inFile >> t1 >> t2 >> t3 >> t4 >> t5;
 73:     inFile.close();
 74:     cout << t1 << "  "
 75:          << t2 << "  "
 76:          << t3 << "  "
 77:          << t4 << "  "
 78:          << t5 << endl;

 80:     return 0;
 81: }