// -*- c++ -*- // Distributed under the BSD 2-Clause License. // See accompanying file LICENSE for details. #include #include "pointerlist.h" class PointerListTest : public uUnit { public: PointerListTest() { uTEST(PointerListTest::test_zom_push); uTEST(PointerListTest::test_zom_from_args); } void test_zom_push() { using namespace std::string_literals; { // Zero PointerList args; uASSERT_EQUAL(0u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(0, argc); uASSERT_EQUAL(nullptr, argv); } { // One PointerList args; args.push_back("hello"); uASSERT_EQUAL(1u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(1, argc); uASSERT_EQUAL("hello"s, std::string(argv[0])); } { // Many PointerList args; args.push_back("hello"); args.push_back("dear"); args.push_back("world"); uASSERT_EQUAL(3u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(3, argc); uASSERT_EQUAL("hello"s, std::string(argv[0])); uASSERT_EQUAL("dear"s, std::string(argv[1])); uASSERT_EQUAL("world"s, std::string(argv[2])); } } void test_zom_from_args() { using namespace std::string_literals; { // Zero PointerList args(0, nullptr); uASSERT_EQUAL(0u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(0, argc); uASSERT_EQUAL(nullptr, argv); } { // One int _argc{1}; const char* _argv[] = { "hello" }; PointerList args(_argc, _argv); uASSERT_EQUAL(1u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(1, argc); uASSERT_EQUAL("hello"s, std::string(argv[0])); } { // Many int _argc{3}; const char* _argv[] = { "hello", "dear", "world" }; PointerList args(_argc, _argv); uASSERT_EQUAL(3u, args.size()); auto [argc, argv] = args.get(); uASSERT_EQUAL(3, argc); uASSERT_EQUAL("hello"s, std::string(argv[0])); uASSERT_EQUAL("dear"s, std::string(argv[1])); uASSERT_EQUAL("world"s, std::string(argv[2])); } } }; // Registers the fixture into the 'registry' static PointerListTest test;