How to write this unit-test with more standard testing libraries

How do I hide Chekhov's Gun?

What is the purpose or proof behind chain rule?

Knife as defense against stray dogs

Encrypting then Base64 Encoding

Do I need to be arrogant to get ahead?

New passport but visa is in old (lost) passport

Book: Young man exiled to a penal colony, helps to lead revolution

While on vacation my taxi took a longer route, possibly to scam me out of money. How can I deal with this?

Recruiter wants very extensive technical details about all of my previous work

Is Manda another name for Saturn (Shani)?

How to pronounce "I ♥ Huckabees"?

Brexit - No Deal Rejection

Is honey really a supersaturated solution? Does heating to un-crystalize redissolve it or melt it?

Why do newer 737s use two different styles of split winglets?

Why is there is so much iron?

How difficult is it to simply disable/disengage the MCAS on Boeing 737 Max 8 & 9 Aircraft?

Do the common programs (for example: "ls", "cat") in Linux and BSD come from the same source code?

Can I use USB data pins as a power source?

Different outputs for `w`, `who`, `whoami` and `id`

Did Ender ever learn that he killed Stilson and/or Bonzo?

Violin - Can double stops be played when the strings are not next to each other?

What is the adequate fee for a reveal operation?

Bacteria contamination inside a thermos bottle

Why does a Star of David appear at a rally with Francisco Franco?



How to write this unit-test with more standard testing libraries














0












$begingroup$


Here is a simple unit-test I wrote for a binary-search-tree class (I removed a lot of tests to focus on the main question):



#include <iostream>
using std::cout, std::endl;
#include "Tree.hpp"
#include "badkan.hpp"

int main()
Tree tree;

badkan::TestCase tc("Binary tree");
tc
.CHECK_EQUAL (tree.size(), 0)
.CHECK_EQUAL (tree.contains(5), false)
.CHECK_OK (tree.insert(5))
.CHECK_EQUAL (tree.size(), 1)
.CHECK_EQUAL (tree.contains(5), true)
.CHECK_OK (tree.remove(5))
.CHECK_EQUAL (tree.contains(5), false)
.CHECK_THROWS(tree.remove(5))
.CHECK_EQUAL (tree.size() ,0)
;

cout << "You have " << tc.right() << " right answers and " << tc.wrong() << " wrong answers so your grade is " << tc.grade() << ". Great!" << endl;



The "badkan.hpp" is a simple library that I wrote for unit-testing: https://github.com/erelsgl/ariel-cpp-5779/blob/master/02-classes-constructors-destructors/homework/badkan.hpp



The program defines a TestCase variable tc, then runs one of the methods:



  • CHECK_EQUAL to check that the outcome of a function equals a certain value;

  • CHECK_OK to check that the given function runs without exceptions;

  • CHECK_THROWS to check that the given function throws an exception.

Finally, it prints the number of right and wrong answers and calculates the grade (right/(right+wrong)).



There are many things to improve here, but the main thing I am interested in is: how to write this code using a more standard library for unitesting, such as: GoogleTest, catch2, doctest, etc.?









share









$endgroup$
















    0












    $begingroup$


    Here is a simple unit-test I wrote for a binary-search-tree class (I removed a lot of tests to focus on the main question):



    #include <iostream>
    using std::cout, std::endl;
    #include "Tree.hpp"
    #include "badkan.hpp"

    int main()
    Tree tree;

    badkan::TestCase tc("Binary tree");
    tc
    .CHECK_EQUAL (tree.size(), 0)
    .CHECK_EQUAL (tree.contains(5), false)
    .CHECK_OK (tree.insert(5))
    .CHECK_EQUAL (tree.size(), 1)
    .CHECK_EQUAL (tree.contains(5), true)
    .CHECK_OK (tree.remove(5))
    .CHECK_EQUAL (tree.contains(5), false)
    .CHECK_THROWS(tree.remove(5))
    .CHECK_EQUAL (tree.size() ,0)
    ;

    cout << "You have " << tc.right() << " right answers and " << tc.wrong() << " wrong answers so your grade is " << tc.grade() << ". Great!" << endl;



    The "badkan.hpp" is a simple library that I wrote for unit-testing: https://github.com/erelsgl/ariel-cpp-5779/blob/master/02-classes-constructors-destructors/homework/badkan.hpp



    The program defines a TestCase variable tc, then runs one of the methods:



    • CHECK_EQUAL to check that the outcome of a function equals a certain value;

    • CHECK_OK to check that the given function runs without exceptions;

    • CHECK_THROWS to check that the given function throws an exception.

    Finally, it prints the number of right and wrong answers and calculates the grade (right/(right+wrong)).



    There are many things to improve here, but the main thing I am interested in is: how to write this code using a more standard library for unitesting, such as: GoogleTest, catch2, doctest, etc.?









    share









    $endgroup$














      0












      0








      0





      $begingroup$


      Here is a simple unit-test I wrote for a binary-search-tree class (I removed a lot of tests to focus on the main question):



      #include <iostream>
      using std::cout, std::endl;
      #include "Tree.hpp"
      #include "badkan.hpp"

      int main()
      Tree tree;

      badkan::TestCase tc("Binary tree");
      tc
      .CHECK_EQUAL (tree.size(), 0)
      .CHECK_EQUAL (tree.contains(5), false)
      .CHECK_OK (tree.insert(5))
      .CHECK_EQUAL (tree.size(), 1)
      .CHECK_EQUAL (tree.contains(5), true)
      .CHECK_OK (tree.remove(5))
      .CHECK_EQUAL (tree.contains(5), false)
      .CHECK_THROWS(tree.remove(5))
      .CHECK_EQUAL (tree.size() ,0)
      ;

      cout << "You have " << tc.right() << " right answers and " << tc.wrong() << " wrong answers so your grade is " << tc.grade() << ". Great!" << endl;



      The "badkan.hpp" is a simple library that I wrote for unit-testing: https://github.com/erelsgl/ariel-cpp-5779/blob/master/02-classes-constructors-destructors/homework/badkan.hpp



      The program defines a TestCase variable tc, then runs one of the methods:



      • CHECK_EQUAL to check that the outcome of a function equals a certain value;

      • CHECK_OK to check that the given function runs without exceptions;

      • CHECK_THROWS to check that the given function throws an exception.

      Finally, it prints the number of right and wrong answers and calculates the grade (right/(right+wrong)).



      There are many things to improve here, but the main thing I am interested in is: how to write this code using a more standard library for unitesting, such as: GoogleTest, catch2, doctest, etc.?









      share









      $endgroup$




      Here is a simple unit-test I wrote for a binary-search-tree class (I removed a lot of tests to focus on the main question):



      #include <iostream>
      using std::cout, std::endl;
      #include "Tree.hpp"
      #include "badkan.hpp"

      int main()
      Tree tree;

      badkan::TestCase tc("Binary tree");
      tc
      .CHECK_EQUAL (tree.size(), 0)
      .CHECK_EQUAL (tree.contains(5), false)
      .CHECK_OK (tree.insert(5))
      .CHECK_EQUAL (tree.size(), 1)
      .CHECK_EQUAL (tree.contains(5), true)
      .CHECK_OK (tree.remove(5))
      .CHECK_EQUAL (tree.contains(5), false)
      .CHECK_THROWS(tree.remove(5))
      .CHECK_EQUAL (tree.size() ,0)
      ;

      cout << "You have " << tc.right() << " right answers and " << tc.wrong() << " wrong answers so your grade is " << tc.grade() << ". Great!" << endl;



      The "badkan.hpp" is a simple library that I wrote for unit-testing: https://github.com/erelsgl/ariel-cpp-5779/blob/master/02-classes-constructors-destructors/homework/badkan.hpp



      The program defines a TestCase variable tc, then runs one of the methods:



      • CHECK_EQUAL to check that the outcome of a function equals a certain value;

      • CHECK_OK to check that the given function runs without exceptions;

      • CHECK_THROWS to check that the given function throws an exception.

      Finally, it prints the number of right and wrong answers and calculates the grade (right/(right+wrong)).



      There are many things to improve here, but the main thing I am interested in is: how to write this code using a more standard library for unitesting, such as: GoogleTest, catch2, doctest, etc.?







      c++ unit-testing





      share












      share










      share



      share










      asked 1 min ago









      Erel Segal-HaleviErel Segal-Halevi

      2721212




      2721212




















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215597%2fhow-to-write-this-unit-test-with-more-standard-testing-libraries%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f215597%2fhow-to-write-this-unit-test-with-more-standard-testing-libraries%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          कुँवर स्रोत दिक्चालन सूची"कुँवर""राणा कुँवरके वंशावली"

          Why is a white electrical wire connected to 2 black wires?How to wire a light fixture with 3 white wires in box?How should I wire a ceiling fan when there's only three wires in the box?Two white, two black, two ground, and red wire in ceiling box connected to switchWhy is there a white wire connected to multiple black wires in my light box?How to wire a light with two white wires and one black wireReplace light switch connected to a power outlet with dimmer - two black wires to one black and redHow to wire a light with multiple black/white/green wires from the ceiling?Ceiling box has 2 black and white wires but fan/ light only has 1 of eachWhy neutral wire connected to load wire?Switch with 2 black, 2 white, 2 ground and 1 red wire connected to ceiling light and a receptacle?

          चैत्य भूमि चित्र दीर्घा सन्दर्भ बाहरी कडियाँ दिक्चालन सूची"Chaitya Bhoomi""Chaitya Bhoomi: Statue of Equality in India""Dadar Chaitya Bhoomi: Statue of Equality in India""Ambedkar memorial: Centre okays transfer of Indu Mill land"चैत्यभमि