#include <iostream>
using namespace std;

#include <stringconvert.h>
#include <stringconverttest.h>

using namespace misclib_testcode;

string stringconverttest::doc[] = 
{
  "Unit tests for numbers in a string form.",
  ""
};


int stringconverttest::unittest01()
{
  cout << "Testing" << endl;

  string si[] = 
  { 
    "9340", "234s", "-50", ".", "-.", 
    "0.1", "733.", ".899", "-3.", "-3.141592654",
    "a.23", "2.3.5", "7"
  };
  bool si_isstringdigits[] = 
  { 1,0,0,0,0,
    0,0,0,0,0,
    0,0,1 };
  bool si_isstringreal[] = 
  { 1,0,1,0,0,
    1,1,1,1,1,
    0,0,1 };
  bool si_isstringinteger[] = 
  { 1,0,1,0,0,
    0,0,0,0,0,
    0,0,1 };
  bool si_isstringnegative[] = 
  { 0,0,1,0,0,
    0,0,0,1,1,
    0,0,0 };
  
  uint sicount=13;

  cout << "Digits test" << endl;
  for (uint i=0; i<sicount; ++i)
  {
    cout << si[i] << "  isstringdigits " << si_isstringdigits[i] << endl;
    assertreturnOS(isstringdigits(si[i])==si_isstringdigits[i]);
  }
  
  cout << "Reals test" << endl;
  for (uint i=0; i<sicount; ++i)
  {
    cout << si[i] << "  isstringreal " << si_isstringreal[i] << endl;
    assertreturnOS(isstringreal(si[i])==si_isstringreal[i]);
  }

  cout << "Integer test" << endl;
  for (uint i=0; i<sicount; ++i)
  {
    cout << si[i] << "  isstringinteger " << si_isstringinteger[i] << endl;
    assertreturnOS(isstringinteger(si[i])==si_isstringinteger[i]);
  }

  cout << "Negative number test" << endl;
  for (uint i=0; i<sicount; ++i)
  {
    cout << si[i] << "  isstringnegative " << si_isstringnegative[i] << endl;
    assertreturnOS(isstringnegative(si[i])==si_isstringnegative[i]);
  }

  return 0;
}


