예제 #1
0
def test_func():
    def f1():
        pass

    def f2(self):
        print(self)

    def f3(a=[]):
        pass

    f4 = lambda x, y: x + y
    b = 333
    f5 = lambda: print(a + b)
    to_remove = (' ', '\n', '\t')
    functions = (f1, f2, f3, f4)
    for func in functions:
        bytes = str(
            func.__code__.co_code)[2:-1].encode().decode('unicode_escape')
        assert obj_to_str(func) == \
               f'function("{func.__name__}"): ' \
               f'{{"source": "{inspect.getsource(func)}", ' \
               f'"globals": {{}}, "closure": {{}}, "byte_code": "{bytes}"}}'
    bytes = str(f5.__code__.co_code)[2:-1].encode().decode('unicode_escape')
    print(obj_to_str(f5))
    assert obj_to_str(f5) == \
               f'function("{f5.__name__}"): {{"source": "{inspect.getsource(f5)}", ' \
               f'"globals": {{"a": 123}}, "closure": {{"b": 333}}, "byte_code": "{bytes}"}}'
예제 #2
0
def test_simple_type():
    items = (0, -1, 545453486545, '', -float('inf'), float('inf'),
             float('nan'), -121.46, -4654e-10, False, True, 'fg', 'None',
             "1.65", -65)
    for item in items:
        assert obj_to_str(item) == json.dumps(item)
    assert obj_to_str('\\n') == json.dumps('\n')
예제 #3
0
def test_simple_type():
    items = (0, -1, 545453486545, '', -float('inf'), float('inf'), -121.46,
             -4654e-10, False, True, 'fg', 'None', "1.65", -65, 1e10)
    for item in items:
        assert str_to_obj(obj_to_str(item)) == item
    assert str_to_obj(obj_to_str('\n')) == '\n'
    assert math.isnan(str_to_obj(obj_to_str(float('nan'))))
예제 #4
0
def test_array():
    items = ([], [[[]]], list(), (), (()), [4], [[[True], -2],
                                                 '3'], [1, [2.54,
                                                            [3e-10]]], [(''),
                                                                        ""])
    for item in items:
        assert obj_to_str(item) == json.dumps(item)
예제 #5
0
def test_object():
    classes = (class1, class3)
    for cls in classes:
        cls_object = cls()
        attr = dict([(key, val) for key, val in inspect.getmembers(cls_object)
                     if not key.startswith('__')])
        assert obj_to_str(cls_object) == \
           f'object("{type(cls_object).__name__}"): {json.dumps(attr)}'
예제 #6
0
def test_func():
    def f1():
        return 1 + 3

    a = 4

    def f2():
        return a + b

    f3 = lambda: a + b

    to_remove = (' ', '\n', '\t')
    functions = (f1, f2, f3)
    for func in functions:
        assert str_to_obj(obj_to_str(func))() == func()
예제 #7
0
def test_dict():
    items = [{}, {
        'a': {
            'b': {
                'c': 1
            }
        }
    },
             dict(g=1), {
                 '': 1
             }, {
                 '': {
                     'g': {
                         'a': -1
                     },
                     'b': -14e-10
                 },
                 'c': ''
             }, {
                 1: 1
             }]
    for item in items:
        assert obj_to_str(item) == json.dumps(item)
예제 #8
0
def test_dict():
    items = [{}, {
        'a': {
            'b': {
                'c': 1
            }
        }
    },
             dict(g=1), {
                 '': 1
             }, {
                 '': {
                     'g': {
                         'a': -1
                     },
                     'b': -14e-10
                 },
                 'c': ''
             }, {
                 '1': 1
             }]
    for item in items:
        assert str_to_obj(obj_to_str(item)) == item
예제 #9
0
파일: parser.py 프로젝트: Dezorgon/ISP_lab2
 def dumps(self, obj) -> str:
     return obj_to_str(obj)
예제 #10
0
파일: parser.py 프로젝트: Dezorgon/ISP_lab2
 def dump(self, obj, fp):
     fp.write(obj_to_str(obj))
예제 #11
0
def test_kk():
    assert obj_to_str(['foo', {
        'bar': ('baz', None, 1.0, 2)
    }]) == json.dumps(['foo', {
        'bar': ('baz', None, 1.0, 2)
    }])
예제 #12
0
def test_class():
    classes = (class1, class2, class3)
    for cls in classes:
        source = inspect.getsource(cls).replace('"', r'\"').replace("'", r'\'')
        assert obj_to_str(cls) == \
               f'class("{cls.__name__}"): "{source}"'
예제 #13
0
def test_kk():
    assert str_to_obj(obj_to_str(['foo', {
        'bar': ('baz', None, 1.0, 2)
    }])) == ['foo', {
        'bar': ['baz', None, 1.0, 2]
    }]
예제 #14
0
def test_array():
    items = ([], [[[]]], list(), [4], [[[True], -2],
                                       '3'], [1, [2.54, [3e-10]]], [[''], ""])
    for item in items:
        assert str_to_obj(obj_to_str(item)) == item
예제 #15
0
def test_object():
    classes = (class1, class2, class3, abc)
    for cls in classes:
        cls_object = cls()
        assert obj_to_dict(str_to_obj(
            obj_to_str(cls))) == obj_to_dict(cls_object)
예제 #16
0
def test_class():
    classes = (class1, class2, class3)
    attr = []
    for cls in classes:
        assert obj_to_dict(str_to_obj(obj_to_str(cls))) == obj_to_dict(cls)
    str_to_obj(obj_to_str(class2)).a.f()