/* * Copyright (C) 1996-2023 The Squid Software Foundation and contributors * * Squid software is distributed under GPLv2+ license and includes * contributions from numerous individuals and organizations. * Please see the COPYING and CONTRIBUTORS files for details. */ #include "squid.h" #include "base/YesNoNone.h" #include "compat/cppunit.h" #include "unitTestMain.h" #include /* * demonstration test file, as new idioms are made they will * be shown in the TestYesNoNone source. */ class TestYesNoNone : public CPPUNIT_NS::TestFixture { CPPUNIT_TEST_SUITE(TestYesNoNone); /* note the statement here and then the actual prototype below */ CPPUNIT_TEST(testBasics); CPPUNIT_TEST_SUITE_END(); public: protected: void testBasics(); }; CPPUNIT_TEST_SUITE_REGISTRATION(TestYesNoNone); void TestYesNoNone::testBasics() { // unconfigured, non-implicit { YesNoNone v; CPPUNIT_ASSERT_EQUAL(false, v.configured()); // cannot test the value it is 'undefined' and will assert } // implicit dtor test // unconfigured, implicit true { YesNoNone v(true); CPPUNIT_ASSERT_EQUAL(false, v.configured()); CPPUNIT_ASSERT(v); CPPUNIT_ASSERT_EQUAL(true, static_cast(v)); // check explicit setter method v.configure(false); CPPUNIT_ASSERT_EQUAL(true, v.configured()); CPPUNIT_ASSERT(!v); CPPUNIT_ASSERT_EQUAL(false, static_cast(v)); } // unconfigured, implicit false { YesNoNone v(false); CPPUNIT_ASSERT_EQUAL(false, v.configured()); CPPUNIT_ASSERT(!v); CPPUNIT_ASSERT_EQUAL(false, static_cast(v)); // check assignment operator v = YesNoNone(true); CPPUNIT_ASSERT_EQUAL(false, v.configured()); CPPUNIT_ASSERT(v); CPPUNIT_ASSERT_EQUAL(true, static_cast(v)); } } int main(int argc, char *argv[]) { return TestProgram().run(argc, argv); }