Skip to content

Commit

Permalink
[Test] Use a single instance of Bit7zLibrary in the test app
Browse files Browse the repository at this point in the history
  • Loading branch information
rikyoz committed Nov 1, 2023
1 parent cb8306d commit f8dcb5a
Show file tree
Hide file tree
Showing 12 changed files with 78 additions and 153 deletions.
71 changes: 24 additions & 47 deletions tests/src/test_bitabstractarchivecreator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
#include <bit7z/bitstreamcompressor.hpp>
#include <bit7z/bittypes.hpp>

#include <limits>
#include <cstdint>
#include <limits>
#include <tuple>

using namespace bit7z;
Expand All @@ -49,9 +49,7 @@ using CreatorTypes = std::tuple< BitArchiveWriter, BitFileCompressor, BitMemComp

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setPassword(...) / password() / cryptHeaders()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.password().empty() );
REQUIRE( !compressor.cryptHeaders() );

Expand Down Expand Up @@ -86,9 +84,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setPassword(...) / password
TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator:"
"setPassword(...) with a non-ASCII string should throw when using the ZIP format",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor{ lib, BitFormat::Zip };
TestType compressor{ test::sevenzip_lib(), BitFormat::Zip };
REQUIRE( compressor.password().empty() );
REQUIRE( !compressor.cryptHeaders() );

Expand Down Expand Up @@ -135,7 +131,6 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator:"

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: format() / compressionFormat()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };
const auto testFormat = GENERATE( as< TestOutputFormat >(),
TestOutputFormat{ "ZIP", BitFormat::Zip },
TestOutputFormat{ "BZIP2", BitFormat::BZip2 },
Expand All @@ -145,17 +140,15 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: format() / compressionForma
TestOutputFormat{ "TAR", BitFormat::Tar },
TestOutputFormat{ "GZIP", BitFormat::GZip } );
DYNAMIC_SECTION( "Format: " << testFormat.name ) {
const TestType compressor{ lib, testFormat.format };
const TestType compressor{ test::sevenzip_lib(), testFormat.format };
REQUIRE( compressor.compressionFormat() == testFormat.format );
REQUIRE( compressor.format() == testFormat.format );
}
}

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionLevel(...) / compressionLevel()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.compressionLevel() == BitCompressionLevel::Normal );
compressor.setCompressionLevel( BitCompressionLevel::None );
REQUIRE( compressor.compressionLevel() == BitCompressionLevel::None );
Expand All @@ -173,10 +166,8 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionLevel(...) /

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) / compressionMethod()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

SECTION( "7Z Compression Methods" ) {
TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Lzma2 );
compressor.setCompressionMethod( BitCompressionMethod::Copy );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Copy );
Expand All @@ -193,7 +184,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "ZIP Compression Methods" ) {
TestType compressor( lib, BitFormat::Zip );
TestType compressor( test::sevenzip_lib(), BitFormat::Zip );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Deflate );
compressor.setCompressionMethod( BitCompressionMethod::Copy );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Copy );
Expand All @@ -211,7 +202,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "BZIP2 Compression Methods" ) {
TestType compressor( lib, BitFormat::BZip2 );
TestType compressor( test::sevenzip_lib(), BitFormat::BZip2 );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::BZip2 );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Copy ) );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma ) );
Expand All @@ -224,7 +215,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "GZIP Compression Methods" ) {
TestType compressor( lib, BitFormat::GZip );
TestType compressor( test::sevenzip_lib(), BitFormat::GZip );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Deflate );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Copy ) );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma ) );
Expand All @@ -237,7 +228,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "TAR Compression Methods" ) {
TestType compressor( lib, BitFormat::Tar );
TestType compressor( test::sevenzip_lib(), BitFormat::Tar );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Copy );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma ) );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma2 ) );
Expand All @@ -250,7 +241,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "WIM Compression Methods" ) {
TestType compressor( lib, BitFormat::Wim );
TestType compressor( test::sevenzip_lib(), BitFormat::Wim );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Copy );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma ) );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma2 ) );
Expand All @@ -263,7 +254,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /
}

SECTION( "XZ Compression Methods" ) {
TestType compressor( lib, BitFormat::Xz );
TestType compressor( test::sevenzip_lib(), BitFormat::Xz );
REQUIRE( compressor.compressionMethod() == BitCompressionMethod::Lzma2 );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Copy ) );
REQUIRE_THROWS( compressor.setCompressionMethod( BitCompressionMethod::Lzma ) );
Expand All @@ -278,12 +269,10 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setCompressionMethod(...) /

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setDictionarySize(...) / dictionarySize()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

SECTION( "SevenZip format + Lzma/Lzma2 compression methods" ) {
constexpr auto kMaxLzmaDictionarySize = 1536 * ( 1LL << 20 ); // less than 1536 MiB

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.dictionarySize() == 0 );

auto testMethod = GENERATE( BitCompressionMethod::Lzma, BitCompressionMethod::Lzma2 );
Expand All @@ -304,7 +293,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setDictionarySize(...) / di
SECTION( "Zip format + Ppmd compression methods" ) {
constexpr uint32_t kMaxPpmdDictionarySize = ( 1ULL << 30 ); // less than 1 GiB, i.e., 2^30 bytes

TestType compressor( lib, BitFormat::Zip );
TestType compressor( test::sevenzip_lib(), BitFormat::Zip );
REQUIRE( compressor.dictionarySize() == 0 );
compressor.setCompressionMethod( BitCompressionMethod::Ppmd );

Expand All @@ -330,7 +319,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setDictionarySize(...) / di
SECTION( "BZip2 format and compression methods" ) {
constexpr auto kMaxBzip2DictionarySize = 900 * ( 1LL << 10 ); // less than 900 KiB

TestType compressor( lib, BitFormat::BZip2 );
TestType compressor( test::sevenzip_lib(), BitFormat::BZip2 );
REQUIRE( compressor.dictionarySize() == 0 );

uint32_t dictionarySize = 1024;
Expand All @@ -348,9 +337,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setDictionarySize(...) / di

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setSolidMode(...) / solidMode()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( !compressor.solidMode() );

compressor.setSolidMode( true );
Expand All @@ -362,9 +349,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setSolidMode(...) / solidMo

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setStoreSymbolicLinks(...) / storeSymbolicLinks()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE_FALSE( compressor.storeSymbolicLinks() );

compressor.setStoreSymbolicLinks( true );
Expand All @@ -378,19 +363,15 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setStoreSymbolicLinks(...)

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setThreadCount(...) / threadCount()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.threadsCount() == 0u );
compressor.setThreadsCount( 8u );
REQUIRE( compressor.threadsCount() == 8u );
}

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setUpdateMode(...) / updateMode()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.updateMode() == UpdateMode::None );

compressor.setUpdateMode( true );
Expand All @@ -412,25 +393,21 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setUpdateMode(...) / update

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setVolumeSize(...) / volumeSize()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE( compressor.volumeSize() == 0u );
compressor.setVolumeSize( 1024u );
REQUIRE( compressor.volumeSize() == 1024u );
}

TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setWordSize(...) / wordSize()",
"[bitabstractarchivecreator]", CreatorTypes ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

constexpr auto kMinPpmdWordSize = 2u;

SECTION( "SevenZip format + Lzma/Lzma2 compression methods" ) {
constexpr auto kMinLzmaWordSize = 5u;
constexpr auto kMaxLzmaWordSize = 273u;

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
REQUIRE_THROWS( compressor.setWordSize( 4u ) );
REQUIRE( compressor.wordSize() == 0 );

Expand Down Expand Up @@ -464,7 +441,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setWordSize(...) / wordSize
SECTION( "SevenZip format + Ppmd compression method" ) {
constexpr auto kMax7zPpmdWordSize = 32u;

TestType compressor( lib, BitFormat::SevenZip );
TestType compressor( test::sevenzip_lib(), BitFormat::SevenZip );
compressor.setCompressionMethod( BitCompressionMethod::Ppmd );

REQUIRE_THROWS( compressor.setWordSize( 1u ) );
Expand Down Expand Up @@ -492,7 +469,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setWordSize(...) / wordSize
SECTION( "Zip format + Ppmd compression method") {
constexpr auto kMaxZipPpmdWordSize = 16u;

TestType compressor( lib, BitFormat::Zip );
TestType compressor( test::sevenzip_lib(), BitFormat::Zip );
compressor.setCompressionMethod( BitCompressionMethod::Ppmd );

REQUIRE_THROWS( compressor.setWordSize( 1u ) );
Expand Down Expand Up @@ -522,7 +499,7 @@ TEMPLATE_LIST_TEST_CASE( "BitAbstractArchiveCreator: setWordSize(...) / wordSize
constexpr auto kMaxDeflateWordSize = 258u;
constexpr auto kMaxDeflate64WordSize = kMaxDeflateWordSize - 1;

TestType compressor( lib, BitFormat::Zip );
TestType compressor( test::sevenzip_lib(), BitFormat::Zip );
compressor.setCompressionMethod( BitCompressionMethod::Deflate );

REQUIRE_THROWS( compressor.setWordSize( 2u ) );
Expand Down
5 changes: 1 addition & 4 deletions tests/src/test_bitarchiveeditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,10 @@
#include "utils/shared_lib.hpp"

#include <bit7z/bitformat.hpp>
#include <bit7z/bit7zlibrary.hpp>
#include <bit7z/bitarchiveeditor.hpp>

using namespace bit7z;

TEST_CASE( "BitArchiveEditor: TODO", "[bitarchiveeditor]" ) {
const Bit7zLibrary lib{ test::sevenzip_lib_path() };

REQUIRE_THROWS( BitArchiveEditor{ lib, BIT7Z_STRING( "non_existent.7z" ), BitFormat::SevenZip } );
REQUIRE_THROWS( BitArchiveEditor{ test::sevenzip_lib(), BIT7Z_STRING( "non_existent.7z" ), BitFormat::SevenZip } );
}
Loading

0 comments on commit f8dcb5a

Please sign in to comment.