From b3db87dfdd7313ba66b96dd809a5223f87a8b110 Mon Sep 17 00:00:00 2001
From: Mergen Imeev <imeevma@tarantool.org>
Date: Thu, 18 Jul 2024 12:50:44 +0300
Subject: [PATCH] lua: introduce is_interval for datetime.interval

This patch introduces is_interval() function for
require('datetime').interval.

Closes #10269

@TarantoolBot document
Title: Function require('datetime').interval.is_interval()

All modules representing field types, with the exception of `interval`
(i.e. `varbinary`, `uuid`, `decimal`, `datetime`), have an `is()` or
an `is_<type_name>()` function. Now such a function `is_interval()` is
provided for the `interval` module.
---
 .../unreleased/gh-10269-is_interval-for-module-interval.md   | 4 ++++
 src/lua/datetime.lua                                         | 1 +
 test/app-luatest/interval_test.lua                           | 5 +++++
 3 files changed, 10 insertions(+)
 create mode 100644 changelogs/unreleased/gh-10269-is_interval-for-module-interval.md

diff --git a/changelogs/unreleased/gh-10269-is_interval-for-module-interval.md b/changelogs/unreleased/gh-10269-is_interval-for-module-interval.md
new file mode 100644
index 0000000000..891e57b2d1
--- /dev/null
+++ b/changelogs/unreleased/gh-10269-is_interval-for-module-interval.md
@@ -0,0 +1,4 @@
+## feature/box
+
+* Added the `is_interval` function to check that the provided value is
+  `interval` (gh-10269).
diff --git a/src/lua/datetime.lua b/src/lua/datetime.lua
index a3fd61ea5d..633349e353 100644
--- a/src/lua/datetime.lua
+++ b/src/lua/datetime.lua
@@ -1303,6 +1303,7 @@ ffi.metatype(interval_t, {
 
 local interval_mt = {
     new     = interval_new,
+    is_interval = is_interval,
 }
 
 return setmetatable(
diff --git a/test/app-luatest/interval_test.lua b/test/app-luatest/interval_test.lua
index 174e3b5e3e..1ce22f95fc 100644
--- a/test/app-luatest/interval_test.lua
+++ b/test/app-luatest/interval_test.lua
@@ -34,3 +34,8 @@ end
 g.test_check_interval_encode_ffi = function()
     t.assert_equals(bin, msgpackffi.encode(val))
 end
+
+g.test_is_interval = function()
+    t.assert(itv.is_interval(val))
+    t.assert_not(itv.is_interval({}))
+end
-- 
GitLab