Beispiel #1
0
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
Beispiel #2
0
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
Beispiel #3
0
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
Beispiel #4
0
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)
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
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
Beispiel #9
0
def test_nclob___repr___method():
    data = u'朱の子ましけ'
    nclob = lobs.NClob(data)
    assert repr(nclob) == '<NClob length: %d>' % len(data)
Beispiel #10
0
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)
Beispiel #11
0
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
Beispiel #12
0
def test_nclob_from_unicode():
    data = u'朱の子ましけ'
    nclob = lobs.NClob(data)
    assert nclob.getvalue() == data
    assert nclob.encode() == data.encode('utf8')
Beispiel #13
0
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
Beispiel #14
0
def test_nclob_from_ascii_string():
    data = string.ascii_letters
    nclob = lobs.NClob(data)
    assert nclob.getvalue() == data
    assert nclob.encode() == data
Beispiel #15
0
def test_nclob_uses_string_io():
    data = string.ascii_letters
    nclob = lobs.NClob(data)
    assert isinstance(nclob.data, io.StringIO)