from __future__ import absolute_import, division, print_function, with_statement
import datetime
+import numbers
import re
import sys
import os
if self.multiple:
self._value = []
for part in value.split(","):
- if self.type in (int, long):
+ if issubclass(self.type, numbers.Integral):
# allow ranges of the form X:Y (inclusive at both ends)
lo, _, hi = part.partition(":")
lo = _parse(lo)
from __future__ import absolute_import, division, print_function, with_statement
+import datetime
import os
import sys
from tornado.options import OptionParser, Error
+from tornado.util import basestring_type
from tornado.test.util import unittest
try:
self.assertEqual(options.foo, 6)
self.assertEqual(options.foo, 5)
self.assertEqual(options.foo, 2)
+
+ def test_types(self):
+ options = OptionParser()
+ options.define('str', type=str)
+ options.define('basestring', type=basestring_type)
+ options.define('int', type=int)
+ options.define('float', type=float)
+ options.define('datetime', type=datetime.datetime)
+ options.define('timedelta', type=datetime.timedelta)
+ options.parse_command_line(['main.py',
+ '--str=asdf',
+ '--basestring=qwer',
+ '--int=42',
+ '--float=1.5',
+ '--datetime=2013-04-28 05:16',
+ '--timedelta=45s'])
+ self.assertEqual(options.str, 'asdf')
+ self.assertEqual(options.basestring, 'qwer')
+ self.assertEqual(options.int, 42)
+ self.assertEqual(options.float, 1.5)
+ self.assertEqual(options.datetime,
+ datetime.datetime(2013, 4, 28, 5, 16))
+ self.assertEqual(options.timedelta, datetime.timedelta(seconds=45))
+
+ def test_multiple_string(self):
+ options = OptionParser()
+ options.define('foo', type=str, multiple=True)
+ options.parse_command_line(['main.py', '--foo=a,b,c'])
+ self.assertEqual(options.foo, ['a', 'b', 'c'])
+
+ def test_multiple_int(self):
+ options = OptionParser()
+ options.define('foo', type=int, multiple=True)
+ options.parse_command_line(['main.py', '--foo=1,3,5:7'])
+ self.assertEqual(options.foo, [1, 3, 5, 6, 7])