@@ -48,6 +48,8 @@ TEST(CoreOptionsTest, TestDefaultValue) {
4848 ASSERT_EQ (" __DEFAULT_PARTITION__" , core_options.GetPartitionDefaultName ());
4949 ASSERT_EQ (std::nullopt , core_options.GetScanSnapshotId ());
5050 ASSERT_EQ (" zstd" , core_options.GetFileCompression ());
51+ ASSERT_EQ (" zstd" , core_options.GetWriteFileCompression (0 ));
52+ ASSERT_EQ (" zstd" , core_options.GetWriteFileCompression (3 ));
5153 ASSERT_EQ (" zstd" , core_options.GetManifestCompression ());
5254 ASSERT_EQ (1 , core_options.GetFileCompressionZstdLevel ());
5355 ASSERT_EQ (StartupMode::LatestFull (), core_options.GetStartupMode ());
@@ -207,7 +209,8 @@ TEST(CoreOptionsTest, TestFromMap) {
207209 {Options::LOOKUP_CACHE_SPILL_COMPRESSION , " lz4" },
208210 {Options::SPILL_COMPRESSION_ZSTD_LEVEL , " 2" },
209211 {Options::CACHE_PAGE_SIZE , " 6MB" },
210- {Options::FILE_FORMAT_PER_LEVEL , " 0:AVRO,3:parquet" }};
212+ {Options::FILE_FORMAT_PER_LEVEL , " 0:AVRO,3:parquet" },
213+ {Options::FILE_COMPRESSION_PER_LEVEL , " 0:lz4,3:none" }};
211214
212215 ASSERT_OK_AND_ASSIGN (CoreOptions core_options, CoreOptions::FromMap (options));
213216 auto fs = core_options.GetFileSystem ();
@@ -278,6 +281,10 @@ TEST(CoreOptionsTest, TestFromMap) {
278281 std::optional<std::string>(" FILE:///tmp/index" ));
279282 ASSERT_EQ (core_options.GetExternalPathStrategy (), ExternalPathStrategy::ROUND_ROBIN );
280283 ASSERT_EQ (" snappy" , core_options.GetFileCompression ());
284+ ASSERT_EQ (" lz4" , core_options.GetWriteFileCompression (0 ));
285+ ASSERT_EQ (" snappy" , core_options.GetWriteFileCompression (1 ));
286+ ASSERT_EQ (" none" , core_options.GetWriteFileCompression (3 ));
287+ ASSERT_EQ (" snappy" , core_options.GetWriteFileCompression (5 ));
281288 ASSERT_EQ (" zlib" , core_options.GetManifestCompression ());
282289 ASSERT_EQ (2 , core_options.GetFileCompressionZstdLevel ());
283290 ASSERT_FALSE (core_options.EnableAdaptivePrefetchStrategy ());
@@ -426,6 +433,13 @@ TEST(CoreOptionsTest, TestInvalidFileFormatPerLevel) {
426433 " fail to parse level aaa from string to int in file.format.per.level" );
427434}
428435
436+ TEST (CoreOptionsTest, TestInvalidFileCompressionPerLevel) {
437+ ASSERT_NOK_WITH_MSG (CoreOptions::FromMap ({{Options::FILE_COMPRESSION_PER_LEVEL , " 0:lz4:zstd" }}),
438+ " fail to parse key file.compression.per.level, value 0:lz4:zstd" );
439+ ASSERT_NOK_WITH_MSG (CoreOptions::FromMap ({{Options::FILE_COMPRESSION_PER_LEVEL , " abc:lz4" }}),
440+ " fail to parse level abc from string to int in file.compression.per.level" );
441+ }
442+
429443TEST (CoreOptionsTest, TestCreateExternalPath) {
430444 std::map<std::string, std::string> options = {
431445 {Options::DATA_FILE_EXTERNAL_PATHS ,
0 commit comments