示例#1
0
    def test_invert(self):
        with self.assertRaises(TypeError):
            env = {'x': {NDArray[float, pentyping.Tuple[int, int]]}}
            penty.type_eval('~x', env)

        self.assertIsType('~x',
                          NDArray[int, pentyping.Tuple[int, int]],
                          env={'x': NDArray[int, pentyping.Tuple[int, int]]})
示例#2
0
文件: test_stmt.py 项目: lsix/penty
 def assertIsType(self, stmt, expr, ty, env={}):
     if not isinstance(ty, set):
         ty = {ty}
     type_env = penty.type_exec(dedent(stmt), {})
     type_env.update({k: v if isinstance(v, set) else {v}
                      for k, v in env.items()})
     self.assertEqual(penty.type_eval(expr, type_env), ty)
示例#3
0
    def test_matmul(self):
        with self.assertRaises(TypeError):
            env = {'x': {NDArray[int, pentyping.Tuple[int, int]]}}
            penty.type_eval('x @ 1', env)

        self.assertIsType('x @ x[1]',
                          NDArray[int, pentyping.Tuple[int, int]],
                          env={'x': NDArray[int, pentyping.Tuple[int, int]]})
        self.assertIsType(
            'x @ x[1]',
            NDArray[int, pentyping.Tuple[int, pentyping.Cst[1]]],
            env={'x': NDArray[int, pentyping.Tuple[int, pentyping.Cst[1]]]})
        self.assertIsType('x @ x[1]',
                          NDArray[int, pentyping.Tuple[pentyping.Cst[5],
                                                       pentyping.Cst[1]]],
                          env={
                              'x':
                              NDArray[int, pentyping.Tuple[pentyping.Cst[5],
                                                           pentyping.Cst[1]]]
                          })
示例#4
0
 def test_and(self):
     self.assertIsType('x & 1',
                       NDArray[int, pentyping.Tuple[int, int]],
                       env={'x': NDArray[int, pentyping.Tuple[int, int]]})
     self.assertIsType('x & x[1]',
                       NDArray[int, pentyping.Tuple[int, int]],
                       env={'x': NDArray[int, pentyping.Tuple[int, int]]})
     self.assertIsType(
         'x & x[1]',
         NDArray[int, pentyping.Tuple[int, pentyping.Cst[1]]],
         env={'x': NDArray[int, pentyping.Tuple[int, pentyping.Cst[1]]]})
     self.assertIsType('x & x[1]',
                       NDArray[int, pentyping.Tuple[pentyping.Cst[5],
                                                    pentyping.Cst[1]]],
                       env={
                           'x':
                           NDArray[int, pentyping.Tuple[pentyping.Cst[5],
                                                        pentyping.Cst[1]]]
                       })
     with self.assertRaises(TypeError):
         env = {'x': {NDArray[float, pentyping.Tuple[int, int]]}}
         penty.type_eval('x & 1', env)
示例#5
0
 def assertIsType(self, expr, ty, env={}):
     if not isinstance(ty, set):
         ty = {ty}
     env = {k: v if isinstance(v, set) else {v}
            for k, v in env.items()}
     self.assertTypesEqual(penty.type_eval(expr, env), ty)
示例#6
0
文件: test_numpy.py 项目: lsix/penty
 def assertIsType(self, expr, ty, env={}):
     if not isinstance(ty, set):
         ty = {ty}
     env = {k: v if isinstance(v, set) else {v} for k, v in env.items()}
     env = penty.type_exec("import numpy as np", env)
     self.assertEqual(penty.type_eval(expr, env), ty)