Files
pymol-open-source/testing/tests/undo/api/test_undo_creating.py
2023-04-15 15:47:44 -04:00

186 lines
4.4 KiB
Python

'''
Testing: pymol.creating
'''
import pytest
from pymol import cmd
from pymol import test_utils
def test_undo_fragment():
frag_name = "ala"
cmd.fragment(frag_name)
assert frag_name in cmd.get_names()
cmd.undo()
assert frag_name not in cmd.get_names()
cmd.redo()
assert frag_name in cmd.get_names()
def test_undo_create():
cmd.fragment("ala")
obj_name = "foo"
cmd.create(obj_name, "ala", 1, 1)
assert obj_name in cmd.get_names()
cmd.undo()
assert obj_name not in cmd.get_names()
cmd.redo()
assert obj_name in cmd.get_names()
def test_undo_pseudoatom():
cmd.pseudoatom('m1')
assert cmd.count_atoms() == 1
cmd.undo()
assert cmd.count_atoms() == 0
cmd.redo()
assert cmd.count_atoms() == 1
def test_undo_set_raw_alignment():
cmd.fab('ACDEF', 'm1')
cmd.fab('CDE', 'm2')
index_m1 = [('m1', 12), ('m1', 23), ('m1', 35)]
index_m2 = [('m2', 2), ('m2', 13), ('m2', 25)]
raw = [list(t) for t in zip(index_m1, index_m2)]
cmd.set_raw_alignment('aln', raw)
assert cmd.index('m1 & aln') == index_m1
assert cmd.index('m2 & aln') == index_m2
cmd.undo()
assert 'aln' not in cmd.get_names()
cmd.redo()
assert cmd.index('m1 & aln') == index_m1
assert cmd.index('m2 & aln') == index_m2
def test_undo_isosurface():
cmd.fragment('gly', 'm1')
cmd.set('gaussian_b_floor', 30)
cmd.set('mesh_width', 5)
cmd.map_new('map')
cmd.delete('m1')
surf_name = 'isoSurf'
cmd.isosurface(surf_name, 'map')
assert surf_name in cmd.get_names()
cmd.undo()
assert surf_name not in cmd.get_names()
cmd.redo()
assert surf_name in cmd.get_names()
def test_undo_isodot():
cmd.fragment('gly', 'm1')
cmd.set('gaussian_b_floor', 30)
cmd.set('mesh_width', 5)
cmd.map_new('map')
cmd.delete('m1')
dot_name = 'isoDot'
cmd.isosurface(dot_name, 'map')
assert dot_name in cmd.get_names()
cmd.undo()
assert dot_name not in cmd.get_names()
cmd.redo()
assert dot_name in cmd.get_names()
def test_undo_isomesh():
cmd.fragment('gly', 'm1')
cmd.set('gaussian_b_floor', 30)
cmd.set('mesh_width', 5)
cmd.map_new('map')
cmd.delete('m1')
# make mesh
cmd.isomesh('mesh', 'map')
assert 'mesh' in cmd.get_names()
cmd.undo()
assert 'mesh' not in cmd.get_names()
cmd.redo()
assert 'mesh' in cmd.get_names()
def test_undo_copy():
cmd.fragment('ala', 'm1')
cmd.copy('m3', 'm1')
cmd.undo()
assert 'm3' not in cmd.get_names()
cmd.redo()
assert 'm3' in cmd.get_names()
cmd.fragment('his', 'm2')
cmd.copy('m3', 'm2')
cmd.undo()
assert cmd.count_atoms('m1') == cmd.count_atoms('m3')
cmd.redo()
assert cmd.count_atoms('m2') == cmd.count_atoms('m3')
def get_objs_in_group(group):
obj_list = []
cmd.iterate('g1', 'obj_list.append(model)', space=locals())
return obj_list
def test_undo_group():
cmd.pseudoatom('m1')
cmd.pseudoatom('m2')
cmd.pseudoatom('m3')
cmd.group('g1', 'm1 m2')
assert get_objs_in_group('g1') == ['m1', 'm2']
cmd.undo()
assert get_objs_in_group('g1') == []
cmd.redo()
assert get_objs_in_group('g1') == ['m1', 'm2']
def test_undo_ungroup():
cmd.pseudoatom('m1')
cmd.pseudoatom('m2')
cmd.pseudoatom('m3')
cmd.group('g1', 'm1 m2')
cmd.ungroup('m2')
assert get_objs_in_group('g1') == ['m1']
cmd.undo()
assert get_objs_in_group('g1') == ['m1', 'm2']
cmd.redo()
assert get_objs_in_group('g1') == ['m1']
def test_undo_isolevel():
cmd.fragment('gly', 'm1')
cmd.set('gaussian_b_floor', 30)
cmd.set('mesh_width', 5)
cmd.map_new('map')
cmd.delete('m1')
# make mesh
cmd.isodot('dot', 'map')
cmd.isodot('dot', 'map', source_state=1, state=-2)
# check mesh presence by color
meshcolor = 'red'
cmd.color(meshcolor, 'dot')
test_utils.ambientOnly(cmd)
assert test_utils.imageHasColor(cmd, meshcolor)
cmd.frame(2)
assert cmd.get_state() == 2
assert test_utils.imageHasColor(cmd, meshcolor)
cmd.isolevel('dot', 5)
assert test_utils.imageHasColor(cmd, meshcolor)
cmd.isolevel('dot', 10)
assert not test_utils.imageHasColor(cmd, meshcolor)
cmd.undo()
assert test_utils.imageHasColor(cmd, meshcolor)
cmd.redo()
assert not test_utils.imageHasColor(cmd, meshcolor)
def test_undo_gradient():
pass
def test_undo_symexp():
pass
def test_undo_extract():
pass