Files
PlantAI-dev/tools/pymol-open-source/testing/tests/api/shortcut.py
T
2026-08-03 18:42:47 +08:00

81 lines
2.6 KiB
Python

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'))