#! /usr/bin/env python
#
# decorators.py
#
# This file is part of NEST.
#
# Copyright (C) 2004 The NEST Initiative
#
# NEST is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# NEST is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with NEST.  If not, see <http://www.gnu.org/licenses/>.

import unittest
import sys

class _skipIf(object):
    """
    @unittest.skipIf() decorator that works for Python 2.6-
    """

    def __init__(self, condition, reason, obj_type = 'unittest'):

        self.condition = condition
        self.reason = reason
        self.obj_type = obj_type

    def __call__(self, obj):

        if sys.version_info >= (2, 7, 0):

            return unittest.skipIf(self.condition, self.reason)(obj)

        else:

            if not self.condition:
                return obj
            else:
                if self.obj_type == 'testcase':
                    class dummy(unittest.TestCase): pass
                else:
                    def dummy(_): pass

                return dummy