Skip to content

Commit 07b3b93

Browse files
Add additional test cases.
1 parent 46e3aff commit 07b3b93

File tree

5 files changed

+117
-0
lines changed

5 files changed

+117
-0
lines changed

test/AQ.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,9 @@ def testMsgProps(self):
145145
self.__verifyAttribute(props, "expiration", 30)
146146
self.assertEqual(props.attempts, 0)
147147
self.__verifyAttribute(props, "priority", 1)
148+
self.__verifyAttribute(props, "msgid", b'mID')
148149
self.assertEqual(props.state, cx_Oracle.MSG_READY)
150+
self.assertEqual(props.deliverymode, 0)
149151

150152
def testVisibilityModeCommit(self):
151153
"test enqueue visibility option - ENQ_ON_COMMIT"

test/Connection.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,83 @@ def testStringFormat(self):
238238
(self.username, self.tnsentry)
239239
self.assertEqual(str(connection), expectedValue)
240240

241+
def testCtxMgrCommitOnSuccess(self):
242+
"test context manager - commit on success"
243+
connection = cx_Oracle.connect(self.username, self.password,
244+
self.tnsentry)
245+
cursor = connection.cursor()
246+
cursor.execute("truncate table TestTempTable")
247+
with connection:
248+
cursor.execute("""
249+
insert into TestTempTable (IntCol, StringCol)
250+
values (1, null)""")
251+
connection.rollback()
252+
cursor.execute("select count(*) from TestTempTable")
253+
count, = cursor.fetchone()
254+
self.assertEqual(count, 1)
255+
256+
def testCtxMgrRollbackOnFailure(self):
257+
"test context manager - rollback on failure"
258+
connection = cx_Oracle.connect(self.username, self.password,
259+
self.tnsentry)
260+
cursor = connection.cursor()
261+
cursor.execute("truncate table TestTempTable")
262+
cursor.execute("""
263+
insert into TestTempTable (IntCol, StringCol)
264+
values (1, null)""")
265+
try:
266+
with connection:
267+
1 / 0
268+
except:
269+
pass
270+
cursor.execute("select count(*) from TestTempTable")
271+
count, = cursor.fetchone()
272+
self.assertEqual(count, 0)
273+
274+
def testConnectionAttributes(self):
275+
"test connection attribute values"
276+
connection = cx_Oracle.connect(self.username, self.password,
277+
self.tnsentry, encoding = "ASCII")
278+
self.assertEqual(connection.maxBytesPerCharacter, 1)
279+
connection = cx_Oracle.connect(self.username, self.password,
280+
self.tnsentry, encoding = "UTF-8")
281+
self.assertEqual(connection.maxBytesPerCharacter, 4)
282+
self.assertEqual(connection.ltxid, b'')
283+
self.assertEqual(connection.current_schema, None)
284+
connection.current_schema = "test_schema"
285+
self.assertEqual(connection.current_schema, "test_schema")
286+
self.assertEqual(connection.edition, None)
287+
connection.external_name = "test_external"
288+
self.assertEqual(connection.external_name, "test_external")
289+
connection.internal_name = "test_internal"
290+
self.assertEqual(connection.internal_name, "test_internal")
291+
connection.stmtcachesize = 30
292+
self.assertEqual(connection.stmtcachesize, 30)
293+
self.assertRaises(TypeError, connection.stmtcachesize, 20.5)
294+
self.assertRaises(TypeError, connection.stmtcachesize, "value")
295+
296+
def testPing(self):
297+
"test connection ping"
298+
connection = cx_Oracle.connect(self.username, self.password,
299+
self.tnsentry)
300+
connection.ping()
301+
302+
def testTransactionBegin(self):
303+
"test begin, prepare, cancel transaction"
304+
connection = cx_Oracle.connect(self.username, self.password,
305+
self.tnsentry)
306+
cursor = connection.cursor()
307+
cursor.execute("truncate table TestTempTable")
308+
connection.begin(10, 'trxnId', 'branchId')
309+
self.assertEqual(connection.prepare(), False)
310+
connection.begin(10, 'trxnId', 'branchId')
311+
cursor.execute("""
312+
insert into TestTempTable (IntCol, StringCol)
313+
values (1, 'tesName')""")
314+
self.assertEqual(connection.prepare(), True)
315+
connection.cancel()
316+
connection.rollback()
317+
cursor.execute("select count(*) from TestTempTable")
318+
count, = cursor.fetchone()
319+
self.assertEqual(count, 0)
320+

test/Module.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#------------------------------------------------------------------------------
2+
# Copyright 2018, Oracle and/or its affiliates. All rights reserved.
3+
#------------------------------------------------------------------------------
4+
5+
"""Module for testing module methods."""
6+
7+
import datetime
8+
import time
9+
10+
class TestModule(BaseTestCase):
11+
12+
def testDateFromTicks(self):
13+
"test DateFromTicks()"
14+
today = datetime.datetime.today()
15+
timestamp = time.mktime(today.timetuple())
16+
date = cx_Oracle.DateFromTicks(timestamp)
17+
self.assertEqual(date, today.date())
18+
19+
def testTimestampFromTicks(self):
20+
"test TimestampFromTicks()"
21+
timestamp = time.mktime(datetime.datetime.today().timetuple())
22+
today = datetime.datetime.fromtimestamp(timestamp)
23+
date = cx_Oracle.TimestampFromTicks(timestamp)
24+
self.assertEqual(date, today)
25+
26+
def testUnsupportedFunctions(self):
27+
"test unsupported time functions"
28+
self.assertRaises(cx_Oracle.NotSupportedError, cx_Oracle.Time,
29+
12, 0, 0)
30+
self.assertRaises(cx_Oracle.NotSupportedError, cx_Oracle.TimeFromTicks,
31+
100)
32+

test/ObjectVar.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -298,4 +298,6 @@ def testStringFormat(self):
298298
objType = self.connection.gettype("UDT_OBJECT")
299299
self.assertEqual(str(objType),
300300
"<cx_Oracle.ObjectType CX_ORACLE.UDT_OBJECT>")
301+
self.assertEqual(str(objType.attributes[0]),
302+
"<cx_Oracle.ObjectAttribute NUMBERVALUE>")
301303

test/test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
moduleNames = [os.path.splitext(v)[0] for v in sys.argv[1:]]
3737
else:
3838
moduleNames = [
39+
"Module",
3940
"Connection",
4041
"Cursor",
4142
"CursorVar",

0 commit comments

Comments
 (0)