| 1140 | int32_t bit_width; |
| 1141 | |
| 1142 | std::shared_ptr<::arrow::Array> MakeArray( |
| 1143 | ::arrow::random::RandomArrayGenerator& rand) const { |
| 1144 | using Traits = arrow::TypeTraits<ArrowType>; |
| 1145 | |
| 1146 | std::vector<std::shared_ptr<::arrow::Array>> arrays = {}; |
| 1147 | |
| 1148 | for (const auto& dyn_part : parts) { |
| 1149 | if (auto* part = std::get_if<RandomPart>(&dyn_part)) { |
| 1150 | auto arr = rand.Numeric<ArrowType>(part->size, /* min= */ value_type(0), |
| 1151 | part->max, part->null_probability); |
| 1152 | arrays.push_back(std::move(arr)); |
| 1153 | |
| 1154 | } else if (auto* part = std::get_if<RepeatPart>(&dyn_part)) { |
| 1155 | auto arr = |
| 1156 | rand.Numeric<ArrowType>(part->size, /* min= */ part->value, |
| 1157 | /* max= */ part->value, part->null_probability); |
| 1158 | arrays.push_back(std::move(arr)); |
| 1159 | |
| 1160 | } else if (auto* part = std::get_if<NullPart>(&dyn_part)) { |
| 1161 | EXPECT_OK_AND_ASSIGN( |
| 1162 | auto arr, ::arrow::MakeArrayOfNull(Traits::type_singleton(), part->size)); |
| 1163 | arrays.push_back(std::move(arr)); |
| 1164 | } |
| 1165 | } |
| 1166 | ARROW_DCHECK_EQ(parts.size(), arrays.size()); |
| 1167 | |
| 1168 | return ::arrow::Concatenate(arrays).ValueOrDie(); |
| 1169 | } |
| 1170 | }; |
| 1171 | |
| 1172 | template <typename T> |
no test coverage detected