MCPcopy Create free account
hub / github.com/apache/arrow / MakeStruct

Function MakeStruct

cpp/src/arrow/compute/kernels/scalar_if_else_test.cc:1246–1458  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1244}
1245
1246Datum MakeStruct(const std::vector<Datum>& conds) {
1247 if (conds.size() == 0) {
1248 // The tests below want a struct scalar when no condition values passed,
1249 // not a StructArray of length 0
1250 ScalarVector value;
1251 return std::make_shared<StructScalar>(value, struct_({}));
1252 } else {
1253 EXPECT_OK_AND_ASSIGN(Datum result, CallFunction("make_struct", conds));
1254 return result;
1255 }
1256}
1257
1258void TestCaseWhenFixedSize(const std::shared_ptr<DataType>& type) {
1259 auto cond_true = ScalarFromJSON(boolean(), "true");
1260 auto cond_false = ScalarFromJSON(boolean(), "false");
1261 auto cond_null = ScalarFromJSON(boolean(), "null");
1262 auto cond1 = ArrayFromJSON(boolean(), "[true, true, null, null]");
1263 auto cond2 = ArrayFromJSON(boolean(), "[true, false, true, null]");
1264 auto scalar_null = ScalarFromJSON(type, "null");
1265 auto values_null = ArrayFromJSON(type, "[null, null, null, null]");
1266
1267 if (type->id() == Type::DATE64) {
1268 auto scalar1 = ScalarFromJSON(type, "86400000");
1269 auto scalar2 = ScalarFromJSON(type, "172800000");
1270 auto values1 = ArrayFromJSON(type, "[259200000, null, 432000000, 518400000]");
1271 auto values2 = ArrayFromJSON(type, "[604800000, 691200000, null, 864000000]");
1272
1273 CheckScalar("case_when", {MakeStruct({}), values1}, values1);
1274 CheckScalar("case_when", {MakeStruct({}), values_null}, values_null);
1275
1276 CheckScalar("case_when", {MakeStruct({cond_true}), scalar1, values1},
1277 *MakeArrayFromScalar(*scalar1, 4));
1278 CheckScalar("case_when", {MakeStruct({cond_false}), scalar1, values1}, values1);
1279
1280 CheckScalar("case_when", {MakeStruct({cond_true}), values1}, values1);
1281 CheckScalar("case_when", {MakeStruct({cond_false}), values1}, values_null);
1282 CheckScalar("case_when", {MakeStruct({cond_null}), values1}, values_null);
1283 CheckScalar("case_when", {MakeStruct({cond_true}), values1, values2}, values1);
1284 CheckScalar("case_when", {MakeStruct({cond_false}), values1, values2}, values2);
1285 CheckScalar("case_when", {MakeStruct({cond_null}), values1, values2}, values2);
1286
1287 CheckScalar("case_when", {MakeStruct({cond_true, cond_true}), values1, values2},
1288 values1);
1289 CheckScalar("case_when", {MakeStruct({cond_false, cond_false}), values1, values2},
1290 values_null);
1291 CheckScalar("case_when", {MakeStruct({cond_true, cond_false}), values1, values2},
1292 values1);
1293 CheckScalar("case_when", {MakeStruct({cond_false, cond_true}), values1, values2},
1294 values2);
1295 CheckScalar("case_when", {MakeStruct({cond_null, cond_true}), values1, values2},
1296 values2);
1297 CheckScalar("case_when",
1298 {MakeStruct({cond_false, cond_false}), values1, values2, values2},
1299 values2);
1300
1301 CheckScalar("case_when", {MakeStruct({cond1, cond2}), scalar1, scalar2},
1302 ArrayFromJSON(type, "[86400000, 86400000, 172800000, null]"));
1303 CheckScalar("case_when", {MakeStruct({cond1}), scalar_null}, values_null);

Callers 3

TestCaseWhenRandomFunction · 0.70
TYPED_TESTFunction · 0.70
TESTFunction · 0.70

Calls 12

struct_Function · 0.85
ScalarFromJSONFunction · 0.85
ArrayFromJSONFunction · 0.85
CheckScalarFunction · 0.85
CallFunctionFunction · 0.85
MakeNullScalarFunction · 0.85
MakeArrayOfNullFunction · 0.85
MakeArrayFromScalarFunction · 0.50
fieldFunction · 0.50
DatumClass · 0.50
sizeMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected