123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import unittest
- import sys
- from datetime import datetime as dt, date, time
- from odml import Value, Property, Section, Document
- from odml.tools.xmlparser import XMLReader, XMLWriter
- class TestInferType(unittest.TestCase):
- def test_string(self):
- v = Value("somestring")
- assert(v.dtype == "string")
- assert(type(v.data) == str)
- def test_text(self):
- v = Value("some\nstring")
- assert(v.dtype == "text")
- assert(type(v.data) == str)
- def test_int(self):
- v = Value(111)
- assert(v.dtype == "int")
- assert(type(v.data) == int)
- def test_float(self):
- v = Value(3.14)
- assert(v.dtype == "float")
- assert(type(v.data) == float)
- def test_datetime(self):
- v = Value(dt.now())
- assert(v.dtype == "datetime")
- assert(type(v.data) == dt)
- def test_date(self):
- v = Value(dt.now().date())
- assert(v.dtype == "date")
- assert(type(v.data) == date)
- def test_time(self):
- v = Value(dt.now().time())
- assert(v.dtype == "time")
- assert(type(v.data) == time)
- def test_boolean(self):
- v = Value(True)
- assert(v.dtype == "boolean")
- assert(type(v.data) == bool)
- v = Value(False)
- assert(v.dtype == "boolean")
- assert(type(v.data) == bool)
- def test_read_write(self):
- doc = Document("author")
- sec = Section("name", "type")
- doc.append(sec)
- sec.append(Property("strprop", "somestring"))
- sec.append(Property("txtprop", "some\ntext"))
- sec.append(Property("intprop", 200))
- sec.append(Property("floatprop", 2.00))
- sec.append(Property("datetimeprop", dt.now()))
- sec.append(Property("dateprop", dt.now().date()))
- sec.append(Property("timeprop", dt.now().time()))
- sec.append(Property("boolprop", True))
- if sys.version_info < (3,0):
- str_doc = unicode(XMLWriter(doc))
- else:
- str_doc = str(XMLWriter(doc))
- new_doc = XMLReader().fromString(str_doc)
- new_sec = new_doc.sections[0]
- v = new_sec.properties["strprop"].value
- assert(v.dtype == "string")
- if sys.version_info < (3, 0):
- assert(type(v.data) == unicode)
- else:
- assert (type(v.data) == str)
- v = new_sec.properties["txtprop"].value
- assert(v.dtype == "text")
- if sys.version_info < (3,0):
- assert(type(v.data) == unicode)
- else:
- assert (type(v.data) == str)
- v = new_sec.properties["intprop"].value
- assert(v.dtype == "int")
- assert(type(v.data) == int)
- v = new_sec.properties["floatprop"].value
- assert(v.dtype == "float")
- assert(type(v.data) == float)
- v = new_sec.properties["datetimeprop"].value
- assert(v.dtype == "datetime")
- assert(type(v.data) == dt)
- v = new_sec.properties["dateprop"].value
- assert(v.dtype == "date")
- assert(type(v.data) == date)
- v = new_sec.properties["timeprop"].value
- assert(v.dtype == "time")
- assert(type(v.data) == time)
- v = new_sec.properties["boolprop"].value
- assert(v.dtype == "boolean")
- assert(type(v.data) == bool)
- if __name__ == '__main__':
- unittest.main()
|