CClock04
Home ] Up ]

 

// file CClock04.cpp
// date 09/28/2007
// authors AOU

#include <iostream>
#include <ctime>
using namespace std;


int const TEST_COUNT = 20;


class CClock
  {
  private:
    int hr;
    int min;
    int sec;
  public:
    CClock(void);                 // CClock myClock;
    void display(void);           // myClock.display();
    CClock(int h);                // CClock myClock(5);
    CClock(int h, int m);         // CClock myClock(5,1);
    CClock(int h, int m, int s);  // CClock myClock(5,1,3);
    CClock(char ch);              // CClock myClock('r');
    bool isValid(void);           // if(myClock.isValid()) ...
    bool isEqualTo(CClock t);     // if (t1.isEqualTo(t2))
  };


void driver_ConstructorRandom(void);
void driver_isValid(void);
void driver_isEqualTo(void);


void main(void)
  {
  srand((unsigned int)time(NULL));
  /*
    {
    CClock myClock;
    myClock.display();
    }

    {
    CClock time2(4);
    time2.display();
    }

    {
    CClock time2(4,6);
    time2.display();
    }

    {
    CClock time2(-44,-66,188);
    time2.display();
    }
  */

  //driver_ConstructorRandom();
  //driver_isValid();
  driver_isEqualTo();

  }

void driver_isEqualTo(void)
  {
  for (int i=1; i<=TEST_COUNT; i++)
    {
    CClock time1('r'), time2('r');

    cout << "time1= "; time1.display();
    cout << "time2= "; time2.display();

    if (time1.isEqualTo(time2))
      cout << "  Times are equal\n";
    else
      cout << "  Time are NOT equal\n";

    time1 = time2;

    cout << "After time1 = time2;\n";

    cout << "time1= "; time1.display();
    cout << "time2= "; time2.display();

    if (time1.isEqualTo(time2))
      cout << "  Times are equal\n";
    else
      cout << "  Time are NOT equal\n";

    cout << "-------------------\n";
    }
  }

bool CClock::isEqualTo(CClock t)
  {
  if (this->hr != t.hr) return false;
  if (this->min != t.min) return false;
  if (this->sec != t.sec) return false;

  return true;
  }

void driver_isValid(void)
  {
    {
    CClock time2(12);
    time2.display();

    if (time2.isValid() == true)
      cout << "  Time is good\n";
    else
      cout << "  Time is NOT good\n";
    }

    {
    CClock time2(12,13);
    time2.display();

    if (time2.isValid() == true)
      cout << "  Time is good\n";
    else
      cout << "  Time is NOT good\n";
    }

    {
    CClock time2(12,13,14);
    time2.display();

    if (time2.isValid() == true)
      cout << "  Time is good\n";
    else
      cout << "  Time is NOT good\n";
    }

  for (int i=1; i<=TEST_COUNT; i++)
    {
    CClock time2('r');
    time2.display();

    if (time2.isValid() == true)
      cout << "  Time is good\n";
    else
      cout << "  Time is NOT good\n";
    }

  }

bool CClock::isValid(void)
  {
  //check for hr
  if (hr < 0 || hr > 23) return false; 

  //check for min
  if (min < 0 || min > 59) return false; 

  //check for sec
  if (sec < 0 || sec > 59) return false; 

  return true;
  }


void driver_ConstructorRandom(void)
  {
  for (int i=1; i<=TEST_COUNT; i++)
    {
    CClock time2('r');
    time2.display();
    }

  }

CClock::CClock(char ch)
  {
  //set a random hour
  hr = rand()%24;

  //set a random value for minute
  min = rand()%60;

  //set a random value for second
  sec = rand()%60;
  }


CClock::CClock(int h, int m, int s)
  {
  if (h >= 0 && h <= 23) 
    hr = h; 
  else 
    hr = 0;

  if (m >= 0 && m <= 59) 
    min = m; 
  else 
    min = 0;

  if (s >= 0 && s <= 59) 
    sec = s; 
  else 
    sec = 0;

  }


CClock::CClock(int h, int m)
  {
  if (h >= 0 && h <= 23) 
    hr = h; 
  else 
    hr = 0;

  if (m >= 0 && m <= 59) 
    min = m; 
  else 
    min = 0;

  sec = 0;
  }


CClock::CClock(int h)
  {
  if (h >= 0 && h <= 23) 
    hr = h; 
  else 
    hr = 0;

  min = 0;
  sec = 0;
  }


CClock::CClock(void)
  {
  hr = min = sec = 0;
  }


void CClock::display(void)
  {
  if (hr<10) cout << '0';
  cout << hr;

  cout << ':';

  if (min<10) cout << '0';
  cout << min ;

  cout << ':';

  if (sec<10) cout << '0';
  cout << sec;
  cout << endl;
  }