Varia's website
https://varia.zone
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.1 KiB
101 lines
3.1 KiB
2 weeks ago
|
# -*- coding: utf-8 -*-
|
||
|
import unittest
|
||
|
|
||
|
import icalendar
|
||
|
|
||
|
|
||
|
class TestCaselessdict(unittest.TestCase):
|
||
|
|
||
|
def test_caselessdict_canonsort_keys(self):
|
||
|
canonsort_keys = icalendar.caselessdict.canonsort_keys
|
||
|
|
||
|
keys = ['DTEND', 'DTSTAMP', 'DTSTART', 'UID', 'SUMMARY', 'LOCATION']
|
||
|
|
||
|
out = canonsort_keys(keys)
|
||
|
self.assertEqual(
|
||
|
out,
|
||
|
['DTEND', 'DTSTAMP', 'DTSTART', 'LOCATION', 'SUMMARY', 'UID']
|
||
|
)
|
||
|
|
||
|
out = canonsort_keys(keys, ('SUMMARY', 'DTSTART', 'DTEND', ))
|
||
|
self.assertEqual(
|
||
|
out,
|
||
|
['SUMMARY', 'DTSTART', 'DTEND', 'DTSTAMP', 'LOCATION', 'UID']
|
||
|
)
|
||
|
|
||
|
out = canonsort_keys(keys, ('UID', 'DTSTART', 'DTEND', ))
|
||
|
self.assertEqual(
|
||
|
out,
|
||
|
['UID', 'DTSTART', 'DTEND', 'DTSTAMP', 'LOCATION', 'SUMMARY']
|
||
|
)
|
||
|
|
||
|
out = canonsort_keys(
|
||
|
keys,
|
||
|
('UID', 'DTSTART', 'DTEND', 'RRULE', 'EXDATE')
|
||
|
)
|
||
|
self.assertEqual(
|
||
|
out,
|
||
|
['UID', 'DTSTART', 'DTEND', 'DTSTAMP', 'LOCATION', 'SUMMARY']
|
||
|
)
|
||
|
|
||
|
def test_caselessdict_canonsort_items(self):
|
||
|
canonsort_items = icalendar.caselessdict.canonsort_items
|
||
|
|
||
|
d = {
|
||
|
'i': 7, 'c': 'at', 'a': 3.5, 'l': (2, 3), 'e': [4, 5], 'n': 13, 'd': {'x': 'y'}, 'r': 1.0,
|
||
|
}
|
||
|
|
||
|
out = canonsort_items(d)
|
||
|
self.assertEqual(
|
||
|
out,
|
||
|
[('a', 3.5), ('c', 'at'), ('d', {'x': 'y'}), ('e', [4, 5]),
|
||
|
('i', 7), ('l', (2, 3)), ('n', 13), ('r', 1.0)]
|
||
|
)
|
||
|
|
||
|
out = canonsort_items(d, ('i', 'c', 'a'))
|
||
|
self.assertTrue(
|
||
|
out,
|
||
|
[('i', 7), ('c', 'at'), ('a', 3.5), ('d', {'x': 'y'}),
|
||
|
('e', [4, 5]), ('l', (2, 3)), ('n', 13), ('r', 1.0)]
|
||
|
)
|
||
|
|
||
|
def test_caselessdict_copy(self):
|
||
|
CaselessDict = icalendar.caselessdict.CaselessDict
|
||
|
|
||
|
original_dict = CaselessDict(key1='val1', key2='val2')
|
||
|
copied_dict = original_dict.copy()
|
||
|
|
||
|
self.assertEqual(original_dict, copied_dict)
|
||
|
|
||
|
def test_CaselessDict(self):
|
||
|
CaselessDict = icalendar.caselessdict.CaselessDict
|
||
|
|
||
|
ncd = CaselessDict(key1='val1', key2='val2')
|
||
|
self.assertEqual(
|
||
|
ncd,
|
||
|
CaselessDict({'KEY2': 'val2', 'KEY1': 'val1'})
|
||
|
)
|
||
|
|
||
|
self.assertEqual(ncd['key1'], 'val1')
|
||
|
self.assertEqual(ncd['KEY1'], 'val1')
|
||
|
|
||
|
ncd['KEY3'] = 'val3'
|
||
|
self.assertEqual(ncd['key3'], 'val3')
|
||
|
|
||
|
self.assertEqual(ncd.setdefault('key3', 'FOUND'), 'val3')
|
||
|
self.assertEqual(ncd.setdefault('key4', 'NOT FOUND'), 'NOT FOUND')
|
||
|
self.assertEqual(ncd['key4'], 'NOT FOUND')
|
||
|
self.assertEqual(ncd.get('key1'), 'val1')
|
||
|
self.assertEqual(ncd.get('key3', 'NOT FOUND'), 'val3')
|
||
|
self.assertEqual(ncd.get('key4', 'NOT FOUND'), 'NOT FOUND')
|
||
|
self.assertTrue('key4' in ncd)
|
||
|
|
||
|
del ncd['key4']
|
||
|
self.assertFalse('key4' in ncd)
|
||
|
|
||
|
ncd.update({'key5': 'val5', 'KEY6': 'val6', 'KEY5': 'val7'})
|
||
|
self.assertEqual(ncd['key6'], 'val6')
|
||
|
|
||
|
keys = sorted(ncd.keys())
|
||
|
self.assertEqual(keys, ['KEY1', 'KEY2', 'KEY3', 'KEY5', 'KEY6'])
|