Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Benjamin Allred
crown-core
Commits
12ffbcc1
Commit
12ffbcc1
authored
13 years ago
by
Gavin Andresen
Browse files
Options
Download
Email Patches
Plain Diff
Unit tests for the GetArg() methods
parent
d72ffe38
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
src/test/getarg_tests.cpp
+95
-0
src/test/getarg_tests.cpp
src/util.cpp
+26
-1
src/util.cpp
src/util.h
+25
-23
src/util.h
with
146 additions
and
24 deletions
+146
-24
src/test/getarg_tests.cpp
0 → 100644
View file @
12ffbcc1
#include <boost/algorithm/string.hpp>
#include <boost/foreach.hpp>
#include <boost/test/unit_test.hpp>
#include "util.h"
BOOST_AUTO_TEST_SUITE
(
getarg_tests
)
static
void
ResetArgs
(
const
std
::
string
&
strArg
)
{
std
::
vector
<
std
::
string
>
vecArg
;
boost
::
split
(
vecArg
,
strArg
,
boost
::
is_space
(),
boost
::
token_compress_on
);
// Insert dummy executable name:
vecArg
.
insert
(
vecArg
.
begin
(),
"testbitcoin"
);
// Convert to char*:
std
::
vector
<
const
char
*>
vecChar
;
BOOST_FOREACH
(
std
::
string
&
s
,
vecArg
)
vecChar
.
push_back
(
s
.
c_str
());
ParseParameters
(
vecChar
.
size
(),
&
vecChar
[
0
]);
}
BOOST_AUTO_TEST_CASE
(
boolarg
)
{
ResetArgs
(
"-foo"
);
BOOST_CHECK
(
GetBoolArg
(
"-foo"
));
BOOST_CHECK
(
GetBoolArg
(
"-foo"
,
false
));
BOOST_CHECK
(
GetBoolArg
(
"-foo"
,
true
));
BOOST_CHECK
(
!
GetBoolArg
(
"-fo"
));
BOOST_CHECK
(
!
GetBoolArg
(
"-fo"
,
false
));
BOOST_CHECK
(
GetBoolArg
(
"-fo"
,
true
));
BOOST_CHECK
(
!
GetBoolArg
(
"-fooo"
));
BOOST_CHECK
(
!
GetBoolArg
(
"-fooo"
,
false
));
BOOST_CHECK
(
GetBoolArg
(
"-fooo"
,
true
));
ResetArgs
(
"-foo=0"
);
BOOST_CHECK
(
!
GetBoolArg
(
"-foo"
));
BOOST_CHECK
(
!
GetBoolArg
(
"-foo"
,
false
));
BOOST_CHECK
(
!
GetBoolArg
(
"-foo"
,
true
));
ResetArgs
(
"-foo=1"
);
BOOST_CHECK
(
GetBoolArg
(
"-foo"
));
BOOST_CHECK
(
GetBoolArg
(
"-foo"
,
false
));
BOOST_CHECK
(
GetBoolArg
(
"-foo"
,
true
));
}
BOOST_AUTO_TEST_CASE
(
stringarg
)
{
ResetArgs
(
""
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
""
),
""
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
"eleven"
),
"eleven"
);
ResetArgs
(
"-foo -bar"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
""
),
""
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
"eleven"
),
""
);
ResetArgs
(
"-foo="
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
""
),
""
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
"eleven"
),
""
);
ResetArgs
(
"-foo=11"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
""
),
"11"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
"eleven"
),
"11"
);
ResetArgs
(
"-foo=eleven"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
""
),
"eleven"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
"eleven"
),
"eleven"
);
}
BOOST_AUTO_TEST_CASE
(
intarg
)
{
ResetArgs
(
""
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
11
),
11
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
0
),
0
);
ResetArgs
(
"-foo -bar"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
11
),
0
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-bar"
,
11
),
0
);
ResetArgs
(
"-foo=11 -bar=12"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
0
),
11
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-bar"
,
11
),
12
);
ResetArgs
(
"-foo=NaN -bar=NotANumber"
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-foo"
,
1
),
0
);
BOOST_CHECK_EQUAL
(
GetArg
(
"-bar"
,
11
),
0
);
}
BOOST_AUTO_TEST_SUITE_END
()
This diff is collapsed.
Click to expand it.
src/util.cpp
View file @
12ffbcc1
...
...
@@ -454,7 +454,7 @@ vector<unsigned char> ParseHex(const string& str)
return
ParseHex
(
str
.
c_str
());
}
void
ParseParameters
(
int
argc
,
c
har
*
argv
[])
void
ParseParameters
(
int
argc
,
c
onst
char
*
const
argv
[])
{
mapArgs
.
clear
();
mapMultiArgs
.
clear
();
...
...
@@ -480,6 +480,31 @@ void ParseParameters(int argc, char* argv[])
}
}
std
::
string
GetArg
(
const
std
::
string
&
strArg
,
const
std
::
string
&
strDefault
)
{
if
(
mapArgs
.
count
(
strArg
))
return
mapArgs
[
strArg
];
return
strDefault
;
}
int64
GetArg
(
const
std
::
string
&
strArg
,
int64
nDefault
)
{
if
(
mapArgs
.
count
(
strArg
))
return
atoi64
(
mapArgs
[
strArg
]);
return
nDefault
;
}
bool
GetBoolArg
(
const
std
::
string
&
strArg
,
bool
fDefault
)
{
if
(
mapArgs
.
count
(
strArg
))
{
if
(
mapArgs
[
strArg
].
empty
())
return
true
;
return
(
atoi
(
mapArgs
[
strArg
])
!=
0
);
}
return
fDefault
;
}
bool
SoftSetArg
(
const
std
::
string
&
strArg
,
const
std
::
string
&
strValue
)
{
if
(
mapArgs
.
count
(
strArg
))
...
...
This diff is collapsed.
Click to expand it.
src/util.h
View file @
12ffbcc1
...
...
@@ -143,7 +143,7 @@ std::vector<unsigned char> DecodeBase64(const char* p, bool* pfInvalid = NULL);
std
::
string
DecodeBase64
(
const
std
::
string
&
str
);
std
::
string
EncodeBase64
(
const
unsigned
char
*
pch
,
size_t
len
);
std
::
string
EncodeBase64
(
const
std
::
string
&
str
);
void
ParseParameters
(
int
argc
,
c
har
*
argv
[]);
void
ParseParameters
(
int
argc
,
c
onst
char
*
const
argv
[]);
bool
WildcardMatch
(
const
char
*
psz
,
const
char
*
mask
);
bool
WildcardMatch
(
const
std
::
string
&
str
,
const
std
::
string
&
mask
);
int
GetFilesize
(
FILE
*
file
);
...
...
@@ -401,30 +401,32 @@ inline bool IsSwitchChar(char c)
#endif
}
inline
std
::
string
GetArg
(
const
std
::
string
&
strArg
,
const
std
::
string
&
strDefault
)
{
if
(
mapArgs
.
count
(
strArg
))
return
mapArgs
[
strArg
];
return
strDefault
;
}
/**
* Return string argument or default value
*
* @param strArg Argument to get (e.g. "-foo")
* @param default (e.g. "1")
* @return command-line argument or default value
*/
std
::
string
GetArg
(
const
std
::
string
&
strArg
,
const
std
::
string
&
strDefault
);
inline
int64
GetArg
(
const
std
::
string
&
strArg
,
int64
nDefault
)
{
if
(
mapArgs
.
count
(
strArg
))
return
atoi64
(
mapArgs
[
strArg
]);
return
nDefault
;
}
/**
* Return integer argument or default value
*
* @param strArg Argument to get (e.g. "-foo")
* @param default (e.g. 1)
* @return command-line argument (0 if invalid number) or default value
*/
int64
GetArg
(
const
std
::
string
&
strArg
,
int64
nDefault
);
inline
bool
GetBoolArg
(
const
std
::
string
&
strArg
,
bool
fDefault
=
false
)
{
if
(
mapArgs
.
count
(
strArg
))
{
if
(
mapArgs
[
strArg
].
empty
())
return
true
;
return
(
atoi
(
mapArgs
[
strArg
])
!=
0
);
}
return
fDefault
;
}
/**
* Return boolean argument or default value
*
* @param strArg Argument to get (e.g. "-foo")
* @param default (true or false)
* @return command-line argument or default value
*/
bool
GetBoolArg
(
const
std
::
string
&
strArg
,
bool
fDefault
=
false
);
/**
* Set an argument if it doesn't already have a value
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help