[Python-checkins] python/nondist/sandbox/datetime datetime.c,1.57,1.58 datetime.py,1.92,1.93 test_both.py,1.58,1.59

tim_one@users.sourceforge.net tim_one@users.sourceforge.net
2002年12月11日 13:47:41 -0800


Update of /cvsroot/python/python/nondist/sandbox/datetime
In directory sc8-pr-cvs1:/tmp/cvs-serv8566
Modified Files:
	datetime.c datetime.py test_both.py 
Log Message:
Started added timetz tests to test_both.
Changed the Python timetz to default all arguments to 0.
Changed the C internals so that a uctoffset() call returning None can
be distinguished from a call returning 0.
Index: datetime.c
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -C2 -d -r1.57 -r1.58
*** datetime.c	11 Dec 2002 21:29:56 -0000	1.57
--- datetime.c	11 Dec 2002 21:47:38 -0000	1.58
***************
*** 697,707 ****
 /* Call tzinfo.utcoffset(tzinfoarg), and extract an integer from the
 * result. tzinfo must be an instance of the tzinfo class. If utcoffset()
! * returns None, get_utcoffset returns 0. If uctoffset() doesn't return
! * a Python int or long, TypeError is raised and this returns -1. If
! * utcoffset() returns an int outside the legitimate range for a UTC offset,
! * ValueError is raised and this returns -1.
 */
 static long
! get_utcoffset(PyObject *tzinfo, PyObject *tzinfoarg)
 {
 	PyObject *u;
--- 697,708 ----
 /* Call tzinfo.utcoffset(tzinfoarg), and extract an integer from the
 * result. tzinfo must be an instance of the tzinfo class. If utcoffset()
! * returns None, get_utcoffset returns 0 and sets *none to 1. If uctoffset()
! & doesn't return a Python int or long, TypeError is raised and this
! * returns -1. If utcoffset() returns an int outside the legitimate range
! * for a UTC offset, ValueError is raised and this returns -1. Else
! * *none is set to 0 and the offset is returned.
 */
 static long
! get_utcoffset(PyObject *tzinfo, PyObject *tzinfoarg, int *none)
 {
 	PyObject *u;
***************
*** 712,715 ****
--- 713,717 ----
 	assert(tzinfoarg != NULL);
 
+ 	*none = 0;
 	u = PyObject_CallMethod(tzinfo, "utcoffset", "O", tzinfoarg);
 	if (u == NULL)
***************
*** 718,721 ****
--- 720,724 ----
 	if (u == Py_None) {
 		result = 0;
+ 		*none = 1;
 		goto Done;
 	}
***************
*** 762,769 ****
 	long minutes;
 	char sign;
 
! 	offset = get_utcoffset(tzinfo, tzinfoarg);
 	if (offset == -1 && PyErr_Occurred())
 		return -1;
 	sign = '+';
 	if (offset < 0) {
--- 765,775 ----
 	long minutes;
 	char sign;
+ 	int none;
 
! 	offset = get_utcoffset(tzinfo, tzinfoarg, &none);
 	if (offset == -1 && PyErr_Occurred())
 		return -1;
+ 	if (none)
+ 		return 0;
 	sign = '+';
 	if (offset < 0) {
Index: datetime.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/datetime.py,v
retrieving revision 1.92
retrieving revision 1.93
diff -C2 -d -r1.92 -r1.93
*** datetime.py	10 Dec 2002 20:44:23 -0000	1.92
--- datetime.py	11 Dec 2002 21:47:38 -0000	1.93
***************
*** 892,896 ****
 """
 
! def __init__(self, hour, minute, second=0, microsecond=0, tzinfo=None):
 """Constructor.
 
--- 892,896 ----
 """
 
! def __init__(self, hour=0, minute=0, second=0, microsecond=0, tzinfo=None):
 """Constructor.
 
Index: test_both.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/datetime/test_both.py,v
retrieving revision 1.58
retrieving revision 1.59
diff -C2 -d -r1.58 -r1.59
*** test_both.py	11 Dec 2002 01:47:20 -0000	1.58
--- test_both.py	11 Dec 2002 21:47:39 -0000	1.59
***************
*** 42,45 ****
--- 42,46 ----
 time = datetime.time
 tzinfo = datetime.tzinfo
+ timetz = datetime.timetz
 MINYEAR = datetime.MINYEAR
 MAXYEAR = datetime.MAXYEAR
***************
*** 1439,1442 ****
--- 1440,1457 ----
 self.failUnless(not cls())
 
+ 
+ class TestTimeTZ(unittest.TestCase):
+ 
+ theclass = timetz
+ 
+ def test_empty(self):
+ t = self.theclass()
+ self.assertEqual(t.hour, 0)
+ self.assertEqual(t.minute, 0)
+ self.assertEqual(t.second, 0)
+ self.assertEqual(t.microsecond, 0)
+ self.assertEqual(t.tzinfo, None)
+ 
+ 
 def test_suite():
 allsuites = [unittest.makeSuite(klass, 'test')
***************
*** 1448,1451 ****
--- 1463,1467 ----
 TestDateTime,
 TestTime,
+ TestTimeTZ,
 )
 ]

AltStyle によって変換されたページ (->オリジナル) /