[libcalamares] Drop parts of InstanceKey API

- Drop the 1-argument QString constructor, it is suprising
 - Drop the conversion to QString
 - Add a toString() instead
 - Drop tests for the removed API
 - While here, apply code formatting to the tests

This is done to force consumers to update to strongly-typed
InstanceKeys.
This commit is contained in:
Adriaan de Groot 2019-09-14 13:03:25 -04:00
parent 7dcc6e8e07
commit ce6f6592d4
2 changed files with 35 additions and 45 deletions

View File

@ -19,10 +19,16 @@
#ifndef MODULESYSTEM_INSTANCEKEY_H #ifndef MODULESYSTEM_INSTANCEKEY_H
#define MODULESYSTEM_INSTANCEKEY_H #define MODULESYSTEM_INSTANCEKEY_H
#include <QString> #include <QList>
#include <QPair> #include <QPair>
#include <QString>
#include <QStringList> #include <QStringList>
namespace Logger
{
class CLog;
}
namespace Calamares namespace Calamares
{ {
namespace ModuleSystem namespace ModuleSystem
@ -55,13 +61,6 @@ public:
validate(); validate();
} }
/// @brief Create "usual" instances keys `module@module`
explicit InstanceKey( const QString& module )
: QPair( module, module )
{
validate();
}
/// @brief Create unusual, invalid instance key /// @brief Create unusual, invalid instance key
InstanceKey() InstanceKey()
: QPair( QString(), QString() ) : QPair( QString(), QString() )
@ -77,8 +76,6 @@ public:
QString module() const { return first; } QString module() const { return first; }
QString id() const { return second; } QString id() const { return second; }
explicit operator QString() const { return isValid() ? module() + '@' + id() : QString(); }
/// @brief Create instance key from stringified version /// @brief Create instance key from stringified version
static InstanceKey fromString( const QString& s ) static InstanceKey fromString( const QString& s )
{ {
@ -91,6 +88,11 @@ public:
return InstanceKey( moduleEntrySplit.first(), moduleEntrySplit.last() ); return InstanceKey( moduleEntrySplit.first(), moduleEntrySplit.last() );
} }
QString toString() const
{
return first + '@' + second;
}
private: private:
/** @brief Check validity and reset module and id if needed. */ /** @brief Check validity and reset module and id if needed. */
void validate() void validate()
@ -103,6 +105,7 @@ private:
} }
}; };
} } // namespace ModuleSystem
} } // namespace Calamares
#endif #endif

View File

@ -33,7 +33,6 @@ private Q_SLOTS:
void initTestCase(); void initTestCase();
void testEmptyInstanceKey(); void testEmptyInstanceKey();
void testSimpleInstanceKey();
void testCustomInstanceKey(); void testCustomInstanceKey();
void testFromStringInstanceKey(); void testFromStringInstanceKey();
@ -41,97 +40,85 @@ private Q_SLOTS:
void testBadFromStringCases(); void testBadFromStringCases();
}; };
void ModuleSystemTests::initTestCase() void
ModuleSystemTests::initTestCase()
{ {
} }
void assert_is_invalid( const InstanceKey& k ) void
assert_is_invalid( const InstanceKey& k )
{ {
QVERIFY( !k.isValid() ); QVERIFY( !k.isValid() );
QVERIFY( !k.isCustom() ); QVERIFY( !k.isCustom() );
QVERIFY( k.module().isEmpty() ); QVERIFY( k.module().isEmpty() );
QVERIFY( k.id().isEmpty() ); QVERIFY( k.id().isEmpty() );
QVERIFY( QString( k ).isEmpty() ); QVERIFY( k.toString().isEmpty() );
} }
void ModuleSystemTests::testEmptyInstanceKey() void
ModuleSystemTests::testEmptyInstanceKey()
{ {
InstanceKey k0; InstanceKey k0;
assert_is_invalid( k0 ); assert_is_invalid( k0 );
} }
void ModuleSystemTests::testSimpleInstanceKey() void
{ ModuleSystemTests::testCustomInstanceKey()
InstanceKey k1( "derp" );
QVERIFY( k1.isValid() );
QVERIFY( !k1.isCustom() );
QCOMPARE( k1.module(), QStringLiteral( "derp" ) );
QCOMPARE( k1.id(), QStringLiteral( "derp" ) );
QCOMPARE( QString( k1 ), QStringLiteral( "derp@derp" ) );
}
void ModuleSystemTests::testCustomInstanceKey()
{ {
InstanceKey k0( "derp", "derp" ); InstanceKey k0( "derp", "derp" );
QVERIFY( k0.isValid() ); QVERIFY( k0.isValid() );
QVERIFY( !k0.isCustom() ); QVERIFY( !k0.isCustom() );
QCOMPARE( k0.module(), QStringLiteral( "derp" ) ); QCOMPARE( k0.module(), QStringLiteral( "derp" ) );
QCOMPARE( k0.id(), QStringLiteral( "derp" ) ); QCOMPARE( k0.id(), QStringLiteral( "derp" ) );
QCOMPARE( QString( k0 ), QStringLiteral( "derp@derp" ) ); QCOMPARE( k0.toString(), QStringLiteral( "derp@derp" ) );
InstanceKey k1( "derp", "horse" ); InstanceKey k1( "derp", "horse" );
QVERIFY( k1.isValid() ); QVERIFY( k1.isValid() );
QVERIFY( k1.isCustom() ); QVERIFY( k1.isCustom() );
QCOMPARE( k1.module(), QStringLiteral( "derp" ) ); QCOMPARE( k1.module(), QStringLiteral( "derp" ) );
QCOMPARE( k1.id(), QStringLiteral( "horse" ) ); QCOMPARE( k1.id(), QStringLiteral( "horse" ) );
QCOMPARE( QString( k1 ), QStringLiteral( "derp@horse" ) ); QCOMPARE( k1.toString(), QStringLiteral( "derp@horse" ) );
InstanceKey k4( "derp", QString() ); InstanceKey k4( "derp", QString() );
QVERIFY( k4.isValid() ); QVERIFY( k4.isValid() );
QVERIFY( !k4.isCustom() ); QVERIFY( !k4.isCustom() );
QCOMPARE( k4.module(), QStringLiteral( "derp" ) ); QCOMPARE( k4.module(), QStringLiteral( "derp" ) );
QCOMPARE( k4.id(), QStringLiteral( "derp" ) ); QCOMPARE( k4.id(), QStringLiteral( "derp" ) );
QCOMPARE( QString( k4 ), QStringLiteral( "derp@derp" ) ); QCOMPARE( k4.toString(), QStringLiteral( "derp@derp" ) );
} }
void ModuleSystemTests::testFromStringInstanceKey() void
ModuleSystemTests::testFromStringInstanceKey()
{ {
InstanceKey k0 = InstanceKey::fromString( "derp@derp" ); InstanceKey k0 = InstanceKey::fromString( "derp@derp" );
QVERIFY( k0.isValid() ); QVERIFY( k0.isValid() );
QVERIFY( !k0.isCustom() ); QVERIFY( !k0.isCustom() );
QCOMPARE( k0.module(), QStringLiteral( "derp" ) ); QCOMPARE( k0.module(), QStringLiteral( "derp" ) );
QCOMPARE( k0.id(), QStringLiteral( "derp" ) ); QCOMPARE( k0.id(), QStringLiteral( "derp" ) );
QCOMPARE( QString( k0 ), QStringLiteral( "derp@derp" ) );
InstanceKey k1 = InstanceKey::fromString( "derp@horse" ); InstanceKey k1 = InstanceKey::fromString( "derp@horse" );
QVERIFY( k1.isValid() ); QVERIFY( k1.isValid() );
QVERIFY( k1.isCustom() ); QVERIFY( k1.isCustom() );
QCOMPARE( k1.module(), QStringLiteral( "derp" ) ); QCOMPARE( k1.module(), QStringLiteral( "derp" ) );
QCOMPARE( k1.id(), QStringLiteral( "horse" ) ); QCOMPARE( k1.id(), QStringLiteral( "horse" ) );
QCOMPARE( QString( k1 ), QStringLiteral( "derp@horse" ) );
InstanceKey k2 = InstanceKey::fromString( "derp" ); InstanceKey k2 = InstanceKey::fromString( "derp" );
QVERIFY( k2.isValid() ); QVERIFY( k2.isValid() );
QVERIFY( !k2.isCustom() ); QVERIFY( !k2.isCustom() );
QCOMPARE( k2.module(), QStringLiteral( "derp" ) ); QCOMPARE( k2.module(), QStringLiteral( "derp" ) );
QCOMPARE( k2.id(), QStringLiteral( "derp" ) ); QCOMPARE( k2.id(), QStringLiteral( "derp" ) );
QCOMPARE( QString( k2 ), QStringLiteral( "derp@derp" ) );
} }
/// @brief These are expected to fail since they show bugs in the code /// @brief These are expected to fail since they show bugs in the code
void ModuleSystemTests::testBadSimpleCases() void
ModuleSystemTests::testBadSimpleCases()
{ {
InstanceKey k2( "derp@derp" );
assert_is_invalid( k2 );
InstanceKey k3( "derp@horse" );
assert_is_invalid( k3 );
InstanceKey k4( "derp", "derp@derp" ); InstanceKey k4( "derp", "derp@derp" );
assert_is_invalid( k4 ); assert_is_invalid( k4 );
} }
void ModuleSystemTests::testBadFromStringCases() void
ModuleSystemTests::testBadFromStringCases()
{ {
InstanceKey k0 = InstanceKey::fromString( QString() ); InstanceKey k0 = InstanceKey::fromString( QString() );
assert_is_invalid( k0 ); assert_is_invalid( k0 );