diff --git a/src/iceberg/file_reader.cc b/src/iceberg/file_reader.cc index d0e291d96..022002a55 100644 --- a/src/iceberg/file_reader.cc +++ b/src/iceberg/file_reader.cc @@ -60,12 +60,12 @@ Result> ReaderFactoryRegistry::Open( } std::unique_ptr ReaderProperties::default_properties() { - return std::make_unique(); + return std::unique_ptr(new ReaderProperties()); } std::unique_ptr ReaderProperties::FromMap( const std::unordered_map& properties) { - auto reader_properties = std::make_unique(); + auto reader_properties = std::unique_ptr(new ReaderProperties()); reader_properties->configs_ = properties; return reader_properties; } diff --git a/src/iceberg/file_reader.h b/src/iceberg/file_reader.h index d7e3b092d..85221a6a3 100644 --- a/src/iceberg/file_reader.h +++ b/src/iceberg/file_reader.h @@ -82,6 +82,9 @@ class ReaderProperties : public ConfigBase { /// \brief Create a ReaderProperties instance from a map of key-value pairs. static std::unique_ptr FromMap( const std::unordered_map& properties); + + private: + ReaderProperties() = default; }; /// \brief Options for creating a reader. diff --git a/src/iceberg/file_writer.cc b/src/iceberg/file_writer.cc index 477562db2..ef0c84bd2 100644 --- a/src/iceberg/file_writer.cc +++ b/src/iceberg/file_writer.cc @@ -60,12 +60,12 @@ Result> WriterFactoryRegistry::Open( } std::unique_ptr WriterProperties::default_properties() { - return std::make_unique(); + return std::unique_ptr(new WriterProperties()); } std::unique_ptr WriterProperties::FromMap( const std::unordered_map& properties) { - auto writer_properties = std::make_unique(); + auto writer_properties = std::unique_ptr(new WriterProperties()); writer_properties->configs_ = properties; return writer_properties; } diff --git a/src/iceberg/file_writer.h b/src/iceberg/file_writer.h index ae6507500..f3540dd75 100644 --- a/src/iceberg/file_writer.h +++ b/src/iceberg/file_writer.h @@ -57,6 +57,9 @@ class WriterProperties : public ConfigBase { /// \brief Create a WriterProperties instance from a map of key-value pairs. static std::unique_ptr FromMap( const std::unordered_map& properties); + + private: + WriterProperties() = default; }; /// \brief Options for creating a writer. diff --git a/src/iceberg/table_properties.cc b/src/iceberg/table_properties.cc index b82fe59b8..3383e9456 100644 --- a/src/iceberg/table_properties.cc +++ b/src/iceberg/table_properties.cc @@ -32,12 +32,12 @@ const std::unordered_set& TableProperties::reserved_properties() { } std::unique_ptr TableProperties::default_properties() { - return std::make_unique(); + return std::unique_ptr(new TableProperties()); } std::unique_ptr TableProperties::FromMap( const std::unordered_map& properties) { - auto table_properties = std::make_unique(); + auto table_properties = std::unique_ptr(new TableProperties()); for (const auto& [key, value] : properties) { // NOLINT(modernize-type-traits) table_properties->configs_[key] = value; } diff --git a/src/iceberg/table_properties.h b/src/iceberg/table_properties.h index 1ab98fec8..31493cfd8 100644 --- a/src/iceberg/table_properties.h +++ b/src/iceberg/table_properties.h @@ -295,6 +295,9 @@ class ICEBERG_EXPORT TableProperties : public ConfigBase { /// \return A unique pointer to a TableProperties instance static std::unique_ptr FromMap( const std::unordered_map& properties); + + private: + TableProperties() = default; }; } // namespace iceberg diff --git a/src/iceberg/test/config_test.cc b/src/iceberg/test/config_test.cc index 712a0890d..ec3b39156 100644 --- a/src/iceberg/test/config_test.cc +++ b/src/iceberg/test/config_test.cc @@ -64,48 +64,55 @@ class TestConfig : public ConfigBase { inline static const Entry kEnumConfig{"enum_config", TestEnum::VALUE1, EnumToString, StringToEnum}; inline static const Entry kDoubleConfig{"double_config", 3.14}; + + static std::unique_ptr default_properties() { + return std::unique_ptr(new TestConfig()); + } + + private: + TestConfig() = default; }; TEST(ConfigTest, BasicOperations) { - TestConfig config; + auto config = TestConfig::default_properties(); // Test default values - ASSERT_EQ(config.Get(TestConfig::kStringConfig), std::string("default_value")); - ASSERT_EQ(config.Get(TestConfig::kIntConfig), 25); - ASSERT_EQ(config.Get(TestConfig::kBoolConfig), false); - ASSERT_EQ(config.Get(TestConfig::kEnumConfig), TestEnum::VALUE1); - ASSERT_EQ(config.Get(TestConfig::kDoubleConfig), 3.14); + ASSERT_EQ(config->Get(TestConfig::kStringConfig), std::string("default_value")); + ASSERT_EQ(config->Get(TestConfig::kIntConfig), 25); + ASSERT_EQ(config->Get(TestConfig::kBoolConfig), false); + ASSERT_EQ(config->Get(TestConfig::kEnumConfig), TestEnum::VALUE1); + ASSERT_EQ(config->Get(TestConfig::kDoubleConfig), 3.14); // Test setting values - config.Set(TestConfig::kStringConfig, std::string("new_value")); - config.Set(TestConfig::kIntConfig, 100); - config.Set(TestConfig::kBoolConfig, true); - config.Set(TestConfig::kEnumConfig, TestEnum::VALUE2); - config.Set(TestConfig::kDoubleConfig, 2.99); - - ASSERT_EQ(config.Get(TestConfig::kStringConfig), "new_value"); - ASSERT_EQ(config.Get(TestConfig::kIntConfig), 100); - ASSERT_EQ(config.Get(TestConfig::kBoolConfig), true); - ASSERT_EQ(config.Get(TestConfig::kEnumConfig), TestEnum::VALUE2); - ASSERT_EQ(config.Get(TestConfig::kDoubleConfig), 2.99); + config->Set(TestConfig::kStringConfig, std::string("new_value")); + config->Set(TestConfig::kIntConfig, 100); + config->Set(TestConfig::kBoolConfig, true); + config->Set(TestConfig::kEnumConfig, TestEnum::VALUE2); + config->Set(TestConfig::kDoubleConfig, 2.99); + + ASSERT_EQ(config->Get(TestConfig::kStringConfig), "new_value"); + ASSERT_EQ(config->Get(TestConfig::kIntConfig), 100); + ASSERT_EQ(config->Get(TestConfig::kBoolConfig), true); + ASSERT_EQ(config->Get(TestConfig::kEnumConfig), TestEnum::VALUE2); + ASSERT_EQ(config->Get(TestConfig::kDoubleConfig), 2.99); // Test unsetting a value - config.Unset(TestConfig::kIntConfig); - config.Unset(TestConfig::kEnumConfig); - config.Unset(TestConfig::kDoubleConfig); - ASSERT_EQ(config.Get(TestConfig::kIntConfig), 25); - ASSERT_EQ(config.Get(TestConfig::kStringConfig), "new_value"); - ASSERT_EQ(config.Get(TestConfig::kBoolConfig), true); - ASSERT_EQ(config.Get(TestConfig::kEnumConfig), TestEnum::VALUE1); - ASSERT_EQ(config.Get(TestConfig::kDoubleConfig), 3.14); + config->Unset(TestConfig::kIntConfig); + config->Unset(TestConfig::kEnumConfig); + config->Unset(TestConfig::kDoubleConfig); + ASSERT_EQ(config->Get(TestConfig::kIntConfig), 25); + ASSERT_EQ(config->Get(TestConfig::kStringConfig), "new_value"); + ASSERT_EQ(config->Get(TestConfig::kBoolConfig), true); + ASSERT_EQ(config->Get(TestConfig::kEnumConfig), TestEnum::VALUE1); + ASSERT_EQ(config->Get(TestConfig::kDoubleConfig), 3.14); // Test resetting all values - config.Reset(); - ASSERT_EQ(config.Get(TestConfig::kStringConfig), "default_value"); - ASSERT_EQ(config.Get(TestConfig::kIntConfig), 25); - ASSERT_EQ(config.Get(TestConfig::kBoolConfig), false); - ASSERT_EQ(config.Get(TestConfig::kEnumConfig), TestEnum::VALUE1); - ASSERT_EQ(config.Get(TestConfig::kDoubleConfig), 3.14); + config->Reset(); + ASSERT_EQ(config->Get(TestConfig::kStringConfig), "default_value"); + ASSERT_EQ(config->Get(TestConfig::kIntConfig), 25); + ASSERT_EQ(config->Get(TestConfig::kBoolConfig), false); + ASSERT_EQ(config->Get(TestConfig::kEnumConfig), TestEnum::VALUE1); + ASSERT_EQ(config->Get(TestConfig::kDoubleConfig), 3.14); } } // namespace iceberg