예제 #1
0
 def testCanParseCommandAbsorbsEveryThing(self):
     scanner = Scanner("w !dostuff here")
     tokens = list(scanner.scan())
     params = {
         '++': '',
         'file_name': '',
         '>>': False,
         'cmd': 'dostuff here'
     }
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #2
0
 def testCanScanDotOffsetSearchForward(self):
     scanner = Scanner(".+10/foobar/")
     tokens = list(scanner.scan())
     self.assertEqual([
         TokenDot(),
         TokenOffset([10]),
         TokenSearchForward('foobar'),
         TokenEof()
     ], tokens)
     self.assertEqual(12, scanner.state.position)
예제 #3
0
    def testCanParsePlusPlusFileencoding(self):
        scanner = Scanner("w ++fileencoding")
        tokens = list(scanner.scan())
        params = {'++': 'fileencoding', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++enc")
        tokens = list(scanner.scan())
        params = {'++': 'fileencoding', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #4
0
    def testCanParsePlusPlusNobin(self):
        scanner = Scanner("w ++nobinary")
        tokens = list(scanner.scan())
        params = {'++': 'nobinary', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++nobin")
        tokens = list(scanner.scan())
        params = {'++': 'nobinary', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #5
0
 def testCanScanSubstituteParamatersWithCount(self):
     scanner = Scanner("substitute:foo:bar: 10")
     tokens = list(scanner.scan())
     params = {
         "search_term": "foo",
         "replacement": "bar",
         "flags": [],
         "count": 10
     }
     self.assertEqual([TokenCommandSubstitute(params), TokenEof()], tokens)
예제 #6
0
    def testCanParsePlusPlusEdit(self):
        scanner = Scanner("w ++edit")
        tokens = list(scanner.scan())
        params = {'++': 'edit', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++fileformat")
        tokens = list(scanner.scan())
        params = {'++': 'fileformat', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #7
0
    def testCanParsePlusPlusEdit(self):
        scanner = Scanner("w ++edit")
        tokens = list(scanner.scan())
        params = {'++': 'edit', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++fileformat")
        tokens = list(scanner.scan())
        params = {'++': 'fileformat', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #8
0
    def testCanParsePlusPlusNobin(self):
        scanner = Scanner("w ++nobinary")
        tokens = list(scanner.scan())
        params = {'++': 'nobinary', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++nobin")
        tokens = list(scanner.scan())
        params = {'++': 'nobinary', 'file_name': '', '>>': False, 'cmd': ''}
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #9
0
    def testCanParsePlusPlusFileencoding(self):
        scanner = Scanner("w ++fileencoding")
        tokens = list(scanner.scan())
        params = {
            '++': 'fileencoding',
            'file_name': '',
            '>>': False,
            'cmd': ''
        }
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)

        scanner = Scanner("w ++enc")
        tokens = list(scanner.scan())
        params = {
            '++': 'fileencoding',
            'file_name': '',
            '>>': False,
            'cmd': ''
        }
        self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #10
0
 def testCanScanEmptyRange(self):
     scanner = Scanner("s")
     tokens = list(scanner.scan())
     self.assertEqual([TokenCommandSubstitute(None), TokenEof()], tokens)
     self.assertEqual(1, scanner.state.position)
예제 #11
0
 def testCanScanNegativeOffset(self):
     scanner = Scanner(".-100")
     tokens = list(scanner.scan())
     self.assertEqual([TokenDot(), TokenOffset([-100]), TokenEof()], tokens)
예제 #12
0
 def testCanScanBackwardSearch(self):
     scanner = Scanner("?foo?")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSearchBackward('foo'), TokenEof()], tokens)
예제 #13
0
 def testCanScanOffsetWithTrailingChars(self):
     scanner = Scanner("+100,")
     tokens = list(scanner.scan())
     self.assertEqual([TokenOffset(
         [100]), TokenComma(), TokenEof()], tokens)
예제 #14
0
 def testCanInstantiateAlias(self):
     scanner = Scanner("w")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': '', '>>': False, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #15
0
 def testCanParseRedirectionFollowedByFilenameSeparated(self):
     scanner = Scanner("w>> foo.txt")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': 'foo.txt', '>>': True, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #16
0
 def testCanInstantiate(self):
     scanner = Scanner("foo")
     self.assertEqual(scanner.state.source, 'foo')
예제 #17
0
 def testCanInstantiate(self):
     scanner = Scanner("'a")
     tokens = list(scanner.scan())
     self.assertEqual([TokenMark('a'), TokenEof()], tokens)
예제 #18
0
 def testCanScanDollar(self):
     scanner = Scanner(";")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSemicolon(), TokenEof()], tokens)
예제 #19
0
 def testCanScanForwardSearch(self):
     scanner = Scanner("/foo/")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSearchForward('foo'), TokenEof()], tokens)
예제 #20
0
 def testCanScanDollar(self):
     scanner = Scanner(",")
     tokens = list(scanner.scan())
     self.assertEqual([TokenComma(), TokenEof()], tokens)
예제 #21
0
 def testCanParseCommandAndDetectFileName(self):
     scanner = Scanner("w foo.txt")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': 'foo.txt', '>>': False, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #22
0
 def testCanParseCommandAbsorbsEveryThing(self):
     scanner = Scanner("w !dostuff here")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': '', '>>': False, 'cmd': 'dostuff here'}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #23
0
 def testCanScanSubstituteParamatersWithFlags(self):
     scanner = Scanner("substitute:foo:bar:r")
     tokens = list(scanner.scan())
     params = {"search_term": "foo", "replacement": "bar", "flags": ['r'], "count": 1}
     self.assertEqual([TokenCommandSubstitute(params), TokenEof()], tokens)
예제 #24
0
 def testCanInstantiateAlias(self):
     scanner = Scanner("w")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': '', '>>': False, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #25
0
 def testScanCanFailIfSubstituteParamatersFlagsHaveWrongOrder(self):
     scanner = Scanner("substitute:foo:bar:r&")
     self.assertRaises(ValueError, lambda: list(scanner.scan()))
예제 #26
0
 def testCanParseRedirectionFollowedByFilenameSeparated(self):
     scanner = Scanner("w>> foo.txt")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': 'foo.txt', '>>': True, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #27
0
 def testCanInstantiate(self):
     scanner = Scanner("'a")
     tokens = list(scanner.scan())
     self.assertEqual([TokenMark('a'), TokenEof()], tokens)
예제 #28
0
 def testCanScanSubstituteParamaterWithRange(self):
     scanner = Scanner(r'%substitute:foo:bar: 10')
     tokens = list(scanner.scan())
     params = {"search_term": "foo", "replacement": "bar", "flags": [], "count": 10}
     self.assertEqual([TokenPercent(), TokenCommandSubstitute(params), TokenEof()], tokens)
예제 #29
0
 def testCanScanBackwardSearch(self):
     scanner = Scanner("?foo?")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSearchBackward('foo'), TokenEof()], tokens)
예제 #30
0
 def testCanParseRedirection(self):
     scanner = Scanner("w>>")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': '', '>>': True, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #31
0
 def testCanScanOffset(self):
     scanner = Scanner("+100")
     tokens = list(scanner.scan())
     self.assertEqual([TokenOffset([100]), TokenEof()], tokens)
예제 #32
0
 def testCanParseCommandAndDetectFileName(self):
     scanner = Scanner("w foo.txt")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': 'foo.txt', '>>': False, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #33
0
 def testCanParseRedirection(self):
     scanner = Scanner("w>>")
     tokens = list(scanner.scan())
     params = {'++': '', 'file_name': '', '>>': True, 'cmd': ''}
     self.assertEqual([TokenCommandWrite(params), TokenEof()], tokens)
예제 #34
0
 def testCanScanDollar(self):
     scanner = Scanner(";")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSemicolon(), TokenEof()], tokens)
예제 #35
0
 def testCanScanOffsetWithTrailingChars(self):
     scanner = Scanner("+100,")
     tokens = list(scanner.scan())
     self.assertEqual([TokenOffset([100]), TokenComma(), TokenEof()], tokens)
예제 #36
0
 def testScanCanFailIfSubstituteParamatersFlagsHaveWrongOrder(self):
     scanner = Scanner("substitute:foo:bar:r&")
     self.assertRaises(ValueError, lambda: list(scanner.scan()))
예제 #37
0
 def testCanScanDollar(self):
     scanner = Scanner(",")
     tokens = list(scanner.scan())
     self.assertEqual([TokenComma(), TokenEof()], tokens)
예제 #38
0
 def testCanScanPercent(self):
     scanner = Scanner("%")
     tokens = list(scanner.scan())
     self.assertEqual([TokenPercent(), TokenEof()], tokens)
예제 #39
0
 def testCanScanForwardSearch(self):
     scanner = Scanner("/foo/")
     tokens = list(scanner.scan())
     self.assertEqual([TokenSearchForward('foo'), TokenEof()], tokens)
예제 #40
0
 def testCanScanEmptyRange(self):
     scanner = Scanner("s")
     tokens = list(scanner.scan())
     self.assertEqual([TokenCommandSubstitute(None), TokenEof()], tokens)
     self.assertEqual(1, scanner.state.position)
예제 #41
0
 def testCanScanOffset(self):
     scanner = Scanner("+100")
     tokens = list(scanner.scan())
     self.assertEqual([TokenOffset([100]), TokenEof()], tokens)
예제 #42
0
 def testCanScanDotOffsetSearchForward(self):
     scanner = Scanner(".+10/foobar/")
     tokens = list(scanner.scan())
     self.assertEqual([TokenDot(), TokenOffset([10]), TokenSearchForward('foobar'), TokenEof()], tokens)
     self.assertEqual(12, scanner.state.position)
예제 #43
0
 def testCanScanPercent(self):
     scanner = Scanner("%")
     tokens = list(scanner.scan())
     self.assertEqual([TokenPercent(), TokenEof()], tokens)
예제 #44
0
 def testCanScanNegativeOffset(self):
     scanner = Scanner(".-100")
     tokens = list(scanner.scan())
     self.assertEqual([TokenDot(), TokenOffset([-100]), TokenEof()], tokens)
예제 #45
0
 def testCanScanDigitsDot(self):
     scanner = Scanner("100.")
     tokens = list(scanner.scan())
     self.assertEqual([TokenDigits('100'), TokenDot(), TokenEof()], tokens)
예제 #46
0
 def testCanInstantiate(self):
     scanner = Scanner("substitute")
     tokens = list(scanner.scan())
     self.assertEqual([TokenCommandSubstitute(params=None),
                       TokenEof()], tokens)
예제 #47
0
 def testCanScanDigits(self):
     scanner = Scanner("100")
     tokens = list(scanner.scan())
     self.assertEqual([TokenDigits('100'), TokenEof()], tokens)
예제 #48
0
 def testCanInstantiate(self):
     scanner = Scanner("substitute")
     tokens = list(scanner.scan())
     self.assertEqual([TokenCommandSubstitute(params=None), TokenEof()], tokens)