From eea421f499f043524e1732dca53d47f7d5580e6c Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Thu, 12 Apr 2018 16:05:02 -0400 Subject: [PATCH] [locale] Add tests for GeoIP handlers - One sample JSON result - Two sample XML results --- src/modules/locale/CMakeLists.txt | 23 ++++++++ src/modules/locale/GeoIPTests.cpp | 98 +++++++++++++++++++++++++++++++ src/modules/locale/GeoIPTests.h | 38 ++++++++++++ 3 files changed, 159 insertions(+) create mode 100644 src/modules/locale/GeoIPTests.cpp create mode 100644 src/modules/locale/GeoIPTests.h diff --git a/src/modules/locale/CMakeLists.txt b/src/modules/locale/CMakeLists.txt index 376c19b00..df758ac8e 100644 --- a/src/modules/locale/CMakeLists.txt +++ b/src/modules/locale/CMakeLists.txt @@ -1,3 +1,10 @@ +find_package(ECM ${ECM_VERSION} NO_MODULE) +if( ECM_FOUND ) + include( ECMAddTests ) +endif() + +find_package( Qt5 COMPONENTS Core Test REQUIRED ) + include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui ) set( geoip_src GeoIP.cpp GeoIPFreeGeoIP.cpp ) @@ -32,3 +39,19 @@ calamares_add_plugin( locale ${YAMLCPP_LIBRARY} SHARED_LIB ) + +if( ECM_FOUND ) + ecm_add_test( + GeoIPTests.cpp + ${geoip_src} + TEST_NAME + geoiptest + LINK_LIBRARIES + calamaresui + Qt5::Network + Qt5::Test + ${geoip_libs} + ${YAMLCPP_LIBRARY} + ) + set_target_properties( geoiptest PROPERTIES AUTOMOC TRUE ) +endif() diff --git a/src/modules/locale/GeoIPTests.cpp b/src/modules/locale/GeoIPTests.cpp new file mode 100644 index 000000000..9ad7ad7fc --- /dev/null +++ b/src/modules/locale/GeoIPTests.cpp @@ -0,0 +1,98 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#include "GeoIPTests.h" + +#include "GeoIPFreeGeoIP.h" +#ifdef HAVE_XML +#include "GeoIPXML.h" +#endif + +#include + +QTEST_GUILESS_MAIN( GeoIPTests ) + +GeoIPTests::GeoIPTests() +{ +} + +GeoIPTests::~GeoIPTests() +{ +} + +void +GeoIPTests::initTestCase() +{ +} + +void +GeoIPTests::testJSON() +{ + static const char data[] = + "{\"time_zone\":\"Europe/Amsterdam\"}"; + + FreeGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "Europe" ) ); + QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); +} + +void +GeoIPTests::testXML() +{ + static const char data[] = + R"( + 85.150.1.1 + OK + NL + NLD + Netherlands + None + None + None + + 50.0 + 4.0 + 0 + Europe/Amsterdam +)"; + +#ifdef HAVE_XML + XMLGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "Europe" ) ); + QCOMPARE( tz.second, QLatin1String( "Amsterdam" ) ); +#endif +} + +void +GeoIPTests::testXML2() +{ + static const char data[] = + "America/North Dakota/Beulah"; + +#ifdef HAVE_XML + XMLGeoIP handler; + auto tz = handler.processReply( data ); + + QCOMPARE( tz.first, QLatin1String( "America" ) ); + QCOMPARE( tz.second, QLatin1String( "North Dakota/Beulah" ) ); +#endif +} diff --git a/src/modules/locale/GeoIPTests.h b/src/modules/locale/GeoIPTests.h new file mode 100644 index 000000000..b153d5c5f --- /dev/null +++ b/src/modules/locale/GeoIPTests.h @@ -0,0 +1,38 @@ +/* === This file is part of Calamares - === + * + * Copyright 2018, Adriaan de Groot + * + * Calamares is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Calamares is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Calamares. If not, see . + */ + +#ifndef GEOIPTESTS_H +#define GEOIPTESTS_H + +#include + +class GeoIPTests : public QObject +{ + Q_OBJECT +public: + GeoIPTests(); + ~GeoIPTests() override; + +private Q_SLOTS: + void initTestCase(); + void testJSON(); + void testXML(); + void testXML2(); +}; + +#endif