[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/godhelpjun/bpython/master/bpython/test/test_line_properties.py [Back]  [Original]

# encoding: utf-8

import re

from bpython.test import unittest
from bpython.line import current_word, current_dict_key, current_dict, \
    current_string, current_object, current_object_attribute, \
    current_from_import_from, current_from_import_import, current_import, \
    current_method_definition_name, current_single_word, \
    current_expression_attribute, current_dotted_attribute


def cursor(s):
    """'ab|c' -> (2, 'abc')"""
    cursor_offset = s.index('|')
    line = s[:cursor_offset] + s[cursor_offset + 1:]
    return cursor_offset, line


def decode(s):
    """'ad' -> ((3, 'abcd'), (1, 3, 'bdc'))"""

    if not s.count('|') == 1:
        raise ValueError('match helper needs | to occur once')
    if s.count('') or s.count('|")


class TestCurrentDict(LineTestCase):
    def setUp(self):
        self.func = current_dict

    def test_simple(self):
        self.assertAccess('asdf|')
        self.assertAccess('asdf|')
        self.assertAccess('[|')
        self.assertAccess('[|]')
        self.assertAccess('[abc|')
        self.assertAccess('asdf|')


class TestCurrentString(LineTestCase):
    def setUp(self):
        self.func = current_string

    def test_closed(self):
        self.assertAccess('""')
        self.assertAccess('""')
        self.assertAccess('""')
        self.assertAccess("''")
        self.assertAccess("''")
        self.assertAccess("''''''")
        self.assertAccess('""""""')
        self.assertAccess('asdf.afd("a") + ""')

    def test_open(self):
        self.assertAccess('"')
        self.assertAccess('"')
        self.assertAccess('"')
        self.assertAccess("'")
        self.assertAccess("'")
        self.assertAccess("'''")
        self.assertAccess('"""')
        self.assertAccess('asdf.afd("a") + "')


class TestCurrentObject(LineTestCase):
    def setUp(self):
        self.func = current_object

    def test_simple(self):
        self.assertAccess('.attr1|')
        self.assertAccess('.|')
        self.assertAccess('Object|')
        self.assertAccess('Object|.')
        self.assertAccess('.|')
        self.assertAccess('.attr2|')
        self.assertAccess('.att|r1.attr2')
        self.assertAccess('stuff[stuff] + {123: 456} + .attr2|')
        self.assertAccess('stuff[asd|fg]')
        self.assertAccess('stuff[asdf[asd|fg]')


class TestCurrentAttribute(LineTestCase):
    def setUp(self):
        self.func = current_object_attribute

    def test_simple(self):
        self.assertAccess('Object.')
        self.assertAccess('Object.attr1.')
        self.assertAccess('Object..attr2')
        self.assertAccess('stuff[stuff] + {123: 456} + Object.attr1.')
        self.assertAccess('stuff[asd|fg]')
        self.assertAccess('stuff[asdf[asd|fg]')
        self.assertAccess('Object.attr1.')
        self.assertAccess('Object..attr2')


class TestCurrentFromImportFrom(LineTestCase):
    def setUp(self):
        self.func = current_from_import_from

    def test_simple(self):
        self.assertAccess('from  import path')
        self.assertAccess('from  import path|')
        self.assertAccess('if True|: from sys import path')
        self.assertAccess('if True: |from sys import path')
        self.assertAccess('if True: from  import p|ath')
        self.assertAccess('if True: from sys imp|ort path')
        self.assertAccess('if True: from sys import |path')
        self.assertAccess('if True: from sys import path.stu|ff')
        self.assertAccess('if True: from  import sep|')
        self.assertAccess('from ')


class TestCurrentFromImportImport(LineTestCase):
    def setUp(self):
        self.func = current_from_import_import

    def test_simple(self):
        self.assertAccess('from sys import ')
        self.assertAccess('from sys import ')
        self.assertAccess('from sys import |path')
        self.assertAccess('from sys| import path')
        self.assertAccess('from s|ys import path')
        self.assertAccess('from |sys import path')
        self.assertAccess('from xml.dom import ')
        # because syntax error
        self.assertAccess('from xml.dom import Node.as|d')


class TestCurrentImport(LineTestCase):
    def setUp(self):
        self.func = current_import

    def test_simple(self):
        self.assertAccess('import ')
        self.assertAccess('import ')
        self.assertAccess('import |path')
        self.assertAccess('import path, ')
        self.assertAccess('import path another|')
        self.assertAccess('if True: import ')
        self.assertAccess('if True: import ')
        self.assertAccess('if True: import ')
        self.assertAccess('if True: import  as something')


class TestMethodDefinitionName(LineTestCase):
    def setUp(self):
        self.func = current_method_definition_name

    def test_simple(self):
        self.assertAccess('def ')
        self.assertAccess('    def bar(x, y)|:')
        self.assertAccess('    def (x, y)')


class TestSingleWord(LineTestCase):
    def setUp(self):
        self.func = current_single_word

    def test_simple(self):
        self.assertAccess('foo.bar|')
        self.assertAccess('.foo|')
        self.assertAccess(' ')


class TestCurrentExpressionAttribute(LineTestCase):
    def setUp(self):
        self.func = current_expression_attribute

    def test_simple(self):
        self.assertAccess('Object..')
        self.assertAccess('Object..')
        self.assertAccess('Object.(|)')
        self.assertAccess('Object.another.(|)')
        self.assertAccess('asdf asdf asdf.(abc|)')

    def test_without_dot(self):
        self.assertAccess('Object|')
        self.assertAccess('Object|.')
        self.assertAccess('|Object.')

    def test_with_whitespace(self):
        self.assertAccess('Object. ')
        self.assertAccess('Object .')
        self.assertAccess('Object . ')
        self.assertAccess('Object .asdf attr|')
        self.assertAccess('Object . attr')
        self.assertAccess('Object. asdf attr|')
        self.assertAccess('Object.  attr')
        self.assertAccess('Object . asdf attr|')
        self.assertAccess('Object .  attr')

    def test_indexing(self):
        self.assertAccess('abc[def].')
        self.assertAccess('abc[def].')
        self.assertAccess('abc[def].')
        self.assertAccess('abc[def].gh |i')
        self.assertAccess('abc[def]|')

    def test_strings(self):
        self.assertAccess('"hey".')
        self.assertAccess('"hey"|')
        self.assertAccess('"hey"|.a')
        self.assertAccess('"hey".')
        self.assertAccess('"hey".asdf d|')
        self.assertAccess('"hey".')


class TestCurrentDottedAttribute(LineTestCase):
    def setUp(self):
        self.func = current_dotted_attribute

    def test_simple(self):
        self.assertAccess('|')
        self.assertAccess('(|')
        self.assertAccess('[|')
        self.assertAccess('m.body[0].value|')
        self.assertAccess('m.body[0].attr.value|')

if __name__ == '__main__':
    unittest.main()

Web Proxy Viewer  |  New URL  |  Original Page