Skip to content
Snippets Groups Projects
Select Git revision
  • 8b43244d46fbfd49b730b6184753cb6e3cb0e501
  • main default protected
  • f-sss4grpc
  • dev
  • 108-implement-rpc-call-for-server-side-scripting
  • f-windows-conan-create
  • f-to-string
  • f-update-requirements
  • f-related-projects
  • f-role
  • f-remote-path
  • f-rel-path
  • f-consol-message
  • v0.3.0
  • v0.2.2
  • v0.2.1
  • v0.2.0
  • v0.1.2
  • v0.1.1
  • v0.1
  • v0.0.19
  • v0.0.18
  • v0.0.16
  • v0.0.15
  • v0.0.10
  • v0.0.9
  • v0.0.8
  • v0.0.7
  • v0.0.6
  • v0.0.5
  • v0.0.4
  • v0.0.3
  • v0.0.2
33 results

role.h

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    test_datetime.py 68.84 KiB
    # encoding: utf-8
    #
    # ** header v3.0
    # This file is a part of the CaosDB Project.
    #
    # Copyright (C) 2018 Research Group Biomedical Physics,
    # Max-Planck-Institute for Dynamics and Self-Organization Göttingen
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU Affero General Public License as
    # published by the Free Software Foundation, either version 3 of the
    # License, or (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU Affero General Public License for more details.
    #
    # You should have received a copy of the GNU Affero General Public License
    # along with this program. If not, see <https://www.gnu.org/licenses/>.
    #
    # ** end header
    #
    """Created on 27.10.2015.
    
    @author: tf
    """
    
    from nose.tools import assert_true, assert_false  # @UnresolvedImport
    import caosdb as h
    
    ''' some helpful functions '''
    old_stored = None
    
    
    def update_rec(rec, datetime):
        global old_stored
        if old_stored == datetime:
            return
        rec.get_property("SimpleDateProperty").value = datetime
        rec.update()
        old_stored = datetime
    
    
    def store(rec, datetime):
        update_rec(rec, datetime)
        assert_true(rec.is_valid())
        return h.Record(id=rec.id).retrieve().get_property(
            "SimpleDateProperty").value
    
    
    def set_up_rec():
        global old_stored
        old_stored = None
        p = h.Property(name="SimpleDateProperty", datatype="DATETIME").insert()
        assert_true(p.is_valid())
    
        rt = h.RecordType(
            name="SimpleRecordType").add_property(
            p, importance="OBLIGATORY").insert()
        assert_true(rt.is_valid())
    
        rec = h.Record(name="SimpleRecord").add_parent(rt).add_property(p).insert()
        assert_true(rec.is_valid())
    
        return rec
    
    
    def query_assertion(rec, stored, op, queried):
        update_rec(rec, stored)
        assert_true(rec.is_valid())
    
        q = h.execute_query(
            "FIND RECORD SimpleRecord WHICH HAS A SimpleDateProperty" +
            op +
            queried)
        return len(q) == 1
    
    
    ''' the actual tests '''
    
    
    def test_utcdatetime_storage():
        try:
            rec = set_up_rec()
    
            utcs = [
                "2015-12-24T20:15:30",
                "2015-12-24T20:15:30.123",
                "-9999-01-01T00:00:00",
                "-9999-01-01T00:00:00.0",
                "9999-12-31T23:59:59",
                "9999-12-31T23:59:59.999999999",
                "0001-01-01T00:00:00",
                "0001-01-01T00:00:00.0",
                "-0001-12-31T23:59:59",
                "-0001-12-31T23:59:59.999999"]
            for d in utcs:
                assert_true(d in store(rec, d))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_date_storage():
        try:
            rec = set_up_rec()
    
            dates = [
                "2015-12-24",
                "2015",
                "2015-12",
                "9999-12-31",
                "9999-12",
                "9999",
                "-9999-01-01",
                "-9999-01",
                "-9999",
                "0001-01-01",
                "0001-01",
                "0001",
                "-0001-12-31",
                "-0001-12",
                "-0001"]
            for d in dates:
                print(d)
                assert_true(d in store(rec, d))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_in_operator():
        try:
            rec = set_up_rec()
    
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_true(query_assertion(rec, d, " IN ", d))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20:15"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05"))
            assert_true(query_assertion(rec, d, " IN ", "2015"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:15:30.124"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:15:31.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:15:31"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:16:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:16:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:16"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T21:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-04T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05"))
            assert_false(query_assertion(rec, d, " IN ", "2014"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_true(query_assertion(rec, d, " IN ", d))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20:15"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05T20"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05-05"))
            assert_true(query_assertion(rec, d, " IN ", "2015-05"))
            assert_true(query_assertion(rec, d, " IN ", "2015"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:15:30.124"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:15:31.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:15:31"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T20:16:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:16:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T20:16"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-05T21:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-05T21"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-04T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-04"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-05"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-05"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05"))
            assert_false(query_assertion(rec, d, " IN ", "2014"))
    
            # Date YYYY-MM-dd
            d = "2015-01-01"
            assert_true(query_assertion(rec, d, " IN ", d))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-01-01T20"))
            assert_true(query_assertion(rec, d, " IN ", "2015-01-01"))
            assert_true(query_assertion(rec, d, " IN ", "2015-01"))
            assert_true(query_assertion(rec, d, " IN ", "2015"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-02-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-02-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-02-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-02-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-02-01"))
            assert_false(query_assertion(rec, d, " IN ", "2015-02"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2016-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2016-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2016-01-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2016-01-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2016-01-01"))
            assert_false(query_assertion(rec, d, " IN ", "2016-01"))
            assert_false(query_assertion(rec, d, " IN ", "2016"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2014-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2014-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2014-01-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2014-01-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2014-01-01"))
            assert_false(query_assertion(rec, d, " IN ", "2014-01"))
            assert_false(query_assertion(rec, d, " IN ", "2014"))
    
            # Date YYYY-MM
            d = "2015-05"
            assert_true(query_assertion(rec, d, " IN ", d))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01"))
            assert_true(query_assertion(rec, d, " IN ", "2015"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-06-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-06-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-06-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-06-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-06-01"))
            assert_false(query_assertion(rec, d, " IN ", "2015-06"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-04-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04-01"))
            assert_false(query_assertion(rec, d, " IN ", "2015-04"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2016-05-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05"))
            assert_false(query_assertion(rec, d, " IN ", "2016"))
    
            # Date YYYY
            d = "2015"
            assert_true(query_assertion(rec, d, " IN ", d))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2015-05-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05-01"))
            assert_false(query_assertion(rec, d, " IN ", "2015-05"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2016-05-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05-01"))
            assert_false(query_assertion(rec, d, " IN ", "2016-05"))
            assert_false(query_assertion(rec, d, " IN ", "2016"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " IN ",
                    "2014-05-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-01T20:15:30"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-01T20:15"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-01T20"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05-01"))
            assert_false(query_assertion(rec, d, " IN ", "2014-05"))
            assert_false(query_assertion(rec, d, " IN ", "2014"))
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_not_in_operator():
        try:
            rec = set_up_rec()
    
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_false(query_assertion(rec, d, " NOT IN ", d))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.123"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.124"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:31.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15:31"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:16:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:16:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:16"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T21:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T21:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T21:15"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-06T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_false(query_assertion(rec, d, " NOT IN ", d))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.123"))
            assert_false(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.124"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:31.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15:31"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:16:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:16:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:16"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T21:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T21:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T21:15"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-06T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016"))
    
            # Date YYYY-MM-dd
            d = "2015-05-05"
            assert_false(query_assertion(rec, d, " NOT IN ", d))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014"))
    
            # Date YYYY-MM
            d = "2015-05"
            assert_false(query_assertion(rec, d, " NOT IN ", d))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-06"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-04"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014"))
    
            # Date YYYY
            d = "2015"
            assert_false(query_assertion(rec, d, " NOT IN ", d))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2015-05"))
            assert_false(query_assertion(rec, d, " NOT IN ", "2015"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2016"))
            assert_true(
                query_assertion(
                    rec,
                    d,
                    " NOT IN ",
                    "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014-05"))
            assert_true(query_assertion(rec, d, " NOT IN ", "2014"))
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_eq_operator():
        try:
            rec = set_up_rec()
    
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_true(query_assertion(rec, d, "=", d))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "=", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05"))
            assert_false(query_assertion(rec, d, "=", "2015-05"))
            assert_false(query_assertion(rec, d, "=", "2015"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_true(query_assertion(rec, d, "=", d))
            assert_true(query_assertion(rec, d, "=", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "=", "2015-05-05"))
            assert_false(query_assertion(rec, d, "=", "2015-05"))
            assert_false(query_assertion(rec, d, "=", "2015"))
    
            # Date YYYY-MM-dd
            d = "2015-01-01"
            assert_true(query_assertion(rec, d, "=", d))
            assert_false(query_assertion(rec, d, "=", "2015-01-02"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "=", "2015-01"))
            assert_false(query_assertion(rec, d, "=", "2015"))
    
            # Date YYYY-MM
            d = "2015-01"
            assert_true(query_assertion(rec, d, "=", d))
            assert_false(query_assertion(rec, d, "=", "2015-02"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01"))
            assert_false(query_assertion(rec, d, "=", "2015"))
    
            # Date YYYY
            d = "2015"
            assert_true(query_assertion(rec, d, "=", d))
            assert_false(query_assertion(rec, d, "=", "2016"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "=", "2015-01-01"))
            assert_false(query_assertion(rec, d, "=", "2015-01"))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_neq_operator():
        try:
            rec = set_up_rec()
    
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_false(query_assertion(rec, d, "!=", d))
            assert_true(query_assertion(rec, d, "!=", "2015-05-05T20:15:31"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05"))
            assert_false(query_assertion(rec, d, "!=", "2015-05"))
            assert_false(query_assertion(rec, d, "!=", "2015"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_false(query_assertion(rec, d, "!=", d))
            assert_true(query_assertion(rec, d, "!=", "2015-05-05T20:15:30.124"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "!=", "2015-05-05"))
            assert_false(query_assertion(rec, d, "!=", "2015-05"))
            assert_false(query_assertion(rec, d, "!=", "2015"))
    
            # Date YYYY-MM-dd
            d = "2015-01-01"
            assert_false(query_assertion(rec, d, "!=", d))
            assert_true(query_assertion(rec, d, "!=", "2015-01-02"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "!=", "2015-01"))
            assert_false(query_assertion(rec, d, "!=", "2015"))
    
            # Date YYYY-MM
            d = "2015-01"
            assert_false(query_assertion(rec, d, "!=", d))
            assert_true(query_assertion(rec, d, "!=", "2015-02"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01"))
            assert_false(query_assertion(rec, d, "!=", "2015"))
    
            # Date YYYY
            d = "2015"
            assert_false(query_assertion(rec, d, "!=", d))
            assert_true(query_assertion(rec, d, "!=", "2016"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30.123"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15:30"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20:15"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01T20"))
            assert_false(query_assertion(rec, d, "!=", "2015-01-01"))
            assert_false(query_assertion(rec, d, "!=", "2015-01"))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_smaller_operator():
        try:
            rec = set_up_rec()
    
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_false(query_assertion(rec, d, "<", d))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05"))
            assert_false(query_assertion(rec, d, "<", "2015-05"))
            assert_false(query_assertion(rec, d, "<", "2015"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.122"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.124"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:29.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:29"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:15:31.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:15:31"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05"))
            assert_false(query_assertion(rec, d, "<", "2015-04"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05"))
            assert_true(query_assertion(rec, d, "<", "2015-06"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05"))
            assert_false(query_assertion(rec, d, "<", "2014-05"))
            assert_false(query_assertion(rec, d, "<", "2014"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05"))
            assert_true(query_assertion(rec, d, "<", "2016-05"))
            assert_true(query_assertion(rec, d, "<", "2016"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_false(query_assertion(rec, d, "<", d))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05"))
            assert_false(query_assertion(rec, d, "<", "2015-05"))
            assert_false(query_assertion(rec, d, "<", "2015"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.122"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:15:30.124"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:29.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:29"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:15:31.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:15:31"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:14"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T20:16"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T19"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21:15"))
            assert_true(query_assertion(rec, d, "<", "2015-05-05T21"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05"))
            assert_false(query_assertion(rec, d, "<", "2015-04"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05"))
            assert_true(query_assertion(rec, d, "<", "2015-06"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05"))
            assert_false(query_assertion(rec, d, "<", "2014-05"))
            assert_false(query_assertion(rec, d, "<", "2014"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05"))
            assert_true(query_assertion(rec, d, "<", "2016-05"))
            assert_true(query_assertion(rec, d, "<", "2016"))
    
            # Date YYYY-MM-dd
            d = "2015-05-05"
            assert_false(query_assertion(rec, d, "<", d))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05"))
            assert_false(query_assertion(rec, d, "<", "2015-05"))
            assert_false(query_assertion(rec, d, "<", "2015"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-04"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06T20"))
            assert_true(query_assertion(rec, d, "<", "2015-05-06"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05"))
            assert_false(query_assertion(rec, d, "<", "2015-04"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05"))
            assert_true(query_assertion(rec, d, "<", "2015-06"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05"))
            assert_false(query_assertion(rec, d, "<", "2014-05"))
            assert_false(query_assertion(rec, d, "<", "2014"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05"))
            assert_true(query_assertion(rec, d, "<", "2016-05"))
            assert_true(query_assertion(rec, d, "<", "2016"))
    
            # Date YYYY-MM
            d = "2015-05"
            assert_false(query_assertion(rec, d, "<", d))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05"))
            assert_false(query_assertion(rec, d, "<", "2015-05"))
            assert_false(query_assertion(rec, d, "<", "2015"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-04-05"))
            assert_false(query_assertion(rec, d, "<", "2015-04"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05T20"))
            assert_true(query_assertion(rec, d, "<", "2015-06-05"))
            assert_true(query_assertion(rec, d, "<", "2015-06"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05"))
            assert_false(query_assertion(rec, d, "<", "2014-05"))
            assert_false(query_assertion(rec, d, "<", "2014"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05"))
            assert_true(query_assertion(rec, d, "<", "2016-05"))
            assert_true(query_assertion(rec, d, "<", "2016"))
    
            # Date YYYY
            d = "2015"
            assert_false(query_assertion(rec, d, "<", d))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2015-05-05"))
            assert_false(query_assertion(rec, d, "<", "2015-05"))
            assert_false(query_assertion(rec, d, "<", "2015"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20:15"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05T20"))
            assert_false(query_assertion(rec, d, "<", "2014-05-05"))
            assert_false(query_assertion(rec, d, "<", "2014-05"))
            assert_false(query_assertion(rec, d, "<", "2014"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20:15"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05T20"))
            assert_true(query_assertion(rec, d, "<", "2016-05-05"))
            assert_true(query_assertion(rec, d, "<", "2016-05"))
            assert_true(query_assertion(rec, d, "<", "2016"))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass
    
    
    def test_greater_operator():
        try:
            rec = set_up_rec()
            # query with >
            # Date YYYY-MM-ddThh:mm:ss
            d = "2015-05-05T20:15:30"
            assert_false(query_assertion(rec, d, ">", d))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05"))
            assert_false(query_assertion(rec, d, ">", "2015-05"))
            assert_false(query_assertion(rec, d, ">", "2015"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.122"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.124"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:15:29.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:15:29"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:31.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:31"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05"))
            assert_true(query_assertion(rec, d, ">", "2015-04"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05"))
            assert_false(query_assertion(rec, d, ">", "2015-06"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05"))
            assert_true(query_assertion(rec, d, ">", "2014-05"))
            assert_true(query_assertion(rec, d, ">", "2014"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05"))
            assert_false(query_assertion(rec, d, ">", "2016-05"))
            assert_false(query_assertion(rec, d, ">", "2016"))
    
            # Date YYYY-MM-ddThh:mm:ss.ns
            d = "2015-05-05T20:15:30.123"
            assert_false(query_assertion(rec, d, ">", d))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05"))
            assert_false(query_assertion(rec, d, ">", "2015-05"))
            assert_false(query_assertion(rec, d, ">", "2015"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:15:30.122"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.124"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:15:29.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:15:29"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:31.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:31"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T20:14"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:16"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19:15"))
            assert_true(query_assertion(rec, d, ">", "2015-05-05T19"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T21"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05"))
            assert_true(query_assertion(rec, d, ">", "2015-04"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05"))
            assert_false(query_assertion(rec, d, ">", "2015-06"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05"))
            assert_true(query_assertion(rec, d, ">", "2014-05"))
            assert_true(query_assertion(rec, d, ">", "2014"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05"))
            assert_false(query_assertion(rec, d, ">", "2016-05"))
            assert_false(query_assertion(rec, d, ">", "2016"))
    
            # Date YYYY-MM-dd
            d = "2015-05-05"
            assert_false(query_assertion(rec, d, ">", d))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05"))
            assert_false(query_assertion(rec, d, ">", "2015-05"))
            assert_false(query_assertion(rec, d, ">", "2015"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-06"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04T20"))
            assert_true(query_assertion(rec, d, ">", "2015-05-04"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05"))
            assert_false(query_assertion(rec, d, ">", "2015-06"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05"))
            assert_true(query_assertion(rec, d, ">", "2015-04"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05"))
            assert_false(query_assertion(rec, d, ">", "2016-05"))
            assert_false(query_assertion(rec, d, ">", "2016"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05"))
            assert_true(query_assertion(rec, d, ">", "2014-05"))
            assert_true(query_assertion(rec, d, ">", "2014"))
    
            # Date YYYY-MM
            d = "2015-05"
            assert_false(query_assertion(rec, d, ">", d))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05"))
            assert_false(query_assertion(rec, d, ">", "2015-05"))
            assert_false(query_assertion(rec, d, ">", "2015"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-06-05"))
            assert_false(query_assertion(rec, d, ">", "2015-06"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05T20"))
            assert_true(query_assertion(rec, d, ">", "2015-04-05"))
            assert_true(query_assertion(rec, d, ">", "2015-04"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05"))
            assert_false(query_assertion(rec, d, ">", "2016-05"))
            assert_false(query_assertion(rec, d, ">", "2016"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05"))
            assert_true(query_assertion(rec, d, ">", "2014-05"))
            assert_true(query_assertion(rec, d, ">", "2014"))
    
            # Date YYYY
            d = "2015"
            assert_false(query_assertion(rec, d, ">", d))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2015-05-05"))
            assert_false(query_assertion(rec, d, ">", "2015-05"))
            assert_false(query_assertion(rec, d, ">", "2015"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30.123"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15:30"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20:15"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05T20"))
            assert_false(query_assertion(rec, d, ">", "2016-05-05"))
            assert_false(query_assertion(rec, d, ">", "2016-05"))
            assert_false(query_assertion(rec, d, ">", "2016"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30.123"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15:30"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20:15"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05T20"))
            assert_true(query_assertion(rec, d, ">", "2014-05-05"))
            assert_true(query_assertion(rec, d, ">", "2014-05"))
            assert_true(query_assertion(rec, d, ">", "2014"))
    
        finally:
            try:
                h.execute_query("FIND Simple*").delete()
            except BaseException:
                pass