From c234914394b4c8cdee66d7528bad3c132f90dc4d Mon Sep 17 00:00:00 2001 From: Mike Buland Date: Tue, 23 Apr 2013 09:47:29 -0600 Subject: Added cli params & a unit test. --- src/main.cpp | 5 ++++- src/options.cpp | 24 ++++++++++++++++++++++++ src/options.h | 16 ++++++++++++++++ src/unitnumber.cpp | 22 ++++++++++++++++++++++ src/unitnumber.h | 15 +++++++++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 src/options.cpp create mode 100644 src/options.h create mode 100644 src/unitnumber.cpp create mode 100644 src/unitnumber.h diff --git a/src/main.cpp b/src/main.cpp index 0325db0..afa1d5e 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3,6 +3,7 @@ #include "lexer.h" #include "token.h" #include "parser.h" +#include "options.h" #include #include @@ -360,8 +361,10 @@ void fractest() println("%1 / %2 = %3").arg( a ).arg( b ).arg( a / b ); } -int main( int , char *[] ) +int main( int argc, char *argv[] ) { + Options opt( argc, argv ); + println("CliC - 0.02"); println("Try \\exit, \\scale, and \\radix commands."); println(""); diff --git a/src/options.cpp b/src/options.cpp new file mode 100644 index 0000000..ef46e82 --- /dev/null +++ b/src/options.cpp @@ -0,0 +1,24 @@ +#include "options.h" + +#include "unitnumber.h" + +Options::Options( int argc, char *argv[] ) +{ + addOption( Bu::slot(this, &Options::selfTest), "self-test", + "Run a series of tests to ensure everything is working correctly."); + addHelpOption('h', "help", "This help"); + + parse( argc, argv ); +} + +Options::~Options() +{ +} + +int Options::selfTest( Bu::StringArray aArgs ) +{ + UnitNumber().run(); + + exit( 0 ); +} + diff --git a/src/options.h b/src/options.h new file mode 100644 index 0000000..667e486 --- /dev/null +++ b/src/options.h @@ -0,0 +1,16 @@ +#ifndef OPTIONS_H +#define OPTIONS_H + +#include + +class Options : public Bu::OptParser +{ +public: + Options( int argc, char *argv[] ); + virtual ~Options(); + +private: + int selfTest( Bu::StringArray aArgs ); +}; + +#endif diff --git a/src/unitnumber.cpp b/src/unitnumber.cpp new file mode 100644 index 0000000..d4bc7a8 --- /dev/null +++ b/src/unitnumber.cpp @@ -0,0 +1,22 @@ +#include "unitnumber.h" + +#include "number.h" + +UnitNumber::UnitNumber() +{ + setName("Number"); + add( static_cast(&UnitNumber::multiply1), + "multiply1", Bu::UnitSuite::expectPass ); +} + +UnitNumber::~UnitNumber() +{ +} + +void UnitNumber::multiply1() +{ + unitTest( + (Number("123456789123456789") * Number("987654321987654321")).toString() + == "121932631356500531347203169112635269" ); +} + diff --git a/src/unitnumber.h b/src/unitnumber.h new file mode 100644 index 0000000..89b1c0f --- /dev/null +++ b/src/unitnumber.h @@ -0,0 +1,15 @@ +#ifndef UNIT_NUMBER_H +#define UNIT_NUMBER_H + +#include + +class UnitNumber : public Bu::UnitSuite +{ +public: + UnitNumber(); + virtual ~UnitNumber(); + + void multiply1(); +}; + +#endif -- cgit v1.2.3