OSDN Git Service

Merge branch 'issue-1374'
authorAdriaan de Groot <groot@kde.org>
Tue, 21 Apr 2020 10:44:46 +0000 (12:44 +0200)
committerAdriaan de Groot <groot@kde.org>
Tue, 21 Apr 2020 10:44:46 +0000 (12:44 +0200)
This is just updating tests, not fixing things.

1  2 
src/modules/locale/Tests.cpp

@@@ -147,6 -149,121 +149,122 @@@ LocaleTests::testTZImages(
          }
      }
  
 +    QEXPECT_FAIL("", "TZ Images not yet all fixed", Continue);
      QCOMPARE( overlapcount, 0 );
  }
+ bool
+ operator<( const QPoint& l, const QPoint& r )
+ {
+     if ( l.x() < r.x() )
+     {
+         return true;
+     }
+     if ( l.x() > r.x() )
+     {
+         return false;
+     }
+     return l.y() < r.y();
+ }
+ void
+ listAll( const QPoint& p, const CalamaresUtils::Locale::CStringPairList& zones )
+ {
+     using namespace CalamaresUtils::Locale;
+     for ( const auto* pz : zones )
+     {
+         const TZZone* zone = dynamic_cast< const TZZone* >( pz );
+         if ( p == TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() ) )
+         {
+             cError() << Logger::SubEntry << zone->zone();
+         }
+     }
+ }
+ void
+ LocaleTests::testTZLocations()
+ {
+     using namespace CalamaresUtils::Locale;
+     const CStringPairList& regions = TZRegion::fromZoneTab();
+     int overlapcount = 0;
+     for ( const auto* pr : regions )
+     {
+         const TZRegion* region = dynamic_cast< const TZRegion* >( pr );
+         QVERIFY( region );
+         Logger::setupLogLevel( Logger::LOGDEBUG );
+         cDebug() << "Region" << region->region() << "zones #" << region->zones().count();
+         Logger::setupLogLevel( Logger::LOGERROR );
+         std::set< QPoint > occupied;
+         const auto zones = region->zones();
+         QVERIFY( zones.count() > 0 );
+         for ( const auto* pz : zones )
+         {
+             const TZZone* zone = dynamic_cast< const TZZone* >( pz );
+             QVERIFY( zone );
+             auto pos = TimeZoneImageList::getLocationPosition( zone->longitude(), zone->latitude() );
+             if ( occupied.find( pos ) != occupied.end() )
+             {
+                 cError() << "Zone" << zone->zone() << "occupies same spot as ..";
+                 listAll( pos, zones );
+                 overlapcount++;
+             }
+             occupied.insert( pos );
+         }
+     }
+     QEXPECT_FAIL("", "TZ Images contain pixel-overlaps", Continue);
+     QCOMPARE( overlapcount, 0 );
+ }
+ const CalamaresUtils::Locale::TZZone*
+ findZone( const QString& name )
+ {
+     using namespace CalamaresUtils::Locale;
+     const CStringPairList& regions = TZRegion::fromZoneTab();
+     for ( const auto* pr : regions )
+     {
+         const TZRegion* region = dynamic_cast< const TZRegion* >( pr );
+         if ( !region )
+         {
+             continue;
+         }
+         const auto zones = region->zones();
+         for ( const auto* pz : zones )
+         {
+             const TZZone* zone = dynamic_cast< const TZZone* >( pz );
+             if ( !zone )
+             {
+                 continue;
+             }
+             if ( zone->zone() == name )
+             {
+                 return zone;
+             }
+         }
+     }
+     return nullptr;
+ }
+ void
+ LocaleTests::testSpecificLocations()
+ {
+     const auto* gibraltar = findZone( "Gibraltar" );
+     const auto* ceuta = findZone( "Ceuta" );
+     QVERIFY( gibraltar );
+     QVERIFY( ceuta );
+     auto gpos = TimeZoneImageList::getLocationPosition( gibraltar->longitude(), gibraltar->latitude() );
+     auto cpos = TimeZoneImageList::getLocationPosition( ceuta->longitude(), ceuta->latitude() );
+     QEXPECT_FAIL("", "Gibraltar and Ceuta are really close", Continue);
+     QVERIFY( gpos != cpos );
+     QVERIFY( gibraltar->latitude() > ceuta->latitude() );
+     QEXPECT_FAIL("", "Gibraltar and Ceuta are really close", Continue);
+     QVERIFY( gpos.y() < cpos.y() );  // Gibraltar is north of Ceuta
+ }