Esempio n. 1
0
def test_clob_from_nonascii_string_raises():
    if PY2:
        pytest.skip('test only makes sense for io.StringIO in PY3')
    data = u'朱の子ましけ'
    utf8_data = data.encode('utf8')
    with pytest.raises(UnicodeDecodeError):
        lobs.Clob(utf8_data)
Esempio n. 2
0
def test_insert_single_object_clob_row(connection, test_table):
    """Insert a single row providing clob data in string format (argument order: name, clob)"""
    cursor = connection.cursor()
    clob_data = CLOB_DATA
    clob_obj = lobs.Clob(clob_data)
    cursor.execute("insert into %s (name, fclob) values (:1, :2)" % TABLE, ['clob1', clob_obj])
    clob = cursor.execute("select fclob from %s where name='clob1' " % TABLE).fetchone()[0]
    assert clob.read() == clob_data
Esempio n. 3
0
def test_clob_from_ascii_unicode():
    """Feeding unicode string works as long as only contains ascii chars"""
    if not PY2:
        pytest.skip('test only makes sense in PY2')
    data = string.ascii_letters.decode('ascii')
    clob = lobs.Clob(data)
    assert clob.getvalue() == data
    assert clob.encode() == data
Esempio n. 4
0
def test_clob___unicode___method():
    """Test that the magic __unicode__ method returns a proper unicode string"""
    if not PY2:
        pytest.skip('test only makes sense in PY2')

    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert type(unicode(clob)) == unicode
    assert unicode(clob) == data.decode('ascii')
Esempio n. 5
0
def test_clob_from_string_io():
    if PY2:
        data = string.ascii_letters.decode('ascii')
    else:
        data = string.ascii_letters
    text_io = lobs.CLOB_STRING_IO(data)
    clob = lobs.Clob(text_io)
    assert clob.getvalue() == data
    assert clob.data is text_io
Esempio n. 6
0
def test_insert_single_blob_and_clob_row(connection, test_table):
    """Insert a single row providing blob (as string) and clob (as LOB obj) (argument order: blob, name, clob)"""
    cursor = connection.cursor()
    blob_data = 'ab \0x1 \0x17 yz'
    clob_data = string.ascii_letters
    clob_obj = lobs.Clob(clob_data)
    cursor.execute("insert into %s (fblob, name, fclob) values (:1, :2, :3)" % TABLE, [blob_data, 'blob1', clob_obj])
    blob, clob = cursor.execute("select fblob, fclob from %s where name='blob1' " % TABLE).fetchone()
    assert blob.read() == blob_data
    assert clob.read() == clob_data
Esempio n. 7
0
def test_insert_multiple_clob_and_nclob_rows(connection, test_table):
    """Insert multiple rows of clob and nclob. Providing wild mix of string, unicode, and lob objects"""
    nclob_data1 = u'เขืองลาจะปเที่ยวเมได้ไาว'  # unicode format
    clob_data1 = string.ascii_letters[:10]
    nclob_data2 = 'ずはしにさはる事侍'  # string format
    clob_data2 = string.ascii_letters[10:20]
    nclob_data3 = 'λάμβδαี่'  # string format
    nclob_obj = lobs.NClob(nclob_data3)
    clob_data3 = string.ascii_letters[20:30]
    clob_obj = lobs.Clob(clob_data3)
    cursor = connection.cursor()

    cursor.executemany(
        "insert into %s (fnclob, name, fclob) values (:1, :2, :3)" % TABLE,
        [[nclob_data1, 'blob1', clob_data1],
         [nclob_data2, 'blob2', clob_data2], [nclob_obj, 'blob3', clob_obj]])

    connection.commit()
    cursor = connection.cursor()
    rows = cursor.execute("select name, fnclob, fclob from %s order by name" %
                          TABLE).fetchall()
    assert len(rows) == 3

    n_name, n_nclob, n_clob = rows[0]
    assert n_name == 'blob1'
    assert n_nclob.read() == nclob_data1
    assert n_clob.read() == clob_data1

    n_name, n_nclob, n_clob = rows[1]
    assert n_name == 'blob2'
    if PY2:
        assert n_nclob.read() == nclob_data2.decode('utf8')
    else:
        assert n_nclob.read() == nclob_data2
    assert n_clob.read() == clob_data2

    n_name, n_nclob, n_clob = rows[2]
    assert n_name == 'blob3'
    if PY2:
        assert n_nclob.read() == nclob_data3.decode('utf8')
    else:
        assert n_nclob.read() == nclob_data3
    assert n_clob.read() == clob_data3
Esempio n. 8
0
def test_clob_from_nonascii_unicode_raises():
    """Feeding unicode string with non-ascii chars should raise an exception"""
    data = u'朱の子ましけ'
    with pytest.raises(UnicodeEncodeError):
        lobs.Clob(data)
Esempio n. 9
0
def test_clob_from_ascii_unicode():
    """Feeding unicode string works as long as only contains ascii chars"""
    data = string.ascii_letters.decode('ascii')
    clob = lobs.Clob(data)
    assert clob.getvalue() == data
    assert clob.encode() == data
Esempio n. 10
0
def test_clob_from_ascii_string():
    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert clob.getvalue() == data
    assert clob.encode() == data
Esempio n. 11
0
def test_clob_returns_string_instance():
    """For PY2 the result value must be a str-instance, not a unicode"""
    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert isinstance(clob.read(), str)
Esempio n. 12
0
def test_clob_uses_string_io():
    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert isinstance(clob.data, lobs.CLOB_STRING_IO_CLASSES)
Esempio n. 13
0
def test_clob___unicode___method():
    """Test that the magic __unicode__ method returns a proper unicode string"""
    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert type(unicode(clob)) == unicode
    assert unicode(clob) == data.decode('ascii')
Esempio n. 14
0
def test_clob___str___method():
    """Test that the magic __str__ method returns a proper string"""
    data = string.ascii_letters
    clob = lobs.Clob(data)
    assert str(clob) == data