File: objectmanager.py

package info (click to toggle)
zim 0.62-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 7,660 kB
  • ctags: 6,996
  • sloc: python: 52,094; xml: 1,135; makefile: 45; sh: 36
file content (74 lines) | stat: -rw-r--r-- 2,004 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# -*- coding: utf-8 -*-

# Copyright 2011 Jaap Karssenberg <jaap.karssenberg@gmail.com>

import tests

from zim.objectmanager import *


class TestObjectManager(tests.TestCase):

	def runTest(self):
		'''Test object manager for inline objects'''
		manager = ObjectManager

		# registering
		self.assertFalse(manager.is_registered('classa'))
		self.assertFalse(manager.is_registered('classb'))
		self.assertFalse(manager.is_registered('foo'))

		manager.register_object('classa', classafactory)
		manager.register_object('classb', ClassB)

		self.assertTrue(manager.is_registered('classa'))
		self.assertTrue(manager.is_registered('classb'))
		self.assertFalse(manager.is_registered('foo'))

		# get objects
		self.assertEqual(list(manager.get_active_objects('classa')), [])
		self.assertEqual(list(manager.get_active_objects('classb')), [])

		obj = manager.get_object('classa', {}, '')
		self.assertTrue(isinstance(obj, ClassA))

		self.assertEqual(list(manager.get_active_objects('classa')), [obj])
		self.assertEqual(list(manager.get_active_objects('classb')), [])

		self.assertTrue(isinstance(manager.get_object('classb', {}, ''), ClassB))
		self.assertTrue(isinstance(manager.get_object('foo', {}, ''), FallbackObject))

		# unregister
		self.assertTrue(manager.is_registered('classa'))
		self.assertTrue(manager.unregister_object('classa'))
		self.assertFalse(manager.is_registered('classa'))
		self.assertFalse(manager.unregister_object('classa'))

		# find plugin
		from zim.plugins.sourceview import SourceViewPlugin
		self.assertEqual(
			manager.find_plugin('code'),
			('sourceview', 'Source View', True, SourceViewPlugin)
		)


def classafactory(attrib, text, ui):
	return ClassA(attrib, text, ui)


class ClassA(CustomObjectClass):
	pass


class ClassB(CustomObjectClass):
	pass


class TestFallbackObject(tests.TestCase):

	def runTest(self):
		attrib = {'lang': 'text/html'}
		text = '''<b>test 123</b>\n'''
		obj = FallbackObject(attrib, text)

		self.assertEqual(obj.get_data(), text)