You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: crud_test.rb
    path of file: ./repos/risingwave/integration_tests/client-library/ruby/test
    
    the code of the file until where you have to start completion: #!/usr/bin/env ruby
require_relative '../rw_conn'
require_relative 'util'
require 'date'
require 'test/unit'

class SQLTest < Test::Unit::TestCase
  def setup
    @conn = get_rw_conn(host: 'risingwave-standalone')
  end

  def test_crud
    create_table(@conn)

    name = 'John Doe'
    age = 30
    salary = 50000
    tripIDs = ['12345', '67890']
    fareData = {
      "initial_charge"    => 3.0,
      "subsequent_charge" => 1.5,
      "surcharge"         => 0.5,
      "tolls"             => 2.0,
    }
    deci = 2.14159
    birthdate = Date.parse('1993-01-02')
    starttime = "20:00:00"
    timest = DateTime.now()
    timestz = DateTime.now()
    timegap = '02:00:00'

    insert_data(@conn, name, age, salary, tripIDs, birthdate, deci, fareData, starttime, timest, timestz, timegap)
    check_data(name, age, salary, tripIDs, birthdate, deci, fareData, starttime, timest, timestz, timegap)

    # Insert data with null values
    nullName = "Null Person";
    nullAge = 0
    nullSalary = 0
    nullTripIDs = []
    nullFareData = {}
    nullBirthdate = Date.parse('0001-01-01')
    nullStarttime = '00:00:00'
    nullTimest = DateTime.parse('0001-01-01 00:00:00')
    nullTimestz = DateTime.parse('1970-01-01T0
    
  def test_crud
    create_table(@conn)

    name = 'John Doe'
    age = 30
    salary = 50000
    tripIDs = ['12345', '67890']
    fareData = {
      "initial_charge"    => 3.0,
      "subsequent_charge" => 1.5,
      "surcharge"         => 0.5,
      "tolls"             => 2.0,
    }
    deci = 2.14159
    birthdate = Date.parse('1993-01-02')
    starttime = "20:00:00"
    timest = DateTime.now()
    timestz = DateTime.now()
    timegap = '02:00:00'

    insert_data(@conn, name, age, salary, tripIDs, birthdate, deci, fareData, starttime, timest, timestz, timegap)
    check_data(name, age, salary, tripIDs, birthdate, deci, fareData, starttime, timest, timestz, timegap)

    # Insert data with null values
    nullName = "Null Person";
    nullAge = 0
    nullSalary = 0
    nullTripIDs = []
    nullFareData = {}
    nullBirthdate = Date.parse('0001-01-01')
    nullStarttime = '00:00:00'
    nullTimest = DateTime.parse('0001-01-01 00:00:00')
    nullTimestz = DateTime.parse('1970-01-01T00:00:00Z')
    nullTimegap = '00:00:00';
    nullDeci = 0.0;

    insert_data(@conn, nullName, nullAge, nullSalary, nullTripIDs, nullBirthdate, nullDeci, nullFareData, nullStarttime, nullTimest, nullTimestz, nullTimegap)
    check_data(nullName, nullAge, nullSalary, nullTripIDs, nullBirthdate, nullDeci, nullFareData, nullStarttime, nullTimest, nullTimestz, nullTimegap)

    update_data(@conn, name, 60000)
    delete_data(@conn, name)
    drop_table(@conn)
  end