@@ -193,15 +193,58 @@ INSTANTIATE_TEST_SUITE_P(
193193 testing::Bool(), testing::Bool(), testing::Bool()));
194194
195195TEST (ArrayRecordWriterOptionsTest, ParsingTest) {
196+ {
197+ auto option = ArrayRecordWriterBase::Options ();
198+ EXPECT_EQ (option.group_size (),
199+ ArrayRecordWriterBase::Options::kDefaultGroupSize );
200+ EXPECT_FALSE (option.transpose ());
201+ EXPECT_EQ (option.max_parallelism (), std::nullopt );
202+ EXPECT_EQ (option.compressor_options ().compression_type (),
203+ riegeli::CompressionType::kZstd );
204+ EXPECT_EQ (option.compressor_options ().compression_level (), 3 );
205+ EXPECT_FALSE (option.pad_to_block_boundary ());
206+ }
196207 {
197208 auto option = ArrayRecordWriterBase::Options::FromString (" " ).value ();
198209 EXPECT_EQ (option.group_size (),
199210 ArrayRecordWriterBase::Options::kDefaultGroupSize );
200211 EXPECT_FALSE (option.transpose ());
201212 EXPECT_EQ (option.max_parallelism (), std::nullopt );
202213 EXPECT_EQ (option.compressor_options ().compression_type (),
203- riegeli::CompressionType::kBrotli );
214+ riegeli::CompressionType::kZstd );
215+ EXPECT_EQ (option.compressor_options ().compression_level (), 3 );
216+ EXPECT_EQ (option.compressor_options ().window_log ().value (), 20 );
217+ EXPECT_FALSE (option.pad_to_block_boundary ());
218+
219+ EXPECT_EQ (option.ToString (),
220+ " group_size:65536,"
221+ " transpose:false,"
222+ " pad_to_block_boundary:false,"
223+ " zstd:3,"
224+ " window_log:20" );
225+ EXPECT_TRUE (
226+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
227+ }
228+ {
229+ auto option = ArrayRecordWriterBase::Options::FromString (" default" ).value ();
230+ EXPECT_EQ (option.group_size (),
231+ ArrayRecordWriterBase::Options::kDefaultGroupSize );
232+ EXPECT_FALSE (option.transpose ());
233+ EXPECT_EQ (option.max_parallelism (), std::nullopt );
234+ EXPECT_EQ (option.compressor_options ().compression_type (),
235+ riegeli::CompressionType::kZstd );
236+ EXPECT_EQ (option.compressor_options ().compression_level (), 3 );
237+ EXPECT_EQ (option.compressor_options ().window_log ().value (), 20 );
204238 EXPECT_FALSE (option.pad_to_block_boundary ());
239+
240+ EXPECT_EQ (option.ToString (),
241+ " group_size:65536,"
242+ " transpose:false,"
243+ " pad_to_block_boundary:false,"
244+ " zstd:3,"
245+ " window_log:20" );
246+ EXPECT_TRUE (
247+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
205248 }
206249 {
207250 auto option = ArrayRecordWriterBase::Options::FromString (
@@ -210,10 +253,42 @@ TEST(ArrayRecordWriterOptionsTest, ParsingTest) {
210253 EXPECT_EQ (option.group_size (), 32 );
211254 EXPECT_TRUE (option.transpose ());
212255 EXPECT_EQ (option.max_parallelism (), std::nullopt );
256+ EXPECT_EQ (option.compressor_options ().compression_type (),
257+ riegeli::CompressionType::kZstd );
258+ EXPECT_EQ (option.compressor_options ().window_log (), 20 );
259+ EXPECT_FALSE (option.pad_to_block_boundary ());
260+
261+ EXPECT_EQ (option.ToString (),
262+ " group_size:32,"
263+ " transpose:true,"
264+ " pad_to_block_boundary:false,"
265+ " transpose_bucket_size:256,"
266+ " zstd:3,"
267+ " window_log:20" );
268+ EXPECT_TRUE (
269+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
270+ }
271+ {
272+ auto option = ArrayRecordWriterBase::Options::FromString (
273+ " brotli:6,group_size:32,transpose,window_log:25" )
274+ .value ();
275+ EXPECT_EQ (option.group_size (), 32 );
276+ EXPECT_TRUE (option.transpose ());
277+ EXPECT_EQ (option.max_parallelism (), std::nullopt );
213278 EXPECT_EQ (option.compressor_options ().compression_type (),
214279 riegeli::CompressionType::kBrotli );
215- EXPECT_EQ (option.compressor_options ().brotli_window_log (), 20 );
280+ EXPECT_EQ (option.compressor_options ().window_log (), 25 );
216281 EXPECT_FALSE (option.pad_to_block_boundary ());
282+
283+ EXPECT_EQ (option.ToString (),
284+ " group_size:32,"
285+ " transpose:true,"
286+ " pad_to_block_boundary:false,"
287+ " transpose_bucket_size:256,"
288+ " brotli:6,"
289+ " window_log:25" );
290+ EXPECT_TRUE (
291+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
217292 }
218293 {
219294 auto option = ArrayRecordWriterBase::Options::FromString (
@@ -224,9 +299,19 @@ TEST(ArrayRecordWriterOptionsTest, ParsingTest) {
224299 EXPECT_EQ (option.max_parallelism (), std::nullopt );
225300 EXPECT_EQ (option.compressor_options ().compression_type (),
226301 riegeli::CompressionType::kZstd );
227- EXPECT_EQ (option.compressor_options ().zstd_window_log (), 20 );
302+ EXPECT_EQ (option.compressor_options ().window_log (), 20 );
228303 EXPECT_EQ (option.compressor_options ().compression_level (), 5 );
229304 EXPECT_FALSE (option.pad_to_block_boundary ());
305+
306+ EXPECT_EQ (option.ToString (),
307+ " group_size:32,"
308+ " transpose:true,"
309+ " pad_to_block_boundary:false,"
310+ " transpose_bucket_size:256,"
311+ " zstd:5,"
312+ " window_log:20" );
313+ EXPECT_TRUE (
314+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
230315 }
231316 {
232317 auto option = ArrayRecordWriterBase::Options::FromString (
@@ -239,6 +324,34 @@ TEST(ArrayRecordWriterOptionsTest, ParsingTest) {
239324 EXPECT_EQ (option.compressor_options ().compression_type (),
240325 riegeli::CompressionType::kNone );
241326 EXPECT_TRUE (option.pad_to_block_boundary ());
327+
328+ EXPECT_EQ (option.ToString (),
329+ " group_size:65536,"
330+ " transpose:false,"
331+ " pad_to_block_boundary:true,"
332+ " uncompressed" );
333+ EXPECT_TRUE (
334+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
335+ }
336+ {
337+ auto option = ArrayRecordWriterBase::Options::FromString (
338+ " snappy,pad_to_block_boundary:true" )
339+ .value ();
340+ EXPECT_EQ (option.group_size (),
341+ ArrayRecordWriterBase::Options::kDefaultGroupSize );
342+ EXPECT_FALSE (option.transpose ());
343+ EXPECT_EQ (option.max_parallelism (), std::nullopt );
344+ EXPECT_EQ (option.compressor_options ().compression_type (),
345+ riegeli::CompressionType::kSnappy );
346+ EXPECT_TRUE (option.pad_to_block_boundary ());
347+
348+ EXPECT_EQ (option.ToString (),
349+ " group_size:65536,"
350+ " transpose:false,"
351+ " pad_to_block_boundary:true,"
352+ " snappy" );
353+ EXPECT_TRUE (
354+ ArrayRecordWriterBase::Options::FromString (option.ToString ()).ok ());
242355 }
243356}
244357
0 commit comments