//tstatus.cpp
#include "Common/log.h"
#include "Common/Status.h"

Status fn() {
   //some error occured
   return Status(-1,"error occured in fn()");
}

int test1() {
   int error=0;

   Status status;
   if (status) LOGERROR
   if (!status.isValid()) LOGERROR
   if (status.status() != 0) LOGERROR
   if (status.message() != String("")) LOGERROR

   status = -1;
   if (!status) LOGERROR
   if (status.isValid()) LOGERROR
   if (status.status() != -1) LOGERROR
   if (status.message() != String("")) LOGERROR

   status = Status(-2,"error happened");
   if (!status) LOGERROR
   if (status.isValid()) LOGERROR
   if (status.status() != -2) LOGERROR
   if (!(status.message() == String("error happened"))) LOGERROR

   return error;
}

test2() {
   int error=0;

   Status status = fn();
   if (!status) LOGERROR
   if (status.isValid()) LOGERROR
   if (status.status() != -1) LOGERROR
   if (!(status.message() == String("error occured in fn()"))) LOGERROR

   return error;
}

main() {
   int error=0;

   error += test1();
   error += test2();

   if (error)
      cerr << "There were " << error << " errors!" << endl;
   return error;
}
