diff --git a/src/modules/partition/tests/JobTests.cpp b/src/modules/partition/tests/JobTests.cpp index 09921a865..2bd9186bc 100644 --- a/src/modules/partition/tests/JobTests.cpp +++ b/src/modules/partition/tests/JobTests.cpp @@ -80,14 +80,14 @@ JobTests::initTestCase() void JobTests::testPartitionTable() { - queuePartitionTableCreation(); + queuePartitionTableCreation( PartitionTable::gpt ); m_runner.run(); } void -JobTests::queuePartitionTableCreation() +JobTests::queuePartitionTableCreation( PartitionTable::TableType type) { - auto job = new CreatePartitionTableJob( m_device.data(), PartitionTable::gpt ); + auto job = new CreatePartitionTableJob( m_device.data(), type ); job->updatePreview(); m_queue.enqueue( job_ptr( job ) ); } @@ -128,7 +128,7 @@ Partition* firstFreePartition( PartitionNode* parent ) void JobTests::testCreatePartition() { - queuePartitionTableCreation(); + queuePartitionTableCreation( PartitionTable::gpt ); CreatePartitionJob* job; Partition* partition = firstFreePartition( m_device->partitionTable() ); @@ -137,13 +137,40 @@ JobTests::testCreatePartition() job->updatePreview(); m_queue.enqueue( job_ptr( job ) ); + partition = firstFreePartition( m_device->partitionTable() ); job = newCreatePartitionJob( partition, PartitionRole( PartitionRole::Primary ), FileSystem::LinuxSwap, 10 * MB); job->updatePreview(); m_queue.enqueue( job_ptr( job ) ); + partition = firstFreePartition( m_device->partitionTable() ); job = newCreatePartitionJob( partition, PartitionRole( PartitionRole::Primary ), FileSystem::Btrfs, 10 * MB); job->updatePreview(); m_queue.enqueue( job_ptr( job ) ); m_runner.run(); } + +void +JobTests::testCreatePartitionExtended() +{ + queuePartitionTableCreation( PartitionTable::msdos ); + CreatePartitionJob* job; + + Partition* partition = firstFreePartition( m_device->partitionTable() ); + job = newCreatePartitionJob( partition, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, 10 * MB); + QVERIFY( job ); + job->updatePreview(); + m_queue.enqueue( job_ptr( job ) ); + + partition = firstFreePartition( m_device->partitionTable() ); + job = newCreatePartitionJob( partition, PartitionRole( PartitionRole::Extended ), FileSystem::Unformatted, 10 * MB); + job->updatePreview(); + m_queue.enqueue( job_ptr( job ) ); + Partition* extendedPartition = job->partition(); + + job = newCreatePartitionJob( firstFreePartition( extendedPartition ), PartitionRole( PartitionRole::Logical ), FileSystem::Ext4, 10 * MB); + job->updatePreview(); + m_queue.enqueue( job_ptr( job ) ); + + m_runner.run(); +} diff --git a/src/modules/partition/tests/JobTests.h b/src/modules/partition/tests/JobTests.h index bb4ec7a78..543a1425d 100644 --- a/src/modules/partition/tests/JobTests.h +++ b/src/modules/partition/tests/JobTests.h @@ -7,6 +7,7 @@ #include #include #include +#include #include // Qt @@ -37,13 +38,14 @@ private Q_SLOTS: void initTestCase(); void testPartitionTable(); void testCreatePartition(); + void testCreatePartitionExtended(); private: QScopedPointer< Device > m_device; Calamares::JobQueue m_queue; QueueRunner m_runner; - void queuePartitionTableCreation(); + void queuePartitionTableCreation( PartitionTable::TableType type ); CreatePartitionJob* newCreatePartitionJob( Partition* freeSpacePartition, PartitionRole, FileSystem::Type type, qint64 size ); };