cgma
|
#include "CGMFileOptions.hpp"
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
Go to the source code of this file.
Defines | |
#define | CHECK(A) |
#define | EQUAL(A, B) |
Functions | |
static bool | strempty (const char *s) |
int | main () |
Variables | |
const char | DEFAULT_SEPARATOR = ';' |
#define CHECK | ( | A | ) |
if (FO_SUCCESS != (A)) { \ std::cerr << "Failure at line " << __LINE__ << ": error code " << (A) << std::endl; \ return 1; \ }
Definition at line 17 of file fileoptions.cpp.
#define EQUAL | ( | A, | |
B | |||
) |
if (A != B) { \ std::cerr << "Failure at line " << __LINE__ << ": expected " << (B) << " but got " << (A) << std::endl; \ return 2; \ }
Definition at line 23 of file fileoptions.cpp.
int main | ( | ) |
Definition at line 29 of file fileoptions.cpp.
{ CGMFileOptions tool( "INT1=1;NUL1;STR1=ABC;DBL1=1.0;dbl2=2.0;DBL3=3.0;INT2=2;nul2;NUL3;INT3=3;str2=once upon a time;str3==fubar=;;" ); std::string s; int i; double d; CGMFOErrorCode rval; // test basic get_option method without deleting entry rval = tool.get_option( "STR1", s ); CHECK(rval); EQUAL( s, "ABC" ); // test basic get_option method again, this time deleting the entry rval = tool.get_option( "STR1", s ); CHECK(rval); EQUAL( s, "ABC" ); // test basig get_option method with a null option rval = tool.get_option( "NUL2", s ); CHECK( rval ); EQUAL( s.empty(), true ); // test null option rval = tool.get_null_option( "nul1" ); CHECK( rval ); // try null option method on non-null value rval = tool.get_null_option( "INT1" ) ; EQUAL( rval, FO_TYPE_OUT_OF_RANGE) ; // test integer option rval = tool.get_int_option( "int1", i ); CHECK( rval ); EQUAL( i, 1 ); rval = tool.get_int_option( "int2", i ); CHECK( rval ); EQUAL( i, 2 ); // test integer option on non-integer value rval = tool.get_int_option( "dbl2", i ); EQUAL( rval, FO_TYPE_OUT_OF_RANGE ); // test integer option on null value rval = tool.get_int_option( "NUL3", i); EQUAL( rval, FO_TYPE_OUT_OF_RANGE ); // test double option rval = tool.get_real_option( "dbl1", d ); CHECK( rval ); EQUAL( d, 1.0 ); rval = tool.get_real_option( "dbl2", d ); CHECK( rval ); EQUAL( d, 2.0 ); rval = tool.get_real_option( "int3", d ); CHECK( rval ); EQUAL( d, 3.0 ); // test real option on non-real value rval = tool.get_real_option( "str2", d ); EQUAL( rval, FO_TYPE_OUT_OF_RANGE ); // test real option on null value rval = tool.get_real_option( "NUL3", d ); EQUAL( rval, FO_TYPE_OUT_OF_RANGE ); // test get a simple string option rval = tool.get_str_option( "DBL3", s ); CHECK( rval ); EQUAL( s, "3.0" ); // test get a string with spaces rval = tool.get_str_option("STR2", s ); CHECK( rval ); EQUAL( s, "once upon a time" ); // try to get a string value for a null option rval = tool.get_str_option( "nul3", s ); EQUAL( rval, FO_TYPE_OUT_OF_RANGE ); // test options using generic get_option method rval = tool.get_option( "NUL3", s ); CHECK( rval ); EQUAL( s.empty(), true ); rval = tool.get_option( "STR3", s ); CHECK( rval ); EQUAL( s, "=fubar=" ); // test size of options string unsigned l = tool.size(); EQUAL( l, 12u ); // test alternate separator CGMFileOptions tool2( ";+OPT1=ABC+OPT2=" ); l = tool2.size(); EQUAL( l, 2 ); rval = tool2.get_option( "opt1", s ); CHECK( rval ); EQUAL( s, "ABC" ); rval = tool2.get_option( "opt2", s ); CHECK( rval ); bool e = s.empty(); EQUAL( e, true ); l = tool2.size(); EQUAL( l, 2 ); // test empty options string CGMFileOptions tool3( ";;;;" ); e = tool3.empty(); EQUAL( e, true ); l = tool3.size(); EQUAL( l, 0 ); CGMFileOptions tool4(NULL); e = tool4.empty(); EQUAL( e, true ); l = tool4.size(); EQUAL( l, 0 ); CGMFileOptions tool5(";+"); e = tool5.empty(); EQUAL( e, true ); l = tool5.size(); EQUAL( l, 0 ); // test copy constructor CGMFileOptions tool6( tool2 ); rval = tool6.get_option( "opt1", s ); CHECK( rval ); EQUAL( s, "ABC" ); rval = tool6.get_option( "opt2", s ); CHECK( rval ); e = s.empty(); EQUAL( e, true ); l = tool6.size(); EQUAL( l, 2 ); CGMFileOptions tool7( tool5 ); e = tool7.empty(); EQUAL( e, true ); l = tool7.size(); EQUAL( l, 0 ); // test assignment operator CGMFileOptions tool8( tool2 ); tool8 = tool; EQUAL( tool8.size(), tool.size() ); return 0; }
static bool strempty | ( | const char * | s | ) | [inline, static] |
Definition at line 13 of file fileoptions.cpp.
{ return !*s; }
const char DEFAULT_SEPARATOR = ';' |
Definition at line 12 of file fileoptions.cpp.