From 1ad2fe68308b556bb95d1c1620a3d5e55982260e Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Tue, 19 Apr 2022 15:24:08 +0900 Subject: comphelper: cleanup test_guards, add test for ValueRestorationGuard MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move each test case into its own test function. Also add the missing test for ValueRestorationGuard. Change-Id: I588ab67f82ba82ef67939dac3d22438e8799ce11 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133917 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl --- comphelper/qa/unit/test_guards.cxx | 56 ++++++++++++++++++++++++++++++-------- 1 file changed, 44 insertions(+), 12 deletions(-) (limited to 'comphelper') diff --git a/comphelper/qa/unit/test_guards.cxx b/comphelper/qa/unit/test_guards.cxx index 02daffaa521b..83034a2dcc6a 100644 --- a/comphelper/qa/unit/test_guards.cxx +++ b/comphelper/qa/unit/test_guards.cxx @@ -10,42 +10,50 @@ #include #include -CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, test_comphelperGuards) +CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testScopeGuard) { + // Test that comphelper::ScopeGuard executes its parameter on destruction + + // initial value "true", out-of-scope ScopeGuard function executes and changes the value to "false" bool bFlag = true; { - // Test that comphelper::ScopeGuard executes its parameter on destruction comphelper::ScopeGuard aGuard([&bFlag] { bFlag = false; }); CPPUNIT_ASSERT(bFlag); } CPPUNIT_ASSERT(!bFlag); +} + +CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testFlagGuard) +{ + // Test that comphelper::FlagGuard properly sets and resets the flag + // initial value "false", change to "true", out-of-scope change to "false" + bool bFlag = false; { - // Test that comphelper::FlagGuard properly sets and resets the flag comphelper::FlagGuard aGuard(bFlag); CPPUNIT_ASSERT(bFlag); } + // comphelper::FlagGuard must reset flag to false on destruction unconditionally CPPUNIT_ASSERT(!bFlag); + // initial value "true", retain the value at "true", out-of-scope change to "false" bFlag = true; { - // Test that comphelper::FlagGuard properly sets and resets the flag comphelper::FlagGuard aGuard(bFlag); CPPUNIT_ASSERT(bFlag); } // comphelper::FlagGuard must reset flag to false on destruction unconditionally CPPUNIT_ASSERT(!bFlag); +} - { - // Test that comphelper::FlagRestorationGuard properly sets and resets the flag - comphelper::FlagRestorationGuard aGuard(bFlag, true); - CPPUNIT_ASSERT(bFlag); - } - CPPUNIT_ASSERT(!bFlag); +CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testFlagRestorationGuard) +{ + // Test that comphelper::FlagRestorationGuard properly sets and resets the flag - bFlag = true; + // initial value "true", change to "false", out-of-scope change to "true" + + bool bFlag = true; { - // Test that comphelper::FlagRestorationGuard properly sets and resets the flag comphelper::FlagRestorationGuard aGuard(bFlag, false); CPPUNIT_ASSERT(!bFlag); } @@ -53,4 +61,28 @@ CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, test_comphelperGuards) CPPUNIT_ASSERT(bFlag); } +CPPUNIT_TEST_FIXTURE(CppUnit::TestFixture, testValueRestorationGuard) +{ + // Test that comphelper::ValueRestorationGuard properly sets and resets the (int) value + + int value = 199; + + // set value and restore after scope ends + { + CPPUNIT_ASSERT_EQUAL(199, value); + comphelper::ValueRestorationGuard aGuard(value, 100); + CPPUNIT_ASSERT_EQUAL(100, value); + } + CPPUNIT_ASSERT_EQUAL(199, value); + + // set value, manually setto another value and restore after scope ends + { + CPPUNIT_ASSERT_EQUAL(199, value); + comphelper::ValueRestorationGuard aGuard(value, 100); + CPPUNIT_ASSERT_EQUAL(100, value); + value = 200; + } + CPPUNIT_ASSERT_EQUAL(199, value); +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit