[locale] Test for pixel-perfect location of Gibraltar and Ceuta
- Can't get Gibraltar (and Ceuta) to be distinguished
This commit is contained in:
parent
3db901bd09
commit
82ba4be5e7
@ -215,3 +215,49 @@ LocaleTests::testTZLocations()
|
||||
}
|
||||
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() );
|
||||
QVERIFY( gpos != cpos );
|
||||
QVERIFY( gibraltar->latitude() > ceuta->latitude() );
|
||||
QVERIFY( gpos.y() < cpos.y() ); // Gibraltar is north of Ceuta
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ private Q_SLOTS:
|
||||
// Check the TZ images for consistency
|
||||
void testTZImages(); // No overlaps in images
|
||||
void testTZLocations(); // No overlaps in locations
|
||||
void testSpecificLocations();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user