Prevent copying SimpleDMatrix. (#5453)
* Set default dtor for SimpleDMatrix to initialize default copy ctor, which is deleted due to unique ptr. * Remove commented code. * Remove warning for calling host function (std::max). * Remove warning for initialization order. * Remove warning for unused variables.
This commit is contained in:
@@ -72,32 +72,32 @@ TEST(SimpleDMatrix, Empty) {
|
||||
|
||||
data::CSRAdapter csr_adapter(row_ptr.data(), feature_idx.data(), data.data(),
|
||||
0, 0, 0);
|
||||
data::SimpleDMatrix dmat(&csr_adapter,
|
||||
std::numeric_limits<float>::quiet_NaN(), 1);
|
||||
CHECK_EQ(dmat.Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat.Info().num_row_, 0);
|
||||
CHECK_EQ(dmat.Info().num_col_, 0);
|
||||
for (auto &batch : dmat.GetBatches<SparsePage>()) {
|
||||
std::unique_ptr<data::SimpleDMatrix> dmat(new data::SimpleDMatrix(
|
||||
&csr_adapter, std::numeric_limits<float>::quiet_NaN(), 1));
|
||||
CHECK_EQ(dmat->Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat->Info().num_row_, 0);
|
||||
CHECK_EQ(dmat->Info().num_col_, 0);
|
||||
for (auto &batch : dmat->GetBatches<SparsePage>()) {
|
||||
CHECK_EQ(batch.Size(), 0);
|
||||
}
|
||||
|
||||
data::DenseAdapter dense_adapter(nullptr, 0, 0);
|
||||
dmat = data::SimpleDMatrix(&dense_adapter,
|
||||
std::numeric_limits<float>::quiet_NaN(), 1);
|
||||
CHECK_EQ(dmat.Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat.Info().num_row_, 0);
|
||||
CHECK_EQ(dmat.Info().num_col_, 0);
|
||||
for (auto &batch : dmat.GetBatches<SparsePage>()) {
|
||||
dmat.reset( new data::SimpleDMatrix(&dense_adapter,
|
||||
std::numeric_limits<float>::quiet_NaN(), 1) );
|
||||
CHECK_EQ(dmat->Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat->Info().num_row_, 0);
|
||||
CHECK_EQ(dmat->Info().num_col_, 0);
|
||||
for (auto &batch : dmat->GetBatches<SparsePage>()) {
|
||||
CHECK_EQ(batch.Size(), 0);
|
||||
}
|
||||
|
||||
data::CSCAdapter csc_adapter(nullptr, nullptr, nullptr, 0, 0);
|
||||
dmat = data::SimpleDMatrix(&csc_adapter,
|
||||
std::numeric_limits<float>::quiet_NaN(), 1);
|
||||
CHECK_EQ(dmat.Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat.Info().num_row_, 0);
|
||||
CHECK_EQ(dmat.Info().num_col_, 0);
|
||||
for (auto &batch : dmat.GetBatches<SparsePage>()) {
|
||||
dmat.reset(new data::SimpleDMatrix(
|
||||
&csc_adapter, std::numeric_limits<float>::quiet_NaN(), 1));
|
||||
CHECK_EQ(dmat->Info().num_nonzero_, 0);
|
||||
CHECK_EQ(dmat->Info().num_row_, 0);
|
||||
CHECK_EQ(dmat->Info().num_col_, 0);
|
||||
for (auto &batch : dmat->GetBatches<SparsePage>()) {
|
||||
CHECK_EQ(batch.Size(), 0);
|
||||
}
|
||||
}
|
||||
@@ -109,11 +109,11 @@ TEST(SimpleDMatrix, MissingData) {
|
||||
|
||||
data::CSRAdapter adapter(row_ptr.data(), feature_idx.data(), data.data(), 2,
|
||||
3, 2);
|
||||
data::SimpleDMatrix dmat(&adapter, std::numeric_limits<float>::quiet_NaN(),
|
||||
1);
|
||||
CHECK_EQ(dmat.Info().num_nonzero_, 2);
|
||||
dmat = data::SimpleDMatrix(&adapter, 1.0, 1);
|
||||
CHECK_EQ(dmat.Info().num_nonzero_, 1);
|
||||
std::unique_ptr<data::SimpleDMatrix> dmat{new data::SimpleDMatrix{
|
||||
&adapter, std::numeric_limits<float>::quiet_NaN(), 1}};
|
||||
CHECK_EQ(dmat->Info().num_nonzero_, 2);
|
||||
dmat.reset(new data::SimpleDMatrix(&adapter, 1.0, 1));
|
||||
CHECK_EQ(dmat->Info().num_nonzero_, 1);
|
||||
}
|
||||
|
||||
TEST(SimpleDMatrix, EmptyRow) {
|
||||
|
||||
Reference in New Issue
Block a user