# Path: nimoy/specification.py
# class Specification(TestCase, metaclass=DataDrivenSpecification):
# 
#     def __init__(self, methodName='runTest'):
#         super().__init__(methodName)
#         self.thrown_exceptions = []
# 
#     def _feature_block_context(self, block_name):
#         return FeatureBlock(block_name, self.thrown_exceptions)
# 
#     def _compare(self, left, right, comparison_type_name):
#         Compare().compare(left, right, comparison_type_name)
# 
#     def _power_assert(self, expression: Dict):
#         PowerAssertions().assert_and_raise(expression)
# 
#     def _assert_mock(self, number_of_invocations, mock, method, *args):
#         MockAssertions().assert_mock(number_of_invocations, mock, method, *args)
# 
#     def _exception_thrown(self, expected_exception_type):
#         return ExceptionAssertions().assert_exception(self.thrown_exceptions, expected_exception_type)


from unittest import mock
from nimoy.specification import Specification
    def internal_comparison_is_called(self, compare_mock):
        with given:
            class SomeSpec(Specification):
                pass

        with when:
            SomeSpec()._compare('a', 'b', 'some_name')

        with then:
            1 * compare_mock.return_value.compare('a', 'b', 'some_name')

    @mock.patch('nimoy.specification.PowerAssertions')
    def internal_power_assertion_is_called(self, power_assert_mock):
        with given:
            InternalSpecificationMethodsSpec._mark_mock_as_unsafe(power_assert_mock)

            class SomeSpec(Specification):
                pass

        with when:
            SomeSpec()._power_assert({'a': 'b'})

        with then:
            1 * power_assert_mock.return_value.assert_and_raise({'a': 'b'})

    @mock.patch('nimoy.specification.MockAssertions')
    def internal_mock_assertion_is_performed(self, mock_assertions_mock):
        with given:
            InternalSpecificationMethodsSpec._mark_mock_as_unsafe(mock_assertions_mock)


# Path: nimoy/specification.py
# class Specification(TestCase, metaclass=DataDrivenSpecification):
# 
#     def __init__(self, methodName='runTest'):
#         super().__init__(methodName)
#         self.thrown_exceptions = []
# 
#     def _feature_block_context(self, block_name):
#         return FeatureBlock(block_name, self.thrown_exceptions)
# 
#     def _compare(self, left, right, comparison_type_name):
#         Compare().compare(left, right, comparison_type_name)
# 
#     def _power_assert(self, expression: Dict):
#         PowerAssertions().assert_and_raise(expression)
# 
#     def _assert_mock(self, number_of_invocations, mock, method, *args):
#         MockAssertions().assert_mock(number_of_invocations, mock, method, *args)
# 
#     def _exception_thrown(self, expected_exception_type):
#         return ExceptionAssertions().assert_exception(self.thrown_exceptions, expected_exception_type)


# Path: specs/nimoy/specification_spec.py
from unittest import mock
from nimoy.specification import Specification

    def internal_comparison_is_called(self, compare_mock):
        with given:
            class SomeSpec(Specification):
                pass

        with when:
            SomeSpec()._compare('a', 'b', 'some_name')

        with then:
            1 * compare_mock.return_value.compare('a', 'b', 'some_name')

    @mock.patch('nimoy.specification.PowerAssertions')
    def internal_power_assertion_is_called(self, power_assert_mock):
        with given:
            InternalSpecificationMethodsSpec._mark_mock_as_unsafe(power_assert_mock)

            class SomeSpec(Specification):
                pass

        with when:
            SomeSpec()._power_assert({'a': 'b'})

        with then:
            1 * power_assert_mock.return_value.assert_and_raise({'a': 'b'})

    @mock.patch('nimoy.specification.MockAssertions')
    def internal_mock_assertion_is_performed(self, mock_assertions_mock):
        with given:
            InternalSpecificationMethodsSpec._mark_mock_as_unsafe(mock_assertions_mock)


            class SomeSpec(Specification):