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)

Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
+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...
 

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()