mirror of
https://github.com/corda/corda.git
synced 2025-01-17 02:09:50 +00:00
add unit tests for arg parser
This commit is contained in:
parent
e9be3c4e07
commit
24c0fab9bf
3
makefile
3
makefile
@ -1214,6 +1214,7 @@ test-extra-dep = $(test-build)-extra.dep
|
||||
|
||||
unittest-sources = \
|
||||
$(wildcard $(unittest)/*.cpp) \
|
||||
$(wildcard $(unittest)/util/*.cpp) \
|
||||
$(wildcard $(unittest)/codegen/*.cpp)
|
||||
|
||||
unittest-depends = \
|
||||
@ -1583,7 +1584,7 @@ executable-objects = $(vm-objects) $(classpath-objects) $(driver-object) \
|
||||
$(vm-heapwalk-objects) $(boot-object) $(vm-classpath-objects) \
|
||||
$(javahome-object) $(boot-javahome-object) $(lzma-decode-objects)
|
||||
|
||||
unittest-executable-objects = $(unittest-objects) $(vm-objects)
|
||||
unittest-executable-objects = $(unittest-objects) $(vm-objects) $(build)/util/arg-parser.o
|
||||
|
||||
ifeq ($(process),interpret)
|
||||
unittest-executable-objects += $(all-codegen-target-objects)
|
||||
|
@ -27,6 +27,10 @@ Arg::Arg(ArgParser& parser, bool required, const char* name, const char* desc):
|
||||
parser.last = &next;
|
||||
}
|
||||
|
||||
ArgParser::ArgParser():
|
||||
first(0),
|
||||
last(&first) {}
|
||||
|
||||
bool ArgParser::parse(int ac, const char** av) {
|
||||
Arg* state = 0;
|
||||
|
||||
|
@ -20,6 +20,7 @@ printf "%12s------- Unit tests -------\n" ""
|
||||
${unit_tester} 2>>${log}
|
||||
if [ "${?}" != "0" ]; then
|
||||
trouble=1
|
||||
echo "unit tests failed!"
|
||||
fi
|
||||
|
||||
echo
|
||||
|
@ -11,6 +11,8 @@
|
||||
#ifndef TEST_HARNESS_H
|
||||
#define TEST_HARNESS_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
class Test {
|
||||
private:
|
||||
Test* next;
|
||||
@ -53,6 +55,14 @@ protected:
|
||||
}
|
||||
runs++;
|
||||
}
|
||||
|
||||
void assertEqual(const char* expected, const char* actual) {
|
||||
if((expected == 0 && actual != 0) || (expected != 0 && actual == 0) || strcmp(expected, actual) != 0) {
|
||||
fprintf(stderr, "assertion failure, expected: \"%s\", actual: \"%s\"\n", expected, actual);
|
||||
failures++;
|
||||
}
|
||||
runs++;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
void assertNotEqual(T expected, T actual) {
|
||||
|
69
unittest/util/arg-parser-test.cpp
Normal file
69
unittest/util/arg-parser-test.cpp
Normal file
@ -0,0 +1,69 @@
|
||||
/* Copyright (c) 2008-2011, Avian Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software
|
||||
for any purpose with or without fee is hereby granted, provided
|
||||
that the above copyright notice and this permission notice appear
|
||||
in all copies.
|
||||
|
||||
There is NO WARRANTY for this software. See license.txt for
|
||||
details. */
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include "util/arg-parser.h"
|
||||
|
||||
#include "test-harness.h"
|
||||
|
||||
using namespace avian::util;
|
||||
|
||||
class ArgParserTest : public Test {
|
||||
public:
|
||||
ArgParserTest():
|
||||
Test("ArgParser")
|
||||
{}
|
||||
|
||||
virtual void run() {
|
||||
{
|
||||
ArgParser parser;
|
||||
Arg arg1(parser, false, "arg1", "<value>");
|
||||
Arg required2(parser, true, "required2", "<value>");
|
||||
const char* args[] = {
|
||||
"myExecutable",
|
||||
"-arg1", "myValue1",
|
||||
"-required2", "myRequired2",
|
||||
0
|
||||
};
|
||||
assertTrue(parser.parse(sizeof(args) / sizeof(char*) - 1, args));
|
||||
assertEqual("myValue1", arg1.value);
|
||||
assertEqual("myRequired2", required2.value);
|
||||
}
|
||||
|
||||
{
|
||||
ArgParser parser;
|
||||
Arg arg1(parser, false, "arg1", "<value>");
|
||||
Arg required2(parser, true, "required2", "<value>");
|
||||
const char* args[] = {
|
||||
"myExecutable",
|
||||
"-arg1", "myValue1",
|
||||
"-required2",
|
||||
0
|
||||
};
|
||||
assertFalse(parser.parse(sizeof(args) / sizeof(char*) - 1, args));
|
||||
}
|
||||
|
||||
{
|
||||
ArgParser parser;
|
||||
Arg arg1(parser, false, "arg1", "<value>");
|
||||
Arg required2(parser, true, "required2", "<value>");
|
||||
const char* args[] = {
|
||||
"myExecutable",
|
||||
"-arg1", "myValue1",
|
||||
0
|
||||
};
|
||||
assertFalse(parser.parse(sizeof(args) / sizeof(char*) - 1, args));
|
||||
}
|
||||
}
|
||||
} argParserTest;
|
Loading…
Reference in New Issue
Block a user