mirror of
https://github.com/JoelBender/bacpypes
synced 2025-09-28 22:15:23 +08:00
115 lines
2.4 KiB
Python
115 lines
2.4 KiB
Python
#!/usr/bin/env python
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
Test Capability Module
|
|
----------------------
|
|
"""
|
|
|
|
import unittest
|
|
|
|
from bacpypes.debugging import bacpypes_debugging, ModuleLogger
|
|
from bacpypes.capability import Capability, Collector
|
|
|
|
# some debugging
|
|
_debug = 0
|
|
_log = ModuleLogger(globals())
|
|
|
|
|
|
@bacpypes_debugging
|
|
class BaseCollector(Collector):
|
|
|
|
def __init__(self):
|
|
if _debug: BaseCollector._debug("__init__")
|
|
Collector.__init__(self)
|
|
|
|
def transform(self, value):
|
|
if _debug: BaseCollector._debug("transform %r", value)
|
|
|
|
for fn in self.capability_functions('transform'):
|
|
print(" - fn: {}".format(fn))
|
|
value = fn(self, value)
|
|
|
|
return value
|
|
|
|
@bacpypes_debugging
|
|
class PlusOne(Capability):
|
|
|
|
def __init__(self):
|
|
if _debug: PlusOne._debug("__init__")
|
|
|
|
def transform(self, value):
|
|
if _debug: PlusOne._debug("transform %r", value)
|
|
return value + 1
|
|
|
|
|
|
@bacpypes_debugging
|
|
class TimesTen(Capability):
|
|
|
|
def __init__(self):
|
|
if _debug: TimesTen._debug("__init__")
|
|
|
|
def transform(self, value):
|
|
if _debug: TimesTen._debug("transform %r", value)
|
|
return value * 10
|
|
|
|
|
|
@bacpypes_debugging
|
|
class MakeList(Capability):
|
|
|
|
def __init__(self):
|
|
if _debug: MakeList._debug("__init__")
|
|
|
|
def transform(self, value):
|
|
if _debug: MakeList._debug("transform %r", value)
|
|
return [value]
|
|
|
|
|
|
#
|
|
# Example classes
|
|
#
|
|
|
|
class Example1(BaseCollector):
|
|
pass
|
|
|
|
class Example2(BaseCollector, PlusOne):
|
|
pass
|
|
|
|
class Example3(BaseCollector, TimesTen, PlusOne):
|
|
pass
|
|
|
|
class Example4(BaseCollector, MakeList, TimesTen):
|
|
pass
|
|
|
|
|
|
@bacpypes_debugging
|
|
class TestExamples(unittest.TestCase):
|
|
|
|
def test_example_1(self):
|
|
if _debug: TestExamples._debug("test_example_1")
|
|
|
|
assert Example1().transform(1) == 1
|
|
|
|
def test_example_2(self):
|
|
if _debug: TestExamples._debug("test_example_2")
|
|
|
|
assert Example2().transform(2) == 3
|
|
|
|
def test_example_3(self):
|
|
if _debug: TestExamples._debug("test_example_3")
|
|
|
|
assert Example3().transform(3) == 31
|
|
|
|
def test_example_4(self):
|
|
if _debug: TestExamples._debug("test_example_4")
|
|
|
|
assert Example4().transform(4) == [4, 4, 4, 4, 4, 4, 4, 4, 4, 4]
|
|
|
|
def test_example_5(self):
|
|
if _debug: TestExamples._debug("test_example_5")
|
|
|
|
obj = Example2()
|
|
obj.add_capability(MakeList)
|
|
|
|
assert obj.transform(5) == [6]
|