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

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.pdffathimafancyjeweller
 
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.pdfinfo382133
 
Data Structure Lecture 2
Data Structure Lecture 2Data Structure Lecture 2
Data Structure Lecture 2Teksify
 
Stacks and queue
Stacks and queueStacks and queue
Stacks and queueAmit Vats
 
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docxNew folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docx
New folderjsjfArrayStack.classpackage jsjf;publicsynchronize.docxcurwenmichaela
 
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.pdfSIGMATAX1
 
Start Writing Groovy
Start Writing GroovyStart Writing Groovy
Start Writing GroovyEvgeny Goldin
 
My lecture stack_queue_operation
My lecture stack_queue_operationMy lecture stack_queue_operation
My lecture stack_queue_operationSenthil Kumar
 

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

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 WoodJuan lago vázquez
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
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 DiscoveryTrustArc
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfOrbitshub
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDropbox
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native ApplicationsWSO2
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusZilliz
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Angeliki Cooney
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontologyjohnbeverley2021
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Jeffrey Haguewood
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
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 educationjfdjdjcjdnsjd
 

Recently uploaded (20)

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
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
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
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 

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