예제 #1
0
 def test_python_to_lua_float(self):
     pval = 10.1
     lval = MockRedisScript._python_to_lua(pval)
     lval_expected = self.lua.eval('10.1')
     eq_("number", self.lua_globals.type(lval))
     ok_(
         MockRedisScript._lua_to_python(
             self.lua_compare_val(lval_expected, lval)))
예제 #2
0
 def test_python_to_lua_float(self):
     pval = 10.1
     lval = MockredisScript._python_to_lua(pval)
     lval_expected = self.lua.eval('10.1')
     self.assertEqual("number", self.lua_globals.type(lval))
     self.assertTrue(
         MockredisScript._lua_to_python(
             self.lua_compare_val(lval_expected, lval)))
예제 #3
0
 def test_python_to_lua_none(self):
     pval = None
     lval = MockRedisScript._python_to_lua(pval)
     is_null = """
     function is_null(var1)
         return var1 == nil
     end
     return is_null
     """
     lua_is_null = self.lua.execute(is_null)
     ok_(MockRedisScript._lua_to_python(lua_is_null(lval)))
예제 #4
0
 def test_python_to_lua_none(self):
     pval = None
     lval = MockRedisScript._python_to_lua(pval)
     is_null = """
     function is_null(var1)
         return var1 == nil
     end
     return is_null
     """
     lua_is_null = self.lua.execute(is_null)
     ok_(MockRedisScript._lua_to_python(lua_is_null(lval)))
예제 #5
0
def _lua_to_python(lval, return_status=False):
    """
    Patch MockRedis+Lua for Python 3 compatibility
    """
    # noinspection PyUnresolvedReferences
    import lua
    lua_globals = lua.globals()
    if lval is None:
        # Lua None --> Python None
        return None
    if lua_globals.type(lval) == 'table':
        # Lua table --> Python list
        pval = []
        for i in lval:
            if return_status:
                if i == 'ok':
                    return lval[i]
                if i == 'err':
                    raise ResponseError(lval[i])
            pval.append(Script._lua_to_python(lval[i]))
        return pval
    elif isinstance(lval, six.integer_types):
        # Lua number --> Python long
        return six.integer_types[-1](lval)
    elif isinstance(lval, float):
        # Lua number --> Python float
        return float(lval)
    elif lua_globals.type(lval) == 'userdata':
        # Lua userdata --> Python string
        return str(lval)
    elif lua_globals.type(lval) == 'string':
        # Lua string --> Python string
        return lval
    elif lua_globals.type(lval) == 'boolean':
        # Lua boolean --> Python bool
        return bool(lval)
    raise RuntimeError('Invalid Lua type: ' + str(lua_globals.type(lval)))
예제 #6
0
 def test_lua_to_python_bool(self):
     lval = self.lua.eval('true')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, bool))
     eq_(True, pval)
예제 #7
0
 def test_python_to_lua_float(self):
     pval = 10.1
     lval = MockredisScript._python_to_lua(pval)
     lval_expected = self.lua.eval('10.1')
     self.assertEqual("number", self.lua_globals.type(lval))
     self.assertTrue(MockredisScript._lua_to_python(self.lua_compare_val(lval_expected, lval)))
예제 #8
0
 def test_lua_to_python_list(self):
     lval = self.lua.eval('{"val1", "val2"}')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, list))
     eq_(["val1", "val2"], pval)
예제 #9
0
 def test_lua_to_python_flota(self):
     lval = self.lua.eval('22.2')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, float))
     eq_(22.2, pval)
예제 #10
0
 def test_lua_to_python_bool(self):
     lval = self.lua.eval('true')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, bool)
     self.assertEqual(True, pval)
예제 #11
0
 def test_python_to_lua_boolean(self):
     pval = True
     lval = MockredisScript._python_to_lua(pval)
     self.assertEqual("boolean", self.lua_globals.type(lval))
     self.assertTrue(MockredisScript._lua_to_python(lval))
예제 #12
0
 def test_lua_to_python_long(self):
     lval = self.lua.eval("22")
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, long))
     eq_(22, pval)
예제 #13
0
 def test_lua_to_python_flota(self):
     lval = self.lua.eval('22.2')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, float)
     self.assertEqual(22.2, pval)
예제 #14
0
 def test_lua_to_python_none(self):
     lval = self.lua.eval("")
     pval = MockRedisScript._lua_to_python(lval)
     ok_(pval is None)
예제 #15
0
 def test_lua_to_python_list(self):
     lval = self.lua.eval('{"val1", "val2"}')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, list))
     eq_(["val1", "val2"], pval)
예제 #16
0
 def test_python_to_lua_long(self):
     pval = long(10)
     lval = MockRedisScript._python_to_lua(pval)
     lval_expected = self.lua.eval('10')
     eq_("number", self.lua_globals.type(lval))
     ok_(MockRedisScript._lua_to_python(self.lua_compare_val(lval_expected, lval)))
예제 #17
0
 def test_lua_to_python_string(self):
     lval = self.lua.eval('"somestring"')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, str)
     self.assertEqual("somestring", pval)
예제 #18
0
 def test_python_to_lua_boolean(self):
     pval = True
     lval = MockredisScript._python_to_lua(pval)
     self.assertEqual("boolean", self.lua_globals.type(lval))
     self.assertTrue(MockredisScript._lua_to_python(lval))
예제 #19
0
 def test_lua_to_python_list(self):
     lval = self.lua.eval('{"val1", "val2"}')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, list)
     self.assertEqual(["val1", "val2"], pval)
예제 #20
0
 def test_lua_to_python_flota(self):
     lval = self.lua.eval("22.2")
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, float))
     eq_(22.2, pval)
예제 #21
0
 def test_lua_to_python_long(self):
     lval = self.lua.eval('22')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, long)
     self.assertEqual(22, pval)
예제 #22
0
 def test_lua_to_python_string(self):
     lval = self.lua.eval('"somestring"')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, str))
     eq_("somestring", pval)
예제 #23
0
 def test_lua_to_python_string(self):
     lval = self.lua.eval('"somestring"')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, str)
     self.assertEqual("somestring", pval)
예제 #24
0
 def test_lua_to_python_bool(self):
     lval = self.lua.eval("true")
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, bool))
     eq_(True, pval)
예제 #25
0
 def test_lua_to_python_long(self):
     lval = self.lua.eval('22')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, long)
     self.assertEqual(22, pval)
예제 #26
0
 def test_lua_to_python_flota(self):
     lval = self.lua.eval('22.2')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, float)
     self.assertEqual(22.2, pval)
예제 #27
0
 def test_lua_to_python_none(self):
     lval = self.lua.eval("")
     pval = MockRedisScript._lua_to_python(lval)
     ok_(pval is None)
예제 #28
0
 def test_python_to_lua_boolean(self):
     pval = True
     lval = MockRedisScript._python_to_lua(pval)
     eq_("boolean", self.lua_globals.type(lval))
     ok_(MockRedisScript._lua_to_python(lval))
예제 #29
0
 def test_lua_to_python_long(self):
     lval = self.lua.eval('22')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, long))
     eq_(22, pval)
예제 #30
0
 def test_lua_to_python_list(self):
     lval = self.lua.eval('{"val1", "val2"}')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, list)
     self.assertEqual(["val1", "val2"], pval)
예제 #31
0
 def test_lua_to_python_string(self):
     lval = self.lua.eval('"somestring"')
     pval = MockRedisScript._lua_to_python(lval)
     ok_(isinstance(pval, str))
     eq_("somestring", pval)
예제 #32
0
 def test_lua_to_python_none(self):
     lval = self.lua.eval("")
     pval = MockredisScript._lua_to_python(lval)
     self.assertTrue(pval is None)
예제 #33
0
 def test_python_to_lua_float(self):
     pval = 10.1
     lval = MockRedisScript._python_to_lua(pval)
     lval_expected = self.lua.eval("10.1")
     eq_("number", self.lua_globals.type(lval))
     ok_(MockRedisScript._lua_to_python(self.lua_compare_val(lval_expected, lval)))
예제 #34
0
 def test_lua_to_python_bool(self):
     lval = self.lua.eval('true')
     pval = MockredisScript._lua_to_python(lval)
     self.assertIsInstance(pval, bool)
     self.assertEqual(True, pval)
예제 #35
0
 def test_python_to_lua_boolean(self):
     pval = True
     lval = MockRedisScript._python_to_lua(pval)
     eq_("boolean", self.lua_globals.type(lval))
     ok_(MockRedisScript._lua_to_python(lval))
예제 #36
0
 def test_lua_to_python_none(self):
     lval = self.lua.eval("")
     pval = MockredisScript._lua_to_python(lval)
     self.assertTrue(pval is None)