Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > unit--, a unit test framework for C++

Reply
Thread Tools

unit--, a unit test framework for C++

 
 
VvanN
Guest
Posts: n/a
 
      04-15-2006
hi, fellows

I'd like to intruduce a new unit test framework for C++
freely available at:

http://unit--.sourceforge.net/

It does not need bothering test registration, here is an example

// --- begin code ---
#include "unit--.h"

testSuite(MySuite);

testCase(CompareCase, MySuite)
{
int x = 1;
int y = x + 2;
assertTrue(x < y);
}
// --- end code ---

besides, unit-- is implemented entirely in std C++, thus is portable
across different platforms and compilers

 
Reply With Quote
 
 
 
 
Phlip
Guest
Posts: n/a
 
      04-15-2006
VvanN wrote:

> I'd like to intruduce a new unit test framework for C++
> freely available at:
>
> http://unit--.sourceforge.net/
>
> It does not need bothering test registration, here is an example


Righteous. CppUnit mires itself in endless test registration issues, instead
of simply using macros to achieve the Test Collector pattern.

> // --- begin code ---
> #include "unit--.h"
>
> testSuite(MySuite);
>
> testCase(CompareCase, MySuite)
> {
> int x = 1;
> int y = x + 2;
> assertTrue(x < y);
> }
> // --- end code ---


Suppose I had two suites and wanted to run the same case over both suites?

http://c2.com/cgi/wiki?AbstractTest

Suppose a test case uses std::basic_string<>. How would I run the test case
twice, once with char and again with wchar_t?

> besides, unit-- is implemented entirely in std C++, thus is portable
> across different platforms and compilers


Contrarily, at error time, your editor should present the option to navigate
to a failure, the same as syntax errors.

--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!!


 
Reply With Quote
 
 
 
 
Dave Steffen
Guest
Posts: n/a
 
      04-17-2006
"Phlip" <(E-Mail Removed)> writes:

> VvanN wrote:
>
> > I'd like to intruduce a new unit test framework for C++
> > freely available at:
> >
> > http://unit--.sourceforge.net/
> >
> > It does not need bothering test registration, here is an example

>
> Righteous. CppUnit mires itself in endless test registration issues, instead
> of simply using macros to achieve the Test Collector pattern.


Those interested in such things might also check out the Boost unit
test framework <http://www.boost.org/libs/test/doc/index.html>; I've
had very good results using it.

----------------------------------------------------------------------
Dave Steffen, Ph.D. Fools ignore complexity.
Software Engineer IV Pragmatists suffer it.
Numerica Corporation Some can avoid it.
ph (970) 419-8343 x27 Geniuses remove it.
fax (970) 223-6797 -- Alan Perlis
dgsteffen at numerica dot us
 
Reply With Quote
 
Phlip
Guest
Posts: n/a
 
      04-17-2006
Dave Steffen wrote:

> Those interested in such things might also check out the Boost unit
> test framework <http://www.boost.org/libs/test/doc/index.html>; I've
> had very good results using it.


That one always squicks me out.

Specifically, it relies on excessive test registration calls, and doesn't
use any Test Collector, despite otherwise freely abusing macros...

--
Phlip
http://www.greencheese.org/ZeekLand <-- NOT a blog!!!
 
Reply With Quote
 
VvanN
Guest
Posts: n/a
 
      04-28-2006
Phlip wrote:
> VvanN wrote:
>
> > I'd like to intruduce a new unit test framework for C++
> > freely available at:
> >
> > http://unit--.sourceforge.net/
> >
> > It does not need bothering test registration, here is an example

>
> Righteous. CppUnit mires itself in endless test registration issues, instead
> of simply using macros to achieve the Test Collector pattern.
>
> > // --- begin code ---
> > #include "unit--.h"
> >
> > testSuite(MySuite);
> >
> > testCase(CompareCase, MySuite)
> > {
> > int x = 1;
> > int y = x + 2;
> > assertTrue(x < y);
> > }
> > // --- end code ---

>
> Suppose I had two suites and wanted to run the same case over both suites?
>
> http://c2.com/cgi/wiki?AbstractTest
>
> Suppose a test case uses std::basic_string<>. How would I run the test case
> twice, once with char and again with wchar_t?
>

we might consider that they are different test cases,
but they have code in common.

"extract method"
(http://www.refactoring.com/catalog/extractMethod.html)
could work for this scenario.
assertTrue() can effect in functions invoked by a testCase

here is an example:

// --- begin code ---
#include <vector>
#include <numeric>
#include <algorithm>
#include "../unit--.h"

testSuite(TemplateSuite)

template <typename T>
void testAlgorithms()
{
using namespace std;
using namespace unit_minus;
vector<T> ve(100, 1);
partial_sum(ve.begin(), ve.end(), ve.begin());

assertTrue(ve.size() > 0);
assertTrue(1 == ve[0]);
for (unsigned i = 1; i < ve.size(); ++i) {
assertTrue(ve[i - 1] + 1 < ve[i]);
}
}

namespace {
testCase(IntCase, TemplateSuite)
{
testAlgorithms<int>();
}

testCase(UnsignedCase, TemplateSuite)
{
testAlgorithms<unsigned>();
}

} // namespace
// --- end code ---

> > besides, unit-- is implemented entirely in std C++, thus is portable
> > across different platforms and compilers

>
> Contrarily, at error time, your editor should present the option to navigate
> to a failure, the same as syntax errors.
>
> --
> Phlip
> http://www.greencheese.org/ZeekLand <-- NOT a blog!!!


 
Reply With Quote
 
Phlip
Guest
Posts: n/a
 
      04-28-2006
VvanN wrote:

> testSuite(TemplateSuite)
>
> template <typename T>
> void testAlgorithms()
> {
> using namespace std;
> using namespace unit_minus;
> vector<T> ve(100, 1);
> partial_sum(ve.begin(), ve.end(), ve.begin());
>
> assertTrue(ve.size() > 0);
> assertTrue(1 == ve[0]);
> for (unsigned i = 1; i < ve.size(); ++i) {
> assertTrue(ve[i - 1] + 1 < ve[i]);
> }
> }
>
> namespace {
> testCase(IntCase, TemplateSuite)
> {
> testAlgorithms<int>();
> }
>
> testCase(UnsignedCase, TemplateSuite)
> {
> testAlgorithms<unsigned>();
> }
>
> } // namespace
> // --- end code ---


Thanks!

One use of AbstractTest is to turn a cases' setUp() and tearDown() into an
abstract factory. setUp() will create a different type, so a common case
body can work across a range of types. Your code doesn't need this effect
because your assertions are not members of the basic TestCase class.

(Assertions are typically macros, so I mean macros are members when they use
member variables inside them.)

--
Phlip
http://c2.com/cgi/wiki?ZeekLand <-- NOT a blog!!!


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
contradicting unit test regarding blocks pass, bug in unit/test? timr Ruby 2 11-20-2010 06:30 AM
Test::Unit - Ruby Unit Testing Framework Questions Bill Mosteller Ruby 0 10-22-2009 02:02 PM
All of us know about unit test. But what's a unit? Bill David Java 2 06-18-2008 12:40 AM
Unit Test Framework for c++ program sylcheung@gmail.com C++ 4 01-11-2006 10:50 AM
test test test test test test test Computer Support 2 07-02-2003 06:02 PM



Advertisments