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)
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
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
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')
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
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
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
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)
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
def test_clob_from_ascii_string(): data = string.ascii_letters clob = lobs.Clob(data) assert clob.getvalue() == data assert clob.encode() == data
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)
def test_clob_uses_string_io(): data = string.ascii_letters clob = lobs.Clob(data) assert isinstance(clob.data, lobs.CLOB_STRING_IO_CLASSES)
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')
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