def test_nclob___str___method_for_ascii_chars(): """Test that the magic __str__ method returns a proper string when only ascii chars are contained in the string""" data = string.ascii_letters nclob = lobs.NClob(data) str_nclob = str(nclob) assert type(str_nclob) == str assert str_nclob == data
def test_nclob___unicode___method_for_nonascii_chars(): """Test that the magic __unicode__ method returns a proper unicode string""" data = u'朱の子ましけ' nclob = lobs.NClob(data) uni_nclob = unicode(nclob) assert type(uni_nclob) == unicode assert uni_nclob == data
def test_insert_single_object_nclob_row(connection, test_table): """Insert a single row providing nclob data as LOB object (argument order: nclob, name)""" cursor = connection.cursor() nclob_data = NCLOB_DATA nclob_obj = lobs.NClob(nclob_data) cursor.execute("insert into %s (fnclob, name) values (:1, :2)" % TABLE, [nclob_obj, 'nclob1']) nclob = cursor.execute("select fnclob from %s where name='nclob1' " % TABLE).fetchone()[0] assert nclob.read() == nclob_data
def test_nclob__str___method_for_nonascii_chars_raises(): """Test that the magic __str__ method raise Unicode error for non-ascii chars""" if not PY2: pytest.skip('test only makes sense in PY2') data = u'朱の子ましけ' nclob = lobs.NClob(data) with pytest.raises(UnicodeEncodeError): str(nclob)
def test_nclob___unicode___method_for_nonascii_chars(): """Test that the magic __unicode__ method returns a proper text_type""" if not PY2: pytest.skip('test only makes sense in PY2') data = u'朱の子ましけ' nclob = lobs.NClob(data) uni_nclob = unicode(nclob) assert type(uni_nclob) == text_type assert uni_nclob == data
def test_nclob__str___method_for_nonascii_chars(): """Test that the magic __str__ method raise Unicode error for non-ascii chars""" if not PY3: pytest.skip('test only makes sense in PY3') data = u'朱の子ましけ' nclob = lobs.NClob(data) uni_nclob = str(nclob) assert type(uni_nclob) == str assert uni_nclob == data
def test_insert_single_object_text_row(connection, test_table): """Insert a single row providing text data as TEXT object (argument order: text, name)""" cursor = connection.cursor() text_data = NCLOB_DATA text_obj = lobs.NClob(text_data) cursor.execute("insert into %s (ftext, name) values (:1, :2)" % TABLE, [text_obj, 'text1']) text = cursor.execute("select ftext from %s where name='text1' " % TABLE).fetchone()[0] assert text.read() == text_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_nclob___repr___method(): data = u'朱の子ましけ' nclob = lobs.NClob(data) assert repr(nclob) == '<NClob length: %d>' % len(data)
def test_nclob__str___method_for_nonascii_chars_raises(): """Test that the magic __str__ method raise Unicode error for non-ascii chars""" data = u'朱の子ましけ' nclob = lobs.NClob(data) with pytest.raises(UnicodeEncodeError): str(nclob)
def test_nclob_from_string_io(): data = u'朱の子ましけ' text_io = io.StringIO(data) nclob = lobs.NClob(text_io) assert nclob.getvalue() == data assert nclob.data is text_io
def test_nclob_from_unicode(): data = u'朱の子ましけ' nclob = lobs.NClob(data) assert nclob.getvalue() == data assert nclob.encode() == data.encode('utf8')
def test_nclob_from_utf8_string(): data = u'朱の子ましけ' utf8_data = data.encode('utf8') nclob = lobs.NClob(utf8_data) assert nclob.getvalue() == data assert nclob.encode() == utf8_data
def test_nclob_from_ascii_string(): data = string.ascii_letters nclob = lobs.NClob(data) assert nclob.getvalue() == data assert nclob.encode() == data
def test_nclob_uses_string_io(): data = string.ascii_letters nclob = lobs.NClob(data) assert isinstance(nclob.data, io.StringIO)