def test(store):
    import os

    from One import One
    from Two import Two

    # Note: Two inherits One

    # Simple creation and insertion
    one = One()
    one.setA('a')
    one.setB('b')
    store.addObject(one)

    two = Two()
    two.setA('1')
    two.setB('2')
    two.setC('3')
    two.setD('4')
    two.setE('a')
    store.addObject(two)

    store.saveChanges()
    store.clear()

    # Fetching
    objs = store.fetchObjectsOfClass(One)
    assert len(objs) == 2
    obj = objs[0]
    assert obj.a() == 'a'
    assert obj.b() == 'b'

    objs = store.fetchObjectsOfClass(One, isDeep=0)
    assert len(objs) == 1

    objs = store.fetchObjectsOfClass(One, clauses="where a='1'")
    assert len(objs) == 1
    assert objs[0].c() == '3'

    objs = store.fetchObjectsOfClass(One, clauses="where a='2'")
    assert len(objs) == 0

    objs = store.fetchObjectsOfClass(Two)
    assert len(objs) == 1
    obj = objs[0]
    assert obj.a() == '1'
    assert obj.b() == '2'
    assert obj.c() == '3'
    assert obj.d() == '4'

    # Using fetchObject to fetch individual objects of both base class and subclass
    objs = store.fetchObjectsOfClass(One)
    assert len(objs) == 2
    for obj in objs:
        fetchedObj = store.fetchObject(obj.__class__, obj.serialNum())
        assert fetchedObj.__class__ == obj.__class__
        assert fetchedObj.a() == obj.a()

    # Using fetchObjectsOfClass when there are several objects of the base class and subclass
    for i in range(19):  # To make a total of 20 One's
        one = One()
        one.setA('a' + str(i))
        one.setB('b' + str(i))
        store.addObject(one)
    for i in range(14):  # To make a total of 15 Two's
        two = Two()
        two.setA('a' + str(i))
        two.setB('b' + str(i))
        two.setC('c' + str(i))
        two.setD('d' + str(i))
        store.addObject(two)
    store.saveChanges()
    objs = store.fetchObjectsOfClass(One)
    assert len(objs) == 35
    objs = store.fetchObjectsOfClass(One, isDeep=0)
    assert len(objs) == 20
    objs = store.fetchObjectsOfClass(Two)
    assert len(objs) == 15
    objs = store.fetchObjectsOfClass(Two, isDeep=0)
    assert len(objs) == 15
