2
# -*- coding: utf-8 -*-
4
from openchange import mapi
9
class TestMapi(unittest.TestCase):
11
self.SPropValue = mapi.SPropValue()
14
def test_noargs(self): # we need two args
15
self.assertRaises(TypeError, self.SPropValue.add)
17
def test_onearg(self): # we need two args
18
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagGender)
21
self.SPropValue.add(mapi.PidTagGender, 3)
23
def test_i2_duplicate(self):
24
self.SPropValue.add(mapi.PidTagGender, 3)
25
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagGender, 2)
27
def test_i2_wrong_type(self):
28
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagGender, "wrong type for I2")
31
self.SPropValue.add(mapi.PidTagImportance, 4096)
33
def test_long_duplicate(self):
34
self.SPropValue.add(mapi.PidTagImportance, 4096)
35
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagImportance, 4097)
37
def test_long_wrong_type(self):
38
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagImportance, "wrong type for long")
40
def test_double(self):
41
self.SPropValue.add(0x8F010005, 3.1415) # PT_DOUBLE
43
def test_double_duplicate(self):
44
self.SPropValue.add(0x8F010005, 3.1415) # PT_DOUBLE
45
self.assertRaises(TypeError, self.SPropValue.add, 0x8F010005, 42.7)
47
def test_double_wrong_type(self):
48
self.assertRaises(TypeError, self.SPropValue.add, 0x8F010005, "wrong type for double")
50
def test_errortype(self):
51
self.SPropValue.add(mapi.PidTagGivenName_Error, 0x80040502)
53
def test_errortype_duplicate(self):
54
self.SPropValue.add(mapi.PidTagGivenName_Error, 0x80040502)
55
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagGivenName_Error, 0x80040305)
57
def test_errortype_wrong_type(self):
58
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagGivenName_Error, "wrong type for error")
60
def test_boolean(self):
61
self.SPropValue.add(mapi.PidTagProcessed, True)
63
def test_boolean_duplicate(self):
64
self.SPropValue.add(mapi.PidTagProcessed, True)
65
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagProcessed, True)
67
def test_boolean_wrong_type(self):
68
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagProcessed, "wrong type for boolean")
71
self.SPropValue.add(mapi.PidTagInstID, 0x12345678L)
73
def test_i8_duplicate(self):
74
self.SPropValue.add(mapi.PidTagInstID, 0x12345678L)
75
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagInstID, 0x12345677L)
77
def test_i8_wrong_type(self):
78
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagInstID, "wrong type for I8")
80
def test_string8(self):
81
self.SPropValue.add(mapi.PidTagAddressBookHierarchicalRootDepartment, "Development")
83
def test_string8_duplicate(self):
84
self.SPropValue.add(mapi.PidTagAddressBookHierarchicalRootDepartment, "Development")
85
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagAddressBookHierarchicalRootDepartment, "Research")
87
def test_string8_wrong_type(self):
88
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagAddressBookHierarchicalRootDepartment, 423) # wrong type
90
def test_unicode(self):
91
self.SPropValue.add(mapi.PidTagComment, "value of the comment")
93
def test_unicode_duplicate(self):
94
self.SPropValue.add(mapi.PidTagComment, "value of the comment")
95
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagComment, "duplicate")
97
def test_unicode_wrong_type(self):
98
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagComment, 3) # wrong type
100
def test_filetime(self):
101
self.SPropValue.add(mapi.PidTagStartDate, time.time())
103
def test_filetime_duplicate(self):
104
self.SPropValue.add(mapi.PidTagStartDate, time.time())
105
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagStartDate, time.time())
107
def test_filetime_wrong_type(self):
108
self.assertRaises(TypeError, self.SPropValue.add, mapi.PidTagStartDate, "wrong type for time")
110
def test_dump_no_entries(self):
111
self.SPropValue.dump("test_dump_no_entries:")
113
def test_dump_one_entry(self):
114
self.SPropValue.add(mapi.PidTagComment, "value of the comment")
115
self.SPropValue.dump("test_dump_one_entry:")
117
def test_bad_type(self):
118
self.assertRaises(TypeError, self.SPropValue.add, 0x12340000, 1) # 0000 isn't a valid property type
120
def test_dump_multiple_entries(self):
121
self.SPropValue.add(mapi.PidTagGender, 3)
122
self.SPropValue.add(mapi.PidTagImportance, 4096)
123
self.SPropValue.add(0x8F010005, 3.1415) # PT_DOUBLE
124
self.SPropValue.add(mapi.PidTagGivenName_Error, 0x80040502)
125
self.SPropValue.add(mapi.PidTagProcessed, True)
126
self.SPropValue.add(mapi.PidTagInstID, 0x12345678L)
127
self.SPropValue.add(mapi.PidTagAddressBookHierarchicalRootDepartment, "Development")
128
self.SPropValue.add(mapi.PidTagComment, "value of the comment")
129
self.SPropValue.add(mapi.PidTagStartDate, time.time())
130
self.SPropValue.dump("test_dump_multiple_entries:")
132
# we need at least one argument, should raise an error if no args
133
def test_dump_no_args(self):
134
self.assertRaises(TypeError, self.SPropValue.dump)
139
if __name__ == '__main__':