lists.arthurdejong.org
RSS feed

python-stdnum commit: r19 - in python-stdnum: . tests

[Date Prev][Date Next] [Thread Prev][Thread Next]

python-stdnum commit: r19 - in python-stdnum: . tests



Author: arthur
Date: Sat Aug 14 22:47:57 2010
New Revision: 19
URL: http://arthurdejong.org/viewvc/python-stdnum?view=rev&revision=19

Log:
add more doctests that are not part of the module documentation

Added:
   python-stdnum/tests/   (props changed)
   python-stdnum/tests/test_bsn.doctest
   python-stdnum/tests/test_isbn.doctest
Modified:
   python-stdnum/setup.cfg

Modified: python-stdnum/setup.cfg
==============================================================================
--- python-stdnum/setup.cfg     Tue Jul 27 22:19:54 2010        (r18)
+++ python-stdnum/setup.cfg     Sat Aug 14 22:47:57 2010        (r19)
@@ -1,5 +1,6 @@
 [nosetests]
 with-doctest=true
+doctest-extension=doctest
 with-coverage=true
 cover-erase=true
 cover-html=true

Added: python-stdnum/tests/test_bsn.doctest
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ python-stdnum/tests/test_bsn.doctest        Sat Aug 14 22:47:57 2010        
(r19)
@@ -0,0 +1,42 @@
+test_bsn.doctest - more detailed doctests for stdnum.bsn module
+
+Copyright (C) 2010 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.bsn module. It
+tries to test more corner cases and detailed functionality that is not
+really useful as module documentation.
+
+>>> from stdnum import bsn
+
+
+These are normal variations that should just work.
+
+>>> bsn.is_valid('111222333')
+True
+>>> bsn.is_valid('111252333')
+False
+
+These are tests to check what happes when a wrong type is passed.
+
+>>> bsn.is_valid(111222333) # integer, not string
+False
+>>> bsn.is_valid(None)
+False
+>>> bsn.is_valid('')
+False

Added: python-stdnum/tests/test_isbn.doctest
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ python-stdnum/tests/test_isbn.doctest       Sat Aug 14 22:47:57 2010        
(r19)
@@ -0,0 +1,99 @@
+test_isbn.doctest - more detailed doctests for stdnum.isbn module
+
+Copyright (C) 2010 Arthur de Jong
+
+This library is free software; you can redistribute it and/or
+modify it under the terms of the GNU Lesser General Public
+License as published by the Free Software Foundation; either
+version 2.1 of the License, or (at your option) any later version.
+
+This library is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public
+License along with this library; if not, write to the Free Software
+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA
+
+
+This file contains more detailed doctests for the stdnum.isbn module. It
+tries to test more corner cases and detailed functionality that is not
+really useful as module documentation.
+
+>>> from stdnum import isbn
+
+
+These are normal variations that should just work.
+
+>>> isbn.is_valid('978-9024538270')
+True
+>>> isbn.is_valid(u'1857982185')
+True
+>>> isbn.is_valid('85152-629-2') # 9-digit SBN (silently converted to ISBN10)
+True
+
+
+These are tests to check what happes when a wrong type is passed.
+
+>>> isbn.is_valid(1857982185) # integer, not string
+False
+>>> isbn.is_valid(None)
+False
+>>> isbn.is_valid('')
+False
+
+
+Tests for mangling and incorect check digits.
+
+>>> isbn.is_valid('08515x-629-2') # added X in the middle
+False
+>>> isbn.is_valid('85152-629-1') # incorrect check digit
+False
+>>> isbn.is_valid('978-902453827X') # ISBN with X check digit
+False
+
+
+See if ISBN10 to 13 conversion works.
+
+>>> isbn.to_isbn13('978-9024538270') # ISBN13 should stay ISBN13
+'978-9024538270'
+>>> isbn.to_isbn13('1 85798218 5')
+'978 1 85798218 3'
+>>> isbn.to_isbn13('1857982185')
+'9781857982183'
+>>> isbn.to_isbn13('1-85798-218-5')
+'978-1-85798-218-3'
+>>> isbn.is_valid(isbn.to_isbn13('1 85798218 5'))
+True
+
+
+Regrouping tests.
+
+>>> isbn.split('9024538270') # normal ISBN10
+('', '90', '245', '3827', '0')
+>>> isbn.split('9999678270') # ISBN10, unknown publisher in group
+('', '99996', '', '7827', '0')
+>>> isbn.split('979-20-1234567-8')
+('979', '', '', '201234567', '8')
+
+
+Some tests for the ranges module. This is more an internal module so
+tests here are not very critical.
+
+>>> from stdnum.isbn import ranges
+>>> list(ranges._wrap(2 * 'abc def ghijklmn opqr stuvwx yz', 40))[0]
+'abc def ghijklmn opqr stuvwx yzabc def'
+
+
+Test output function. Bit of a limited test but we see if the serialised
+form of the prefix/ranges list contains at least the same prefixes as the
+current _prefixes list.
+
+>>> import StringIO
+>>> output = StringIO.StringIO()
+>>> ranges.output(output)
+>>> k = set( x.split(' ')[0] for x in 
StringIO.StringIO(output.getvalue()).readlines() )
+>>> k == set(ranges._prefixes.keys())
+True
--
To unsubscribe send an email to
python-stdnum-commits-unsubscribe@lists.arthurdejong.org or see
http://lists.arthurdejong.org/python-stdnum-commits