BDD

Behavior Driven Development testing framework for the D programming language

Discussion

Home page: https://github.com/workhorsy/BDD

Version

4.0.0

License

Boost Software License - Version 1.0

Examples

  1. import BDD;
    
    int add(int a, int b) {
    	return a + b;
    }
    
    unittest {
    	describe("math#add",
    		before(delegate() {
    
    		}),
    		after(delegate() {
    
    		}),
    		it("Should add positive numbers", delegate() {
    			add(5, 7).shouldEqual(12);
    		}),
    		it("Should add negative numbers", delegate() {
    			add(5, -7).shouldEqual(-2);
    		})
    	);
    }
    
    

  • Declaration

    void shouldEqual(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is equal to another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should be equal to.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If values are not equal, will throw an AssertError with expected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <3> expected to equal <5>."
      int z = 3;
      z.shouldEqual(5);
      

  • Declaration

    void shouldNotEqual(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is NOT equal to another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should NOT be equal to.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If values are NOT equal, will throw an AssertError with unexpected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <3> expected to NOT equal <3>."
      int z = 3;
      z.shouldNotEqual(3);
      

  • Declaration

    void shouldBeNull(T)(T a, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is equal to null.

    Parameters

    T a

    The value that should equal null.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If value is NOT null, will throw an AssertError.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): expected to be <null>."
      string z = "blah";
      z.shouldBeNull();
      

  • Declaration

    void shouldNotBeNull(T)(T a, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is NOT equal to null.

    Parameters

    T a

    The value that should NOT equal null.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If value is null, will throw an AssertError.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): expected to NOT be <null>."
      string z = null;
      z.shouldNotBeNull();
      

  • Declaration

    void shouldBeIn(T, U)(T value, U[] valid_values, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is in an array of specified values.

    Parameters

    T value

    The value to test.

    U[] valid_values

    An array of valid values.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is not in the array, will throw an AssertError with the value and array values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <Bobrick> is not in <[Tim, Al]>."
      "Bobrick".shouldBeIn(["Tim", "Al"]);
      

  • Declaration

    void shouldNotBeIn(T, U)(T value, U[] valid_values, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is NOT in an array of specified values.

    Parameters

    T value

    The value to test.

    U[] valid_values

    An array of valid values.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is in the array, will throw an AssertError with the value and array values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <Mark> is in <[Tim, Mark]>."
      "Mark".shouldNotBeIn(["Tim", "Mark"]);
      

  • Declaration

    void shouldBeGreater(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is greater than another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should be greater than.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is NOT greater, will throw an AssertError with expected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <5> expected to be greater than <10>."
      5.shouldBeGreater(10);
      

  • Declaration

    void shouldBeLess(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is less than another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should be less than.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is NOT less, will throw an AssertError with expected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <10> expected to be less than <5>."
      10.shouldBeLess(5);
      

  • Declaration

    void shouldBeGreaterOrEqual(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is greater or equal than another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should be greater or equal than.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is NOT greater or equal, will throw an AssertError with expected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <5> expected to be greater or equal to <10>."
      5.shouldBeGreaterOrEqual(10);
      

  • Declaration

    void shouldBeLessOrEqual(T, U)(T a, U b, string message = null, string file = __FILE__, size_t line = __LINE__);

    Used to assert that one value is less or equal than another value.

    Parameters

    T a

    The value to test.

    U b

    The value it should be less or equal than.

    string message

    The custom message to display instead of default.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If the value is NOT less or equal, will throw an AssertError with expected and actual values.

    Examples

    1. // Will throw an exception like "AssertError@example.d(6): <10> expected to be less or equal to <5>."
      10.shouldBeLessOrEqual(5);
      

  • Declaration

    void shouldThrow(void delegate() cb, string file = __FILE__, size_t line = __LINE__);

    Used for asserting that a delegate will throw an exception.

    Parameters

    void delegate() cb

    The delegate that is expected to throw the exception.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If delegate does NOT throw, will throw an AssertError.

    Examples

    1. // Makes sure it throws, but does not check the message
      shouldThrow(delegate() {
      	throw new Exception("boom!");
      });
      
      // Will throw an exception like "AssertError@test/example.d(7): Exception was not thrown. Expected one.
      shouldThrow(delegate() {
      
      });
      

  • Declaration

    void shouldThrow(string message, void delegate() cb, string file = __FILE__, size_t line = __LINE__);

    Used for asserting that a delegate will throw an exception.

    Parameters

    void delegate() cb

    The delegate that is expected to throw the exception.

    string message

    The message that is expected to be in the exception. Will not be tested, if it is null.

    string file

    The file name that the assert failed in. Should be left as default.

    size_t line

    The file line that the assert failed in. Should be left as default.

    Throws

    If delegate does NOT throw, will throw an AssertError.

    Examples

    1. // Makes sure it throws with the message "boom!"
      shouldThrow("boom!", delegate() {
      	throw new Exception("boom!");
      });
      
      // Will throw an exception like "AssertError@test/example.d(7): Exception was not thrown. Expected: boom!"
      shouldThrow("boom!", delegate() {
      
      });
      

  • Declaration

    void describe(string describe_message, ItFunc[] its...);

    Used to describe the thing being tested. Contains many 'it' functions to test the thing.

    Parameters

    string describe_message

    The thing that is being described.

    ItFunc[] its

    All the 'it' functions that will test the thing.

    Examples

    1. 	describe("example_library#thing_to_test",
      		it("Should NOT fail", delegate() {
      			// test code here
      		})
      	);
      

  • Declaration

    void describe(string describe_message, BeforeFunc before, ItFunc[] its...);

    Used to describe the thing being tested. Contains many 'it' functions to test the thing. Also takes a function to run before each test.

    Parameters

    string describe_message

    The thing that is being described.

    BeforeFunc before

    The function that will run before each 'it' function. If the before function fails, the 'it' function will not be run.

    ItFunc[] its

    All the 'it' functions that will test the thing.

    Examples

    1. 	describe("example_library#thing_to_test",
      		before(delegate() {
      			// setup code here
      		}),
      		it("Should NOT fail", delegate() {
      			// test code here
      		})
      	);
      

  • Declaration

    void describe(string describe_message, AfterFunc after, ItFunc[] its...);

    Used to describe the thing being tested. Contains many 'it' functions to test the thing. Also takes a function to run after each test.

    Parameters

    string describe_message

    The thing that is being described.

    AfterFunc after

    The function that will run after each 'it' function. Will alwasy run, even if the 'before' or 'it' function failed.

    ItFunc[] its

    All the 'it' functions that will test the thing.

    Examples

    1. 	describe("example_library#thing_to_test",
      		after(delegate() {
      			// tear down code here
      		}),
      		it("Should NOT fail", delegate() {
      			// test code here
      		})
      	);
      

  • Declaration

    void describe(string describe_message, BeforeFunc before, AfterFunc after, ItFunc[] its...);

    Used to describe the thing being tested. Contains many 'it' functions to test the thing. Also takes a function to run before, and a function to run after each test.

    Parameters

    string describe_message

    The thing that is being described.

    BeforeFunc before

    The function that will run before each 'it' function. If the before function fails, the 'it' function will not be run.

    AfterFunc after

    The function that will run after each 'it' function. Will alwasy run, even if the 'before' or 'it' function failed.

    ItFunc[] its

    All the 'it' functions that will test the thing.

    Examples

    1. 	describe("example_library#thing_to_test",
      		before(delegate() {
      			// setup code here
      		}),
      		after(delegate() {
      			// tear down code here
      		}),
      		it("Should NOT fail", delegate() {
      			// test code here
      		})
      	);
      

  • it

    Declaration

    ItFunc it(string message, void delegate() func, string file = __FILE__, size_t line = __LINE__);

    The message should describe what the test should do.

    Parameters

    string message

    The message to print when the test fails.

    void delegate() func

    The delegate to call when running the test.

    string file

    The file name that the 'it' is located in. Should be left as default.

    size_t line

    The file line that the 'it' is located at. Should be left as default.

    Examples

    1. int a = 4;
      describe("example_library#a",
      	it("Should equal 4", delegate() {
      		a.shouldEqual(4);
      	}),
      	it("Should Not equal 5", delegate() {
      		a.shouldNotEqual(5);
      	})
      );
      

  • Declaration

    BeforeFunc before(void delegate() func, string file = __FILE__, size_t line = __LINE__);

    The function to call before each 'it' function.

    Parameters

    void delegate() func

    The function to call before running each test.

    string file

    The file name that the 'before' is located in. Should be left as default.

    size_t line

    The file line that the 'before' is located at. Should be left as default.

    Examples

    1. int a = 4;
      describe("example_library#a",
      	before(delegate() {
      		a.shouldEqual(4);
      	}),
      	it("Should test more things", delegate() {
      		//
      	})
      );
      

  • Declaration

    AfterFunc after(void delegate() func, string file = __FILE__, size_t line = __LINE__);

    The function to call after each 'it' function.

    Parameters

    void delegate() func

    The function to call after running each test.

    string file

    The file name that the 'after' is located in. Should be left as default.

    size_t line

    The file line that the 'after' is located at. Should be left as default.

    Examples

    1. int a = 4;
      describe("example_library#a",
      	after(delegate() {
      		a.shouldEqual(4);
      	}),
      	it("Should test more things", delegate() {
      		//
      	})
      );