diff --git a/escpos/escpos.py b/escpos/escpos.py index b9dcdf8..de83151 100644 --- a/escpos/escpos.py +++ b/escpos/escpos.py @@ -23,13 +23,13 @@ from .exceptions import * from abc import ABCMeta, abstractmethod # abstract base class support from escpos.image import EscposImage +@six.add_metaclass(ABCMeta) class Escpos(object): """ ESC/POS Printer object This class is the abstract base class for an esc/pos-printer. The printer implementations are children of this class. """ - __metaclass__ = ABCMeta device = None def __init__(self, columns=32): diff --git a/test/test_abstract_base_class.py b/test/test_abstract_base_class.py new file mode 100644 index 0000000..f5ec61f --- /dev/null +++ b/test/test_abstract_base_class.py @@ -0,0 +1,30 @@ +#!/usr/bin/python +"""verifies that the metaclass abc is properly used by Escpos + +:author: `Patrick Kanzler `_ +:organization: `python-escpos `_ +:copyright: Copyright (c) 2016 Patrick Kanzler +:license: GNU GPL v3 +""" + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from __future__ import unicode_literals + +from nose.tools import raises + +import escpos.escpos as escpos +from abc import ABCMeta + + +@raises(TypeError) +def test_abstract_base_class_raises(): + """test whether the abstract base class raises an exception for Escpos""" + escpos.Escpos() # This call should raise TypeError because of abstractmethod _raw() + + +def test_abstract_base_class(): + """ test whether Escpos has the metaclass ABCMeta """ + assert issubclass(escpos.Escpos, object) + assert type(escpos.Escpos) is ABCMeta