Skip to content

Commit 789b69d

Browse files
committed
Prototype and prototype dispatcher test suites
1 parent 8414931 commit 789b69d

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

tests/test_prototype.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/usr/bin/env python
2+
# -*- coding: utf-8 -*-
3+
import unittest
4+
from creational.prototype import Prototype, PrototypeDispatcher
5+
6+
7+
class TestPrototypeFeatures(unittest.TestCase):
8+
9+
def setUp(self):
10+
self.prototype = Prototype()
11+
12+
def test_cloning_propperty_innate_values(self):
13+
sample_object_1 = self.prototype.clone()
14+
sample_object_2 = self.prototype.clone()
15+
self.assertEqual(sample_object_1.value, sample_object_2.value)
16+
17+
def test_extended_property_values_cloning(self):
18+
sample_object_1 = self.prototype.clone()
19+
sample_object_1.some_value = 'test string'
20+
sample_object_2 = self.prototype.clone()
21+
self.assertRaises(AttributeError, lambda: sample_object_2.some_value)
22+
23+
def test_cloning_propperty_assigned_values(self):
24+
sample_object_1 = self.prototype.clone()
25+
sample_object_2 = self.prototype.clone(value='re-assigned')
26+
self.assertNotEqual(sample_object_1.value, sample_object_2.value)
27+
28+
29+
class TestDispatcherFeatures(unittest.TestCase):
30+
31+
def setUp(self):
32+
self.dispatcher = PrototypeDispatcher()
33+
self.prototype = Prototype()
34+
c = self.prototype.clone()
35+
a = self.prototype.clone(value='a-value', ext_value='E')
36+
b = self.prototype.clone(value='b-value', diff=True)
37+
self.dispatcher.register_object('A', a)
38+
self.dispatcher.register_object('B', b)
39+
self.dispatcher.register_object('C', c)
40+
41+
def test_batch_retrieving(self):
42+
self.assertEqual(len(self.dispatcher.get_objects()), 3)
43+
44+
def test_particular_properties_retrieving(self):
45+
self.assertEqual(self.dispatcher.get_objects()['A'].value, 'a-value')
46+
self.assertEqual(self.dispatcher.get_objects()['B'].value, 'b-value')
47+
self.assertEqual(self.dispatcher.get_objects()['C'].value, 'default')
48+
49+
def test_extended_properties_retrieving(self):
50+
self.assertEqual(self.dispatcher.get_objects()['A'].ext_value, 'E')
51+
self.assertTrue(self.dispatcher.get_objects()['B'].diff)
52+

0 commit comments

Comments
 (0)