# Path: grappa/exceptions.py
# class GrappaAssertionError(AssertionError):
#     """
#     GrappaAssertionError represents an internal grappa assertion error
#     and it is used internally to encapsulate and share state on
#     assertion errors.
# 
#     Attributes:
#         error (Exception): stores original error exception.
#         reasons (list|tuple[str]): stores error reason details.
#         operator (Operator): original operator instance that failed.
#     """
# 
#     def __init__(self, error=None, reasons=None, operator=None):
#         self.error = error
#         self.reasons = reasons or getattr(error, 'reasons', None)
#         self.operator = operator


from grappa.exceptions import GrappaAssertionError


def test_exceptions(should):
    GrappaAssertionError | should.be.a('class')

    # Test assertion instance
    GrappaAssertionError() | should.be.instance.of(AssertionError)

    # Test assertion properties

# Path: grappa/exceptions.py
# class GrappaAssertionError(AssertionError):
#     """
#     GrappaAssertionError represents an internal grappa assertion error
#     and it is used internally to encapsulate and share state on
#     assertion errors.
# 
#     Attributes:
#         error (Exception): stores original error exception.
#         reasons (list|tuple[str]): stores error reason details.
#         operator (Operator): original operator instance that failed.
#     """
# 
#     def __init__(self, error=None, reasons=None, operator=None):
#         self.error = error
#         self.reasons = reasons or getattr(error, 'reasons', None)
#         self.operator = operator


# Path: tests/exceptions_test.py
from grappa.exceptions import GrappaAssertionError



def test_exceptions(should):
    GrappaAssertionError | should.be.a('class')

    # Test assertion instance
    GrappaAssertionError() | should.be.instance.of(AssertionError)

    # Test assertion properties

    err = GrappaAssertionError(error='foo', reasons=['bar'], operator=True)