SlideShare a Scribd company logo
1 of 12
Download to read offline
BDD with Boost Test
describe "a stack" do
  let(:stack) { [] }

  context "when initialised" do
    it "should be empty" do
      stack.should be_empty
    end
  end

  describe "pop" do
    context "on an empty stack" do
      before(:each) {
        stack.should be_empty
      }

      it "should have no effect" do
        stack.pop
        stack.should be_empty
                                    context "on a stack with a single member" do
      end
                                      before(:each) {
    end
                                        stack.push(1)
                                        stack.size.should be(1)
                                      }

                                        it "should result in an empty stack" do
                                          stack.pop
                                          stack.should be_empty
                                        end

                                        it "should reduce the stack size by one" do
                                          expect { stack.pop }.to change { stack.size }.by(-1)
                                        end
                                      end
                                    end
                                  end
a stack
  when initialised
    should be empty
  pop
    on an empty stack
      should have no effect
    on a stack with a single member
      should result in an empty stack
      should reduce the stack size by one
describe "a stack" do
  let(:stack) { [] }

  describe "pop" do
    context "on a stack with a single member" do
      before(:each) {
        stack.push(1)
        stack.size.should be(1)
      }

      it "should reduce the stack size by one" do
        expect {
          stack.pop
        }.to change { stack.size }.by(-1)
      end
    end
  end
end
struct a_stack_ {
   Stack<int> stack;
};

BOOST_FIXTURE_TEST_SUITE(a_stack, a_stack_)
  BOOST_AUTO_TEST_SUITE(pop)

    struct on_a_stack_with_a_single_member_: a_stack_ {
       on_a_stack_with_a_single_member_() {
         stack.push(1);
         BOOST_REQUIRE_EQUAL(stack.size(), 1);
       }
    };

    BOOST_FIXTURE_TEST_SUITE(on_a_stack_with_a_single_member,
                              on_a_stack_with_a_single_member_)
      BOOST_AUTO_TEST_CASE(should_reduce_the_stack_size_by_one)
      {
        std::size_t orig_size = stack.size();
        stack.pop();
        BOOST_CHECK_EQUAL(stack.size(), orig_size - 1);
      }
    BOOST_AUTO_TEST_SUITE_END()
  BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
Entering test suite "a_stack"
Entering test suite "pop"
Entering test suite "on_a_stack_with_a_single_member"
Entering test case "should_reduce_the_stack_size_by_one"
Leaving test case "should_reduce_the_stack_size_by_one"
Leaving test suite "on_a_stack_with_a_single_member"
Leaving test suite "pop"
Leaving test suite "a_stack"
class SpecLogFormatter:
  public boost::unit_test::output::compiler_log_formatter {

public:
  SpecLogFormatter(): m_indent(0) {}

private:
  void test_unit_start(std::ostream &os,
    boost::unit_test::test_unit const& tu)
  {
    os << std::string(m_indent, ' ') <<
      boost::replace_all_copy(tu.p_name.get(), "_", " ") << std::endl;
    m_indent += 2;
  }

     void test_unit_finish(std::ostream &os,
       boost::unit_test::test_unit const& tu, unsigned long elapsed)
     {
       m_indent -= 2;
     }

     int m_indent;
};
a stack
  pop
    on a stack with a single member
      should reduce the stack size by one
a stack
  when initialised
    should be empty
  pop
    on an empty stack
      should have no effect
    on a stack with a single member
      should result in an empty stack
      should reduce the stack size by one
struct a_stack_ {
   Stack<int> stack;
};

BOOST_FIXTURE_TEST_SUITE(a_stack, a_stack_)
  BOOST_AUTO_TEST_SUITE(when_initialised)
    BOOST_AUTO_TEST_CASE(should_be_empty)
    {
      BOOST_CHECK(stack.empty());
    }
  BOOST_AUTO_TEST_SUITE_END()

  BOOST_AUTO_TEST_SUITE(pop)

    struct on_an_empty_stack_: a_stack_ {
       on_an_empty_stack_() {
         BOOST_REQUIRE(stack.empty());
       }
    };

    BOOST_FIXTURE_TEST_SUITE(on_an_empty_stack, on_an_empty_stack_)
      BOOST_AUTO_TEST_CASE(should_have_no_effect)
      {
        stack.pop();
        BOOST_CHECK(stack.empty());
      }
    BOOST_AUTO_TEST_SUITE_END()

    struct on_a_stack_with_a_single_member_: a_stack_ {
       on_a_stack_with_a_single_member_() {
         stack.push(1);
         BOOST_REQUIRE_EQUAL(stack.size(), 1);
       }
    };
BOOST_FIXTURE_TEST_SUITE(on_a_stack_with_a_single_member,
                             on_a_stack_with_a_single_member_)
      BOOST_AUTO_TEST_CASE(should_result_in_an_empty_stack)
      {
        stack.pop();
        BOOST_CHECK(stack.empty());
      }

      BOOST_AUTO_TEST_CASE(should_reduce_the_stack_size_by_one)
      {
        std::size_t orig_size = stack.size();
        stack.pop();
        BOOST_CHECK_EQUAL(stack.size(), orig_size - 1);
      }
    BOOST_AUTO_TEST_SUITE_END()
  BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()
macros

More Related Content

Similar to BDD with Boost Test

Given an expression string exp, write a java class ExpressionCheccke.pdf
Given an expression string exp, write a java class ExpressionCheccke.pdfGiven an expression string exp, write a java class ExpressionCheccke.pdf
Given an expression string exp, write a java class ExpressionCheccke.pdf
info382133
 
Stacks and queue
Stacks and queueStacks and queue
Stacks and queue
Amit Vats
 
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docxNew folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
curwenmichaela
 
Implement the ADT stack by using an array stack to contain its entri.pdf
Implement the ADT stack by using an array stack to contain its entri.pdfImplement the ADT stack by using an array stack to contain its entri.pdf
Implement the ADT stack by using an array stack to contain its entri.pdf
SIGMATAX1
 

Similar to BDD with Boost Test (19)

Please review my code (java)Someone helped me with it but i cannot.pdf
Please review my code (java)Someone helped me with it but i cannot.pdfPlease review my code (java)Someone helped me with it but i cannot.pdf
Please review my code (java)Someone helped me with it but i cannot.pdf
 
Given an expression string exp, write a java class ExpressionCheccke.pdf
Given an expression string exp, write a java class ExpressionCheccke.pdfGiven an expression string exp, write a java class ExpressionCheccke.pdf
Given an expression string exp, write a java class ExpressionCheccke.pdf
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Stack queue
Stack queueStack queue
Stack queue
 
Data Structure Lecture 2
Data Structure Lecture 2Data Structure Lecture 2
Data Structure Lecture 2
 
Stacks and queue
Stacks and queueStacks and queue
Stacks and queue
 
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docxNew folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
 
Implement the ADT stack by using an array stack to contain its entri.pdf
Implement the ADT stack by using an array stack to contain its entri.pdfImplement the ADT stack by using an array stack to contain its entri.pdf
Implement the ADT stack by using an array stack to contain its entri.pdf
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing Groovy
 
Stack
StackStack
Stack
 
Stacks
StacksStacks
Stacks
 
04 stacks
04 stacks04 stacks
04 stacks
 
Stacks
StacksStacks
Stacks
 
My lecture stack_queue_operation
My lecture stack_queue_operationMy lecture stack_queue_operation
My lecture stack_queue_operation
 

Recently uploaded

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Recently uploaded (20)

Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

BDD with Boost Test

  • 2. describe "a stack" do let(:stack) { [] } context "when initialised" do it "should be empty" do stack.should be_empty end end describe "pop" do context "on an empty stack" do before(:each) { stack.should be_empty } it "should have no effect" do stack.pop stack.should be_empty context "on a stack with a single member" do end before(:each) { end stack.push(1) stack.size.should be(1) } it "should result in an empty stack" do stack.pop stack.should be_empty end it "should reduce the stack size by one" do expect { stack.pop }.to change { stack.size }.by(-1) end end end end
  • 3. a stack when initialised should be empty pop on an empty stack should have no effect on a stack with a single member should result in an empty stack should reduce the stack size by one
  • 4. describe "a stack" do let(:stack) { [] } describe "pop" do context "on a stack with a single member" do before(:each) { stack.push(1) stack.size.should be(1) } it "should reduce the stack size by one" do expect { stack.pop }.to change { stack.size }.by(-1) end end end end
  • 5. struct a_stack_ { Stack<int> stack; }; BOOST_FIXTURE_TEST_SUITE(a_stack, a_stack_) BOOST_AUTO_TEST_SUITE(pop) struct on_a_stack_with_a_single_member_: a_stack_ { on_a_stack_with_a_single_member_() { stack.push(1); BOOST_REQUIRE_EQUAL(stack.size(), 1); } }; BOOST_FIXTURE_TEST_SUITE(on_a_stack_with_a_single_member, on_a_stack_with_a_single_member_) BOOST_AUTO_TEST_CASE(should_reduce_the_stack_size_by_one) { std::size_t orig_size = stack.size(); stack.pop(); BOOST_CHECK_EQUAL(stack.size(), orig_size - 1); } BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()
  • 6. Entering test suite "a_stack" Entering test suite "pop" Entering test suite "on_a_stack_with_a_single_member" Entering test case "should_reduce_the_stack_size_by_one" Leaving test case "should_reduce_the_stack_size_by_one" Leaving test suite "on_a_stack_with_a_single_member" Leaving test suite "pop" Leaving test suite "a_stack"
  • 7. class SpecLogFormatter: public boost::unit_test::output::compiler_log_formatter { public: SpecLogFormatter(): m_indent(0) {} private: void test_unit_start(std::ostream &os, boost::unit_test::test_unit const& tu) { os << std::string(m_indent, ' ') << boost::replace_all_copy(tu.p_name.get(), "_", " ") << std::endl; m_indent += 2; } void test_unit_finish(std::ostream &os, boost::unit_test::test_unit const& tu, unsigned long elapsed) { m_indent -= 2; } int m_indent; };
  • 8. a stack pop on a stack with a single member should reduce the stack size by one
  • 9. a stack when initialised should be empty pop on an empty stack should have no effect on a stack with a single member should result in an empty stack should reduce the stack size by one
  • 10. struct a_stack_ { Stack<int> stack; }; BOOST_FIXTURE_TEST_SUITE(a_stack, a_stack_) BOOST_AUTO_TEST_SUITE(when_initialised) BOOST_AUTO_TEST_CASE(should_be_empty) { BOOST_CHECK(stack.empty()); } BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE(pop) struct on_an_empty_stack_: a_stack_ { on_an_empty_stack_() { BOOST_REQUIRE(stack.empty()); } }; BOOST_FIXTURE_TEST_SUITE(on_an_empty_stack, on_an_empty_stack_) BOOST_AUTO_TEST_CASE(should_have_no_effect) { stack.pop(); BOOST_CHECK(stack.empty()); } BOOST_AUTO_TEST_SUITE_END() struct on_a_stack_with_a_single_member_: a_stack_ { on_a_stack_with_a_single_member_() { stack.push(1); BOOST_REQUIRE_EQUAL(stack.size(), 1); } };
  • 11. BOOST_FIXTURE_TEST_SUITE(on_a_stack_with_a_single_member, on_a_stack_with_a_single_member_) BOOST_AUTO_TEST_CASE(should_result_in_an_empty_stack) { stack.pop(); BOOST_CHECK(stack.empty()); } BOOST_AUTO_TEST_CASE(should_reduce_the_stack_size_by_one) { std::size_t orig_size = stack.size(); stack.pop(); BOOST_CHECK_EQUAL(stack.size(), orig_size - 1); } BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END() BOOST_AUTO_TEST_SUITE_END()