www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Question about unittests

reply mfeathers <mfeathers objectmentor.com> writes:
I was looking at the spec and it mentions that "unittest" is a special 
method in classes.

Can you have more than one unittest method in a class?
Jan 10 2007
parent reply Alexander Panek <a.panek brainsware.org> writes:
mfeathers wrote:
 
 I was looking at the spec and it mentions that "unittest" is a special 
 method in classes.
 
 Can you have more than one unittest method in a class?
 
Unittests are actually not methods inside classes, but more statement blocks that are executed when you compile & execute unittests. So, they work as if you provide a void main () {} in every file/class/whatever scope you put them in. And yes, IIRC, you can have multiple unittest blocks per file, too. Though, they are all executed then. You could workaround that with version() { } blocks.
Jan 10 2007
parent reply mfeathers <mfeathers objectmentor.com> writes:
Thanks.  Another quick question.  Is "assert" legal syntax outside of 
contacts and unit tests?  For instance, can I do this:

unittest {
     someMethod();
}

void someMethod() {
     assert 0 == 1
}

Michael Feathers

Alexander Panek wrote:
 mfeathers wrote:
 
 I was looking at the spec and it mentions that "unittest" is a special 
 method in classes.

 Can you have more than one unittest method in a class?
Unittests are actually not methods inside classes, but more statement blocks that are executed when you compile & execute unittests. So, they work as if you provide a void main () {} in every file/class/whatever scope you put them in. And yes, IIRC, you can have multiple unittest blocks per file, too. Though, they are all executed then. You could workaround that with version() { } blocks.
Jan 10 2007
next sibling parent Lars Ivar Igesund <larsivar igesund.net> writes:
mfeathers wrote:

 
 Thanks.  Another quick question.  Is "assert" legal syntax outside of
 contacts and unit tests?  For instance, can I do this:
 
 unittest {
      someMethod();
 }
 
 void someMethod() {
      assert 0 == 1
 }
assert(0 == 1);, but otherwise yes. -- Lars Ivar Igesund blog at http://larsivi.net DSource & #D: larsivi Dancing the Tango
Jan 10 2007
prev sibling parent reply Ary Manzana <ary esperanto.org.ar> writes:
mfeathers escribió:
 
 Thanks.  Another quick question.  Is "assert" legal syntax outside of 
 contacts and unit tests?  For instance, can I do this:
 
 unittest {
     someMethod();
 }
 
 void someMethod() {
     assert 0 == 1
 }
Yes. Asserts are always evaluated if you provided -debug to the compiler. Of course for asserts in unittests to work you also have to provider -unittest to the compiler.
Jan 10 2007
parent BCS <ao pathlink.com> writes:
Reply to Ary,

 mfeathers escribió:
 
 Thanks.  Another quick question.  Is "assert" legal syntax outside of
 contacts and unit tests?  For instance, can I do this:
 
 unittest {
 someMethod();
 }
 void someMethod() {
 assert 0 == 1
 }
Yes. Asserts are always evaluated if you provided -debug to the compiler. Of course for asserts in unittests to work you also have to provider -unittest to the compiler.
asserts are active unless you give the -release flag, even without the -debug flag
Jan 10 2007