mirror of
https://github.com/corda/corda.git
synced 2025-04-28 06:49:55 +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 = \
|
unittest-sources = \
|
||||||
$(wildcard $(unittest)/*.cpp) \
|
$(wildcard $(unittest)/*.cpp) \
|
||||||
|
$(wildcard $(unittest)/util/*.cpp) \
|
||||||
$(wildcard $(unittest)/codegen/*.cpp)
|
$(wildcard $(unittest)/codegen/*.cpp)
|
||||||
|
|
||||||
unittest-depends = \
|
unittest-depends = \
|
||||||
@ -1583,7 +1584,7 @@ executable-objects = $(vm-objects) $(classpath-objects) $(driver-object) \
|
|||||||
$(vm-heapwalk-objects) $(boot-object) $(vm-classpath-objects) \
|
$(vm-heapwalk-objects) $(boot-object) $(vm-classpath-objects) \
|
||||||
$(javahome-object) $(boot-javahome-object) $(lzma-decode-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)
|
ifeq ($(process),interpret)
|
||||||
unittest-executable-objects += $(all-codegen-target-objects)
|
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;
|
parser.last = &next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ArgParser::ArgParser():
|
||||||
|
first(0),
|
||||||
|
last(&first) {}
|
||||||
|
|
||||||
bool ArgParser::parse(int ac, const char** av) {
|
bool ArgParser::parse(int ac, const char** av) {
|
||||||
Arg* state = 0;
|
Arg* state = 0;
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@ printf "%12s------- Unit tests -------\n" ""
|
|||||||
${unit_tester} 2>>${log}
|
${unit_tester} 2>>${log}
|
||||||
if [ "${?}" != "0" ]; then
|
if [ "${?}" != "0" ]; then
|
||||||
trouble=1
|
trouble=1
|
||||||
|
echo "unit tests failed!"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
#ifndef TEST_HARNESS_H
|
#ifndef TEST_HARNESS_H
|
||||||
#define TEST_HARNESS_H
|
#define TEST_HARNESS_H
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
class Test {
|
class Test {
|
||||||
private:
|
private:
|
||||||
Test* next;
|
Test* next;
|
||||||
@ -54,6 +56,14 @@ protected:
|
|||||||
runs++;
|
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>
|
template<class T>
|
||||||
void assertNotEqual(T expected, T actual) {
|
void assertNotEqual(T expected, T actual) {
|
||||||
if(expected == actual) {
|
if(expected == 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…
x
Reference in New Issue
Block a user