exceptions thrown when running app with failed unittests

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Mar 19 15:21:15 PDT 2017


On 03/19/2017 03:13 PM, Ervin Bosenbacher wrote:
 > Its my 2nd day into D, I am already in deep love (:D),  and I would like
 > to understand whether this is normal behavior or something went terribly
 > wrong, so all help is greatly appreciated.
 >
 > Following the book of The D Programming language I have the code below:
 >
 > bool binarySearch(T)(T[] input, T value) {
 >     while (!input.empty) {
 >         auto i = input.length / 2;
 >         auto mid = input[i];
 >         if (mid > value) input = input[0 .. i];
 >         else if (mid < value) input = input[i + 1 .. $];
 >         else return true;
 >     }
 >     return false;
 > }
 >
 > @safe nothrow unittest {
 >     assert(binarySearch([ 1, 3, 6, 7, 9, 15 ], 6));

That should return true and the assertion will pass.

 >     assert(binarySearch([ 1, 3, 6, 7, 9, 15 ], 5));

Since there is no 5 in the array, that will return false and the 
assertion will fail, which means that the tests failed.

 > }
 >
 > void main() {
 >
 >     bool s1 = binarySearch([1, 3, 6, 7, 9, 15], 6);
 >     bool s2 = binarySearch!(int)([1, 3, 6, 7, 9, 15], 5);
 >     writeln(s1, s2);
 > }
 >
 > Then I compile using the command
 > $ dmd source/app.d -unittest
 >
 > and execute as follows
 > $ ./app

So, effectively you requested a unit test run and it failed.

 >
 > Then the output
 > core.exception.AssertError at source/app.d(62): unittest failure
 > ----------------

Unless I'm missing something in your question, that's exactly the 
expected outcome. :)

Ali



More information about the Digitalmars-d-learn mailing list