Author: bugman Date: Wed May 28 18:59:17 2014 New Revision: 23558 URL: http://svn.gna.org/viewcvs/relax?rev=23558&view=rev Log: Created the User_functions.test_structure_add_atom GUI test. This is used to check the operation of the Sequence GUI element via the 'pos' argument of the structure.add_atom user function. This is a list fixed to 3 elements. Modified: trunk/test_suite/gui_tests/test_user_functions.py Modified: trunk/test_suite/gui_tests/test_user_functions.py URL: http://svn.gna.org/viewcvs/relax/trunk/test_suite/gui_tests/test_user_functions.py?rev=23558&r1=23557&r2=23558&view=diff ============================================================================== --- trunk/test_suite/gui_tests/test_user_functions.py (original) +++ trunk/test_suite/gui_tests/test_user_functions.py Wed May 28 18:59:17 2014 @@ -142,6 +142,70 @@ self.assertEqual(points[0][0], 1.0) self.assertEqual(points[0][1], None) self.assertEqual(points[0][2], None) + + + def test_structure_add_atom(self): + """Test the operation of the structure.add_atom user function GUI window.""" + + # Open the structure.add_atom user function window. + uf = uf_store['structure.add_atom'] + uf._sync = True + uf.create_wizard(parent=self.app.gui) + + # Set the y-value of a single pos, and check. + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].sel_win.sequence.SetStringItem(index=1, col=1, label=int_to_gui(2)) + uf.page.uf_args['pos'].selection_win_data() + pos = uf.page.uf_args['pos'].GetValue() + print("Pos: %s" % pos) + self.assertEqual(len(pos), 3) + self.assertEqual(pos[0], None) + self.assertEqual(pos[1], 2.0) + self.assertEqual(pos[2], None) + + # Set the pos to nothing in the wizard, open the Sequence window, close the window, and check that None comes back. + uf.page.uf_args['pos'].SetValue(str_to_gui('')) + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].selection_win_data() + pos = uf.page.uf_args['pos'].GetValue() + print("Pos: %s" % pos) + self.assertEqual(pos, None) + + # Set a valid pos in the wizard, open and close the Sequence window (twice), and check that the pos comes back. + uf.page.uf_args['pos'].SetValue(str_to_gui('[1, 2, -3.]')) + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].selection_win_data() + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].selection_win_data() + pos = uf.page.uf_args['pos'].GetValue() + print("Pos: %s" % pos) + self.assertEqual(len(pos), 3) + self.assertEqual(pos[0], 1.0) + self.assertEqual(pos[1], 2.0) + self.assertEqual(pos[2], -3.0) + + # Set the pos to a number of invalid values, checking that they are ignored. + for val in ['2', 'die', '[1, 2, 3', '[1]', '[[1, 2, 3], 1, 2, 3], [1, 2, 3]]']: + uf.page.uf_args['pos'].SetValue(str_to_gui(val)) + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].selection_win_data() + pos = uf.page.uf_args['pos'].GetValue() + print("Invalid pos: %s\nPos: %s" % (val, pos)) + self.assertEqual(pos, None) + + # Set the Sequence elements to invalid values. + for val in ['x']: + uf.page.uf_args['pos'].SetValue(str_to_gui('')) + uf.page.uf_args['pos'].selection_win_show() + uf.page.uf_args['pos'].sel_win.sequence.SetStringItem(index=0, col=1, label=str_to_gui(val)) + uf.page.uf_args['pos'].sel_win.sequence.SetStringItem(index=1, col=1, label=int_to_gui(1)) + uf.page.uf_args['pos'].selection_win_data() + pos = uf.page.uf_args['pos'].GetValue() + print("Pos: %s" % pos) + self.assertEqual(len(pos), 3) + self.assertEqual(pos[0], 1.0) + self.assertEqual(pos[1], None) + self.assertEqual(pos[2], None) def test_structure_pdb_read(self):