fix
[librarian.git] / tests / test_dcparser.py
old mode 100755 (executable)
new mode 100644 (file)
index d3acef1..4dab764
@@ -1,24 +1,9 @@
 # -*- coding: utf-8 -*-
 #
-#    This file is part of Librarian.
-#
-#    Copyright © 2008,2009,2010 Fundacja Nowoczesna Polska <fundacja@nowoczesnapolska.org.pl>
-#    
-#    For full list of contributors see AUTHORS file. 
-#
-#    This program is free software: you can redistribute it and/or modify
-#    it under the terms of the GNU Affero General Public License as published by
-#    the Free Software Foundation, either version 3 of the License, or
-#    (at your option) any later version.
-#
-#    This program 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 Affero General Public License for more details.
-#
-#    You should have received a copy of the GNU Affero General Public License
-#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+# This file is part of Librarian, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
 #
+from __future__ import unicode_literals
 
 from librarian import dcparser
 from lxml import etree
@@ -26,12 +11,13 @@ from nose.tools import *
 from os.path import splitext
 from tests.utils import get_all_fixtures
 import codecs
+from datetime import date
 
 
 def check_dcparser(xml_file, result_file):
-    xml = file(xml_file).read()
+    xml = open(xml_file, 'rb').read()
     result = codecs.open(result_file, encoding='utf-8').read()
-    info = dcparser.BookInfo.from_string(xml).to_dict()
+    info = dcparser.BookInfo.from_bytes(xml).to_dict()
     should_be = eval(result)
     for key in should_be:
         assert_equals(info[key], should_be[key])
@@ -44,13 +30,13 @@ def test_dcparser():
 
 
 def check_serialize(xml_file):
-    xml = file(xml_file).read()
-    info = dcparser.BookInfo.from_string(xml)
+    xml = open(xml_file, 'rb').read()
+    info = dcparser.BookInfo.from_bytes(xml)
 
     # serialize
-    serialized = etree.tostring(info.to_etree(), encoding=unicode).encode('utf-8')
+    serialized = etree.tostring(info.to_etree(), encoding='unicode').encode('utf-8')
     # then parse again
-    info_bis = dcparser.BookInfo.from_string(serialized)
+    info_bis = dcparser.BookInfo.from_bytes(serialized)
 
     # check if they are the same
     for key in vars(info):
@@ -63,3 +49,13 @@ def test_serialize():
     for fixture in get_all_fixtures('dcparser', '*.xml'):
         yield check_serialize, fixture
 
+
+def test_asdate():
+    assert_equals(dcparser.as_date(u"2010-10-03"), date(2010, 10, 3))
+    assert_equals(dcparser.as_date(u"2011"), date(2011, 1, 1))
+    assert_equals(dcparser.as_date(u"2 poł. XIX w."), date(1950, 1, 1))
+    assert_equals(dcparser.as_date(u"XVII w., l. 20"), date(1720, 1, 1))
+    assert_equals(dcparser.as_date(u"po 1460"), date(1460, 1, 1))
+    assert_equals(dcparser.as_date(u"ok. 1813-1814"), date(1813, 1, 1))
+    assert_equals(dcparser.as_date(u"ok.1876-ok.1886"), date(1876, 1, 1))
+    assert_equals(dcparser.as_date(u"1893/1894"), date(1893, 1, 1))