From 13167576703752ec5181ec0b7ea35e5d82ad5607 Mon Sep 17 00:00:00 2001 From: Rok Date: Wed, 9 Feb 2022 15:49:11 +0100 Subject: [PATCH] SubtractDateAndDuration --- .../compute/kernels/scalar_temporal_test.cc | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/cpp/src/arrow/compute/kernels/scalar_temporal_test.cc b/cpp/src/arrow/compute/kernels/scalar_temporal_test.cc index fdd2876304f..a062114774e 100644 --- a/cpp/src/arrow/compute/kernels/scalar_temporal_test.cc +++ b/cpp/src/arrow/compute/kernels/scalar_temporal_test.cc @@ -1034,6 +1034,44 @@ TEST_F(ScalarTemporalTest, TestTemporalSubtractDateAndDuration) { } } +TEST_F(ScalarTemporalTest, TestTemporalAddTimestampAndDuration) { + for (auto op : {"add", "add_checked"}) { + for (auto tz : {"", "UTC", "Pacific/Marquesas"}) { + auto timestamp_unit_s = timestamp(TimeUnit::SECOND, tz); + auto duration_unit_s = duration(TimeUnit::SECOND); + auto timestamp_unit_ms = timestamp(TimeUnit::MILLI, tz); + auto duration_unit_ms = duration(TimeUnit::MILLI); + auto timestamp_unit_us = timestamp(TimeUnit::MICRO, tz); + auto duration_unit_us = duration(TimeUnit::MICRO); + auto timestamp_unit_ns = timestamp(TimeUnit::NANO, tz); + auto duration_unit_ns = duration(TimeUnit::NANO); + + CheckScalarBinary(op, ArrayFromJSON(timestamp_unit_s, times_seconds_precision), + ArrayFromJSON(duration_unit_s, seconds_between), + ArrayFromJSON(timestamp_unit_s, times_seconds_precision2)); + CheckScalarBinary(op, ArrayFromJSON(timestamp_unit_ms, times_seconds_precision), + ArrayFromJSON(duration_unit_ms, milliseconds_between), + ArrayFromJSON(timestamp_unit_ms, times_seconds_precision2)); + CheckScalarBinary(op, ArrayFromJSON(timestamp_unit_us, times_seconds_precision), + ArrayFromJSON(duration_unit_us, microseconds_between), + ArrayFromJSON(timestamp_unit_us, times_seconds_precision2)); + CheckScalarBinary(op, ArrayFromJSON(timestamp_unit_ns, times_seconds_precision), + ArrayFromJSON(duration_unit_ns, nanoseconds_between), + ArrayFromJSON(timestamp_unit_ns, times_seconds_precision2)); + } + + auto seconds_1 = ArrayFromJSON(timestamp(TimeUnit::SECOND), R"([1, null])"); + auto milliseconds_2k = ArrayFromJSON(duration(TimeUnit::MILLI), R"([2000, null])"); + auto milliseconds_3k = ArrayFromJSON(timestamp(TimeUnit::MILLI), R"([3000, null])"); + CheckScalarBinary(op, seconds_1, milliseconds_2k, milliseconds_3k); + + auto seconds_1_tz = ArrayFromJSON(timestamp(TimeUnit::SECOND, "UTC"), R"([1, null])"); + auto milliseconds_3k_tz = + ArrayFromJSON(timestamp(TimeUnit::MILLI, "UTC"), R"([3000, null])"); + CheckScalarBinary(op, seconds_1_tz, milliseconds_2k, milliseconds_3k_tz); + } +} + TEST_F(ScalarTemporalTest, TestTemporalSubtractTimestampAndDuration) { for (auto op : {"subtract", "subtract_checked"}) { for (auto tz : {"", "UTC", "Pacific/Marquesas"}) {