#include <dhcp/iface_mgr.h>
#include <exceptions/exceptions.h>
-#include "../command_options.h"
+#include "command_options_helper.h"
using namespace std;
using namespace isc;
/// \param cmdline Command line to parse
/// \throws std::bad allocation if tokenization failed
void process(const std::string& cmdline) {
- CommandOptions& opt = CommandOptions::instance();
- int argc = 0;
- char** argv = tokenizeString(cmdline, &argc);
- opt.reset();
- opt.parse(argc, argv);
- for(int i = 0; i < argc; ++i) {
- free(argv[i]);
- argv[i] = NULL;
- }
- free(argv);
+ CommandOptionsHelper::process(cmdline);
}
/// \brief Check default initialized values
EXPECT_EQ("", opt.getWrapped());
EXPECT_EQ("192.168.0.1", opt.getServerName());
}
-
- /// \brief Split string to array of C-strings
- ///
- /// \param s String to split (tokenize)
- /// \param num Number of tokens returned
- /// \return array of C-strings (tokens)
- char** tokenizeString(const std::string& text_to_split, int* num) const {
- char** results = NULL;
- // Tokenization with std streams
- std::stringstream text_stream(text_to_split);
- // Iterators to be used for tokenization
- std::istream_iterator<std::string> text_iterator(text_stream);
- std::istream_iterator<std::string> text_end;
- // Tokenize string (space is a separator) using begin and end iteratos
- std::vector<std::string> tokens(text_iterator, text_end);
-
- if (tokens.size() > 0) {
- // Allocate array of C-strings where we will store tokens
- results = static_cast<char**>(malloc(tokens.size() * sizeof(char*)));
- if (results == NULL) {
- throw std::bad_alloc();
- }
- // Store tokens in C-strings array
- for (int i = 0; i < tokens.size(); ++i) {
- char* cs = static_cast<char*>(malloc(tokens[i].length() + 1));
- strcpy(cs, tokens[i].c_str());
- results[i] = cs;
- }
- // Return number of tokens to calling function
- if (num != NULL) {
- *num = tokens.size();
- }
- }
- return results;
- }
-
};
TEST_F(CommandOptionsTest, Defaults) {