make create-module.py generate a test skeleton
This commit is contained in:
@@ -19,6 +19,11 @@ def build(bld):
|
||||
'helper/%(MODULE)s-helper.cc',
|
||||
]
|
||||
|
||||
module_test = bld.create_ns3_module_test_library('%(MODULE)s')
|
||||
module_test.source = [
|
||||
'test/%(MODULE)s-test-suite.cc',
|
||||
]
|
||||
|
||||
headers = bld.new_task_gen(features=['ns3header'])
|
||||
headers.module = %(MODULE)r
|
||||
headers.source = [
|
||||
@@ -135,6 +140,76 @@ main (int argc, char *argv[])
|
||||
'''
|
||||
|
||||
|
||||
TEST_CC_TEMPLATE = '''/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
|
||||
|
||||
// Include a header file from your module to test.
|
||||
#include "ns3/%(MODULE)s.h"
|
||||
|
||||
// An essential include is test.h
|
||||
#include "ns3/test.h"
|
||||
|
||||
// Do not put your test classes in namespace ns3. You may find it useful
|
||||
// to use the using directive to access the ns3 namespace directly
|
||||
using namespace ns3;
|
||||
|
||||
// This is an example TestCase.
|
||||
class %(CAPITALIZED)sTestCase1 : public TestCase
|
||||
{
|
||||
public:
|
||||
%(CAPITALIZED)sTestCase1 ();
|
||||
virtual ~%(CAPITALIZED)sTestCase1 ();
|
||||
|
||||
private:
|
||||
virtual void DoRun (void);
|
||||
};
|
||||
|
||||
// Add some help text to this case to describe what it is intended to test
|
||||
%(CAPITALIZED)sTestCase1::%(CAPITALIZED)sTestCase1 ()
|
||||
: TestCase ("%(CAPITALIZED)s test case (does nothing)")
|
||||
{
|
||||
}
|
||||
|
||||
// This destructor does nothing but we include it as a reminder that
|
||||
// the test case should clean up after itself
|
||||
%(CAPITALIZED)sTestCase1::~%(CAPITALIZED)sTestCase1 ()
|
||||
{
|
||||
}
|
||||
|
||||
//
|
||||
// This method is the pure virtual method from class TestCase that every
|
||||
// TestCase must implement
|
||||
//
|
||||
void
|
||||
%(CAPITALIZED)sTestCase1::DoRun (void)
|
||||
{
|
||||
// A wide variety of test macros are available in src/core/test.h
|
||||
NS_TEST_ASSERT_MSG_EQ (true, true, "true doesn't equal true for some reason");
|
||||
// Use this one for floating point comparisons
|
||||
NS_TEST_ASSERT_MSG_EQ_TOL (0.01, 0.01, 0.001, "Numbers are not equal within tolerance");
|
||||
}
|
||||
|
||||
// The TestSuite class names the TestSuite, identifies what type of TestSuite,
|
||||
// and enables the TestCases to be run. Typically, only the constructor for
|
||||
// this class must be defined
|
||||
//
|
||||
class %(CAPITALIZED)sTestSuite : public TestSuite
|
||||
{
|
||||
public:
|
||||
%(CAPITALIZED)sTestSuite ();
|
||||
};
|
||||
|
||||
%(CAPITALIZED)sTestSuite::%(CAPITALIZED)sTestSuite ()
|
||||
: TestSuite ("%(MODULE)s", UNIT)
|
||||
{
|
||||
AddTestCase (new %(CAPITALIZED)sTestCase1);
|
||||
}
|
||||
|
||||
// Do not forget to allocate an instance of this TestSuite
|
||||
static %(CAPITALIZED)sTestSuite %(MODULE)sTestSuite;
|
||||
|
||||
'''
|
||||
|
||||
|
||||
def main(argv):
|
||||
parser = OptionParser(usage=("Usage: %prog [options] modulename\n"
|
||||
"Utility script to create a basic template for a new ns-3 module"))
|
||||
@@ -174,6 +249,17 @@ def main(argv):
|
||||
|
||||
|
||||
|
||||
#
|
||||
# test
|
||||
#
|
||||
testdir = os.path.join(moduledir, "test")
|
||||
os.mkdir(testdir)
|
||||
test_cc = file(os.path.join(moduledir, "test", "%s-test-suite.cc" % modname), "wt")
|
||||
test_cc.write(TEST_CC_TEMPLATE % dict(MODULE=modname,CAPITALIZED=modname.capitalize()))
|
||||
test_cc.close()
|
||||
|
||||
|
||||
|
||||
#
|
||||
# helper
|
||||
#
|
||||
|
||||
Reference in New Issue
Block a user