code: def test_expressions(self):
      expr1 = col("a")
      expr2 = col("b")
      expr3 = col("c")
  
      self.assertEqual("10", str(lit(10, DataTypes.INT(False))))
      self.assertEqual("rangeTo(1, 2)", str(range_(1, 2)))
      self.assertEqual("and(a, b, c)", str(and_(expr1, expr2, expr3)))
      self.assertEqual("or(a, b, c)", str(or_(expr1, expr2, expr3)))
  
      from pyflink.table.expressions import (
          UNBOUNDED_ROW,
          UNBOUNDED_RANGE,
          CURRENT_ROW,
          CURRENT_RANGE,
      )
  
      self.assertEqual("UNBOUNDED_ROW", str(UNBOUNDED_ROW))
      self.assertEqual("UNBOUNDED_RANGE", str(UNBOUNDED_RANGE))
      self.assertEqual("CURRENT_ROW", str(CURRENT_ROW))
      self.assertEqual("CURRENT_RANGE", str(CURRENT_RANGE))
      self.assertEqual("currentDatabase()", str(current_database()))
  
      self.assertEqual("currentDate()", str(current_date()))
      self.assertEqual("currentTime()", str(current_time()))
      self.assertEqual("currentTimestamp()", str(current_timestamp()))
      self.assertEqual("localTime()", str(local_time()))
      self.assertEqual("localTimestamp()", str(local_timestamp()))
      self.assertEqual(
          "toDate('2018-03-18')", str(to_date("2018-03-18"))
      )
      self.assertEqual(
          "toDate('2018-03-18', 'yyyy-MM-dd')",
          str(to_date("2018-03-18", "yyyy-MM-dd")),
      )
      self.assertEqual(
          "toTimestampLtz(123, 0)", str(to_timestamp_ltz(123, 0))
      )
      self.assertEqual(
          "toTimestamp('1970-01-01 08:01:40')",
          str(to_timestamp("1970-01-01 08:01:40")),
      )
      self.assertEqual(
          "toTimestamp('1970-01-01 08:01:40', 'yyyy-MM-dd HH:mm:ss')",
          str(
              to_timestamp("1970-01-01 08:01:40", "yyyy-MM-dd HH:mm:ss")
          ),
      )
      self.assertEqual(
          "temporalOverlaps(cast('2:55:00', TIME(0)), 3600000, "
          "cast('3:30:00', TIME(0)), 7200000)",
          str(
              temporal_overlaps(
                  lit("2:55:00").to_time,
                  lit(1).hours,
                  lit("3:30:00").to_time,
                  lit(2).hours,
              )
          ),
      )
      self.assertEqual(
          "dateFormat(time, '%Y, %d %M')",
          str(date_format(col("time"), "%Y, %d %M")),
      )
      self.assertEqual(
          "timestampDiff(DAY, cast('2016-06-15', DATE), cast('2016-06-18', DATE))",
          str(
              timestamp_diff(
                  TimePointUnit.DAY,
                  lit("2016-06-15").to_date,
                  lit("2016-06-18").to_date,
              )
          ),
      )
      self.assertEqual(
          "convertTz('2018-03-14 11:00:00', 'UTC', 'Asia/Shanghai')",
          str(
              convert_tz("2018-03-14 11:00:00", "UTC", "Asia/Shanghai")
          ),
      )
      self.assertEqual("fromUnixtime(1)", str(from_unixtime(1)))
      self.assertEqual(
          "fromUnixtime(1, 'yy-MM-dd HH-mm-ss')",
          str(from_unixtime(1, "yy-MM-dd HH-mm-ss")),
      )
      self.assertEqual("unixTimestamp()", str(unix_timestamp()))
      self.assertEqual(
          "unixTimestamp('2015-07-24 10:00:00')",
          str(unix_timestamp("2015-07-24 10:00:00")),
      )
      self.assertEqual(
          "unixTimestamp('2015-07-24 10:00:00', 'yy-MM-dd HH-mm-ss')",
          str(
              unix_timestamp("2015-07-24 10:00:00", "yy-MM-dd HH-mm-ss")
          ),
      )
      self.assertEqual("array(1, 2, 3)", str(array(1, 2, 3)))
      self.assertEqual("row('key1', 1)", str(row("key1", 1)))
      self.assertEqual(
          "map('key1', 1, 'key2', 2, 'key3', 3)",
          str(map_("key1", 1, "key2", 2, "key3", 3)),
      )
      self.assertEqual("4", str(row_interval(4)))
      self.assertEqual("pi()", str(pi()))
      self.assertEqual("e()", str(e()))
      self.assertEqual("rand(4)", str(rand(4)))
      self.assertEqual("randInteger(4)", str(rand_integer(4)))
      self.assertEqual("atan2(1, 2)", str(atan2(1, 2)))
      self.assertEqual("minusPrefix(a)", str(negative(expr1)))
      self.assertEqual(
          "concat(a, b, c)", str(concat(expr1, expr2, expr3))
      )
      self.assertEqual(
          "concat_ws(', ', b, c)", str(concat_ws(", ", expr2, expr3))
      )
      self.assertEqual("uuid()", str(uuid()))
      self.assertEqual("null", str(null_of(DataTypes.BIGINT())))
      self.assertEqual("log(a)", str(log(expr1)))
      self.assertEqual(
          "ifThenElse(a, b, c)", str(if_then_else(expr1, expr2, expr3))
      )
      self.assertEqual(
          "withColumns(a, b, c)", str(with_columns(expr1, expr2, expr3))
      )
      self.assertEqual("a.b.c(a)", str(call("a.b.c", expr1)))
  
file_path: flink/flink-python/pyflink/table/tests/test_expression.py
imports: import unittest
  from pyflink.table import DataTypes
  from pyflink.table.expression import TimeIntervalUnit, TimePointUnit, JsonExistsOnError, JsonValueOnEmptyOrError, JsonType, JsonQueryWrapper, JsonQueryOnEmptyOrError
  from pyflink.table.expressions import col, lit, range_, and_, or_, current_date, current_time, current_timestamp, current_database, local_timestamp, local_time, temporal_overlaps, date_format, timestamp_diff, array, row, map_, row_interval, pi, e, rand, rand_integer, atan2, negative, concat, concat_ws, uuid, null_of, log, if_then_else, with_columns, call, to_timestamp_ltz, from_unixtime, to_date, to_timestamp, convert_tz, unix_timestamp
  from pyflink.testing.test_case_utils import PyFlinkTestCase
label_desc: Use image node_id 2 for calling the PyFlinkBatchExpressionTests obj's underlying member method code with example usage: obj.test_expressions() without return types