コード例 #1
0
def pyfun(fun, module=None, *args):
    MDSplus.DEALLOCATE('public _py_exception')
    fun = MDSplus.Data(fun).data()
    module = MDSplus.Data(module).data()

    def getfun(fun):
        fun = str(fun)
        if module is not None:
            return __import__(str(module), globals(), locals(),
                              [fun]).__dict__[fun]
        builtins = __builtins__ if isinstance(__builtins__,
                                              dict) else __builtins__.__dict__
        if fun in builtins:
            return builtins[fun]
        try:
            return MDSplus.__dict__[fun]
        except:
            raise MDSplus.TdiUNKNOWN_VAR(fun)

    fun = getfun(fun)
    args = tuple(map(MDSplus.Data.evaluate, args))
    try:
        return fun(*args)
    except Exception as exc:
        import traceback
        traceback.print_exc()
        MDSplus.String(str(exc)).setTdiVar("_py_exception")
コード例 #2
0
 def data(self):
     self.assertEqual(m.Data(0x80000000).__class__, m.Int64)
     self.assertEqual(m.Data(0x7fffffff).__class__, m.Int32)
     if m.version.ispy2:
         self.assertEqual(m.Data(long(1)).__class__, m.Int64)
     a = m.ADD(m.Int32(1), m.Int32(2))
     self.assertEqual(m.MULTIPLY(a, a).decompile(), "(1 + 2) * (1 + 2)")
     self.assertEqual(m.Data(2).compare(2), True)
     self.assertEqual(m.Data(2).compare(1), False)
     self.assertEqual(
         m.Dictionary([1, 'a', 2, 'b']).data().tolist(), {
             1: 'a',
             2: 'b'
         })
     self.assertEqual(
         m.List([1, 'a', 2, 'b']).data().tolist(), [1, 'a', 2, 'b'])
     a = m.Apd()
     e = m.Data(1)
     e.tree = 'dummy_e'
     f = m.Data(2)
     f.tree = 'dummy_f'
     self.assertEqual(a.tree, None)
     a.append(e)  # a should use tree of e
     self.assertEqual(a.tree, e.tree)
     self.assertEqual(a[0].tree, e.tree)
     a.append(f)  # a should keep tree of e
     self.assertEqual(a.tree, e.tree)
     self.assertEqual(a[1].tree, f.tree)
     self._doUnaryArray(m.Int32(range(10)), m.Int32Array(range(10)),
                        'Int32(range(10))')
コード例 #3
0
ファイル: dataUnitTest.py プロジェクト: zack-vii/mdsplus
        def doTest(suffix, cl, scl, ucl, **kw):
            """ test array and signal """
            def results(cl, scl, ucl):
                from numpy import array
                return [
                    cl([13, 8, 7]),
                    cl([7, 0, -3]),
                    cl([30, 16, 10]),
                    cl([10. / 3, 1, .4]),
                    cl([1000, 256, 32]),  # +,-,*,/,**
                    ucl([11, 4, 7]),
                    ucl([2, 4, 0]),  # |,&
                    array([False, True, False]),  # ==
                    array([True, False, True]),  # !=
                    cl([80, 64, 64]),
                    cl([1, 0, 0]),
                    scl([-10, -4, -2]),
                    scl([10, 4, 2]),
                    scl([10, 4, 2]),
                    scl([100, 16, 4]),  # <<,>>,-,abs
                    cl([22026.4658, 54.5981500, 7.38905610]),  # exp
                    cl([2.30258509, 1.38629436, 0.69314718]),  # log
                    cl([-0.54402111, -0.7568025, 0.90929743]),  # sin
                    cl([-0.83907153, -0.65364362, -0.41614684]),  # cos
                    cl([0.64836083, 1.15782128, -2.18503986]),  # tan
                    cl([1.57079633, 0.41151685, 0.20135792]),  # asin
                    cl([0., 1.15927948, 1.36943841]),  # acos
                    cl([1.47112767, 1.32581766, 1.10714872]),  # atan
                    cl([1.47112767, 1.32581766, 1.10714872]),  # atan2
                    cl([3.32192809, 2., 1.]),  # log2
                    cl([1., 0.60205999, 0.30103]),  # log10
                    cl([0.17364818, 0.06975647, 0.0348995]),  # sind
                    cl([0.98480775, 0.99756405, 0.99939083]),  # cosd
                    cl([0.17632698, 0.06992681, 0.03492077]),  # tand
                    cl([3, 1, 1]),  # anint
                    cl([1, 0, 2]),  # %
                    array([True, False, False]),  # >
                    array([True, True, False]),  # >=
                    array([False, False, True]),  # <
                    array([False, True, True]),  # <=
                ]

            """ test array """
            m.Data.execute('_a=[10%s,4%s,2%s],_b=[3%s,4%s,5%s]' %
                           tuple([suffix] * 6))
            a, b = cl([10, 4, 2]), cl([3, 4, 5])
            self._doThreeTestArray('_a', m.Array(a), m.Data(a))
            self._executeTests(self._doThreeTestArray, a, b,
                               results(cl, scl, ucl), **kw)
            """ test signal """
            Scl = lambda v: m.Signal(cl(v))
            Sscl = lambda v: m.Signal(scl(v))
            Sucl = lambda v: m.Signal(ucl(v))
            m.Data.execute('_a=Make_Signal(_a,*)')
            a = m.Signal(a)
            self._executeTests(self._doThreeTestArray, a, b,
                               results(Scl, Sscl, Sucl), **kw)
コード例 #4
0
 def testData(self):
     self.assertEqual(m.Data(2).compare(2),True)
     self.assertEqual(m.Data(2).compare(1),False)