From 8b6991837a1fc8a9273a6e2acda9157e78ff99e3 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Sun, 13 Mar 2016 22:07:38 +0300 Subject: [PATCH] ScopedSettings to make correct unit tests. --- platform/platform_tests/measurement_tests.cpp | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/platform/platform_tests/measurement_tests.cpp b/platform/platform_tests/measurement_tests.cpp index a1090031da..fd83639d68 100644 --- a/platform/platform_tests/measurement_tests.cpp +++ b/platform/platform_tests/measurement_tests.cpp @@ -3,12 +3,34 @@ #include "platform/measurement_utils.hpp" #include "platform/settings.hpp" - using namespace MeasurementUtils; +using namespace Settings; + +struct ScopedSettings +{ + ScopedSettings() { m_wasSet = Get(kMeasurementUnits, m_oldUnits); } + + /// Saves/restores previous units and sets new units for a scope. + ScopedSettings(Units newUnits) : ScopedSettings() + { + Set(kMeasurementUnits, newUnits); + } + + ~ScopedSettings() + { + if (m_wasSet) + Set(kMeasurementUnits, m_oldUnits); + else + Delete(kMeasurementUnits); + } + + bool m_wasSet; + Units m_oldUnits; +}; UNIT_TEST(Measurement_Smoke) { - Settings::Set(Settings::kMeasurementUnits, Settings::Metric); + ScopedSettings guard(Settings::Metric); typedef pair PairT; @@ -66,6 +88,7 @@ UNIT_TEST(LatLonToDMS_NoRounding) UNIT_TEST(FormatAltitude) { + ScopedSettings guard; Settings::Set(Settings::kMeasurementUnits, Settings::Foot); TEST_EQUAL(FormatAltitude(10000), "32808ft", ()); Settings::Set(Settings::kMeasurementUnits, Settings::Metric); @@ -74,7 +97,7 @@ UNIT_TEST(FormatAltitude) UNIT_TEST(FormatSpeed) { - Settings::Set(Settings::kMeasurementUnits, Settings::Metric); + ScopedSettings guard(Settings::Metric); TEST_EQUAL(FormatSpeed(10), "36km/h", ()); TEST_EQUAL(FormatSpeed(1), "3.6km/h", ()); }