File: shortcut.py

package info (click to toggle)
pymol 3.1.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 74,084 kB
  • sloc: cpp: 482,660; python: 89,328; ansic: 29,512; javascript: 6,792; sh: 84; makefile: 25
file content (80 lines) | stat: -rw-r--r-- 2,648 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import pymol
from pymol import cmd, testing, stored

foos = ['foo']
ba_s = ['bar', 'baz']
coms = ['com', 'com_bla', 'com_xxx']
words = foos + ba_s + coms

class TestShortcut(testing.PyMOLTestCase):

    def testShortcut(self):
        # build shortcut
        sc = cmd.Shortcut(words)
        
        # get all keywords
        self.assertItemsEqual(words, sc.interpret(''))

        # full/prefix hits
        self.assertEqual('foo', sc.interpret('f'))
        self.assertEqual('foo', sc.interpret('fo'))
        self.assertEqual('foo', sc.interpret('foo'))

        self.assertItemsEqual(ba_s,  sc.interpret('b'))
        self.assertItemsEqual(ba_s,  sc.interpret('ba'))
        self.assertEqual('bar', sc.interpret('bar'))

        self.assertItemsEqual(coms, sc.interpret('c'))
        self.assertItemsEqual(coms, sc.interpret('co'))
        self.assertEqual('com', sc.interpret('com'))

        # add one
        sc.append('foo_new')
        self.assertItemsEqual(['foo', 'foo_new'], sc.interpret('f'))
        self.assertEqual('foo', sc.interpret('foo'))
        self.assertEqual('foo_new', sc.interpret('foo_'))
        
        self.assertEqual(False, sc.has_key(''))


        # abbreviations
        self.assertEqual('foo_new', sc.interpret('f_'))
        self.assertEqual('foo_new', sc.interpret('f_new'))
        self.assertEqual('foo_new', sc.interpret('fo_'))
        self.assertEqual('com_xxx', sc.interpret('c_x'))
        self.assertEqual('com_xxx', sc.interpret('c_xxx'))
        self.assertEqual('com_xxx', sc.interpret('co_x'))

        # missing key
        self.assertEqual(None, sc.interpret('missing_key'))

        # auto error
        self.assertEqual(None, sc.auto_err(''))
        self.assertEqual(None, sc.auto_err('missing_key'))
        self.assertItemsEqual(coms, sc.auto_err('co'))
        self.assertEqual('com', sc.auto_err('com'))

    def testShortcutMode1(self):
        # build shortcut
        sc = cmd.Shortcut(words)

        # full/prefix hits
        self.assertEqual('foo', sc.interpret('f', 1))
        self.assertItemsEqual(coms, sc.interpret('com', 1))

        # add one
        sc.append('foo_new')
        self.assertItemsEqual(['foo', 'foo_new'], sc.interpret('foo', 1))

    def testShortcutRebuild(self):
        sc = cmd.Shortcut(words)
        sc.rebuild(coms)

        self.assertEqual(None, sc.interpret('f'))
        self.assertEqual(None, sc.interpret('foo'))

        self.assertItemsEqual(coms, sc.interpret('c'))
        self.assertItemsEqual(coms, sc.interpret('com', 1))
        self.assertEqual('com', sc.interpret('com'))
        self.assertEqual('com_xxx', sc.interpret('c_x'))