Ejemplo n.º 1
0
 def _executeTests(test, a, b, res, **kwargs):
     """ performes tests on operators """
     almost = kwargs.get('almost', False)
     real = kwargs.get('real', True)
     res.reverse()
     test('_a+_b', a + b, res.pop(), **kwargs)
     test('_a-_b', a - b, res.pop(), **kwargs)
     test('_a*_b', a * b, res.pop(), **kwargs)
     test('_a/_b', a / b, res.pop(), **kwargs)
     test('_a**_b', a**b, res.pop(), **kwargs)
     test('_a|_b', a | b, res.pop(), **kwargs)
     test('_a&_b', a & b, res.pop(), **kwargs)
     test('_a==_b', a == b, res.pop())
     test('_a!=_b', a != b, res.pop())
     test('_a<<_b', a << b, res.pop(), **kwargs)
     test('_a>>_b', a >> b, res.pop(), **kwargs)
     test('-_a', -a, res.pop(), **kwargs)
     test('abs(-_a)', abs(-a), res.pop(), **kwargs)
     test('abs1(-_a)', m.ABS1(-a), res.pop(), **kwargs)
     test('abssq(-_a)', m.ABSSQ(-a), res.pop(), **kwargs)
     rcount = 11
     acount = 4 + rcount
     if almost:  # some operations only make sence on floating point
         test('exp(_a)', m.EXP(a), res.pop(), **kwargs)
         test('log(_a)', m.LOG(a), res.pop(), **kwargs)
         test('sin(_a)', m.SIN(a), res.pop(), **kwargs)
         test('cos(_a)', m.COS(a), res.pop(), **kwargs)
         if real:  # some operations are only defined for real numbers
             test('tan(_a)', m.TAN(a), res.pop(), **kwargs)
             test('asin(_a/10)', m.ASIN(a / 10), res.pop(), **kwargs)
             test('acos(_a/10)', m.ACOS(a / 10), res.pop(), **kwargs)
             test('atan(_a)', m.ATAN(a), res.pop(), **kwargs)
             test('atan2(_a,1)', m.ATAN2(a, 1), res.pop(), **kwargs)
             test('log2(_a)', m.LOG2(a), res.pop(), **kwargs)
             test('log10(_a)', m.LOG10(a), res.pop(), **kwargs)
             test('sind(_a)', m.SIND(a), res.pop(), **kwargs)
             test('cosd(_a)', m.COSD(a), res.pop(), **kwargs)
             test('tand(_a)', m.TAND(a), res.pop(), **kwargs)
             test('anint(_a/3)', m.ANINT(a / 3), res.pop(), **kwargs)
         else:  # strip results of real operations
             res = res[:-rcount]
     else:  # strip results of floating operations
         res = res[:-acount]
     if real:  # some binary operations are only defined for real numbers
         test('_a mod _b', a % b, res.pop(), **kwargs)
         test('_a>_b', a > b, res.pop())
         test('_a>=_b', a >= b, res.pop())
         test('_a<_b', a < b, res.pop())
         test('_a<=_b', a <= b, res.pop())