more_tests.txt 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. Unicode in vCards
  2. .................
  3. >>> import vobject
  4. >>> card = vobject.vCard()
  5. >>> card.add('fn').value = u'Hello\u1234 World!'
  6. >>> card.add('n').value = vobject.vcard.Name('World', u'Hello\u1234')
  7. >>> card.add('adr').value = vobject.vcard.Address(u'5\u1234 Nowhere, Apt 1', 'Berkeley', 'CA', '94704', 'USA')
  8. >>> card
  9. <VCARD| [<ADR{}5? Nowhere, Apt 1\nBerkeley, CA 94704\nUSA>, <FN{}Hello? World!>, <N{} Hello? World >]>
  10. >>> card.serialize()
  11. u'BEGIN:VCARD\r\nVERSION:3.0\r\nADR:;;5\u1234 Nowhere\\, Apt 1;Berkeley;CA;94704;USA\r\nFN:Hello\u1234 World!\r\nN:World;Hello\u1234;;;\r\nEND:VCARD\r\n'
  12. >>> print(card.serialize())
  13. BEGIN:VCARD
  14. VERSION:3.0
  15. ADR:;;5ሴ Nowhere\, Apt 1;Berkeley;CA;94704;USA
  16. FN:Helloሴ World!
  17. N:World;Helloሴ;;;
  18. END:VCARD
  19. Helper function
  20. ...............
  21. >>> from pkg_resources import resource_stream
  22. >>> def get_stream(path):
  23. ... try:
  24. ... return resource_stream(__name__, 'test_files/' + path)
  25. ... except: # different paths, depending on whether doctest is run directly
  26. ... return resource_stream(__name__, path)
  27. Unicode in TZID
  28. ...............
  29. >>> f = get_stream("tzid_8bit.ics")
  30. >>> cal = vobject.readOne(f)
  31. >>> print(cal.vevent.dtstart.value)
  32. 2008-05-30 15:00:00+06:00
  33. >>> print(cal.vevent.dtstart.serialize())
  34. DTSTART;TZID=Екатеринбург:20080530T150000
  35. Commas in TZID
  36. ..............
  37. >>> f = get_stream("ms_tzid.ics")
  38. >>> cal = vobject.readOne(f)
  39. >>> print(cal.vevent.dtstart.value)
  40. 2008-05-30 15:00:00+10:00
  41. Equality in vCards
  42. ..................
  43. >>> card.adr.value == vobject.vcard.Address('Just a street')
  44. False
  45. >>> card.adr.value == vobject.vcard.Address(u'5\u1234 Nowhere, Apt 1', 'Berkeley', 'CA', '94704', 'USA')
  46. True
  47. Organization (org)
  48. ..................
  49. >>> card.add('org').value = ["Company, Inc.", "main unit", "sub-unit"]
  50. >>> print(card.org.serialize())
  51. ORG:Company\, Inc.;main unit;sub-unit
  52. Ruby escapes semi-colons in rrules
  53. ..................................
  54. >>> f = get_stream("ruby_rrule.ics")
  55. >>> cal = vobject.readOne(f)
  56. >>> iter(cal.vevent.rruleset).next()
  57. datetime.datetime(2003, 1, 1, 7, 0)
  58. quoted-printable
  59. ................
  60. >>> vcf = 'BEGIN:VCARD\nVERSION:2.1\nN;ENCODING=QUOTED-PRINTABLE:;=E9\nFN;ENCODING=QUOTED-PRINTABLE:=E9\nTEL;HOME:0111111111\nEND:VCARD\n\n'
  61. >>> vcf = vobject.readOne(vcf)
  62. >>> vcf.n.value
  63. <Name: ? >
  64. >>> vcf.n.value.given
  65. u'\xe9'
  66. >>> vcf.serialize()
  67. 'BEGIN:VCARD\r\nVERSION:2.1\r\nFN:\xc3\xa9\r\nN:;\xc3\xa9;;;\r\nTEL:0111111111\r\nEND:VCARD\r\n'
  68. >>> vcs = 'BEGIN:VCALENDAR\r\nPRODID:-//OpenSync//NONSGML OpenSync vformat 0.3//EN\r\nVERSION:1.0\r\nBEGIN:VEVENT\r\nDESCRIPTION;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:foo =C3=A5=0Abar =C3=A4=\r\n=0Abaz =C3=B6\r\nUID:20080406T152030Z-7822\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n'
  69. >>> vcs = vobject.readOne(vcs, allowQP = True)
  70. >>> vcs.serialize()
  71. 'BEGIN:VCALENDAR\r\nVERSION:1.0\r\nPRODID:-//OpenSync//NONSGML OpenSync vformat 0.3//EN\r\nBEGIN:VEVENT\r\nUID:20080406T152030Z-7822\r\nDESCRIPTION:foo \xc3\xa5\\nbar \xc3\xa4\\nbaz \xc3\xb6\r\nEND:VEVENT\r\nEND:VCALENDAR\r\n'