1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 /** 23 * 24 */ 25 package fvt.gui.formula.importexport; 26 27 import static org.junit.Assert.*; 28 import static org.openoffice.test.common.Testspace.*; 29 import static org.openoffice.test.vcl.Tester.*; 30 import static testlib.gui.AppTool.*; 31 import static testlib.gui.UIMap.*; 32 33 import org.junit.After; 34 import org.junit.Before; 35 import org.junit.Ignore; 36 import org.junit.Rule; 37 import org.junit.Test; 38 import org.openoffice.test.common.FileUtil; 39 import org.openoffice.test.common.Logger; 40 41 import testlib.gui.AppTool; 42 43 44 public class FormulaInDifferentWays { 45 46 @Rule 47 public Logger log = Logger.getLogger(this); 48 49 @Before setUp()50 public void setUp() throws Exception { 51 app.start(true); 52 newFormula(); 53 } 54 55 @After tearDown()56 public void tearDown() throws Exception { 57 discard(); 58 app.stop(); 59 } 60 61 /** 62 * Test elements window active and inactive 63 * 64 * @throws Exception 65 */ 66 @Test testElementsWindowActive()67 public void testElementsWindowActive() throws Exception { 68 // Check if the "View->Elements" menu is selected 69 boolean viewElements = mathElementsWindow.exists(); 70 // Active or inactive the Elements window 71 app.dispatch(".uno:ToolBox"); 72 assertNotSame("Elements window active/inactive failed", viewElements, mathElementsWindow.exists()); 73 } 74 75 /** 76 * Test create a formula from Elements window 77 * 78 * @throws Exception 79 */ 80 @Test testCreateFormulaFromElementsWindow()81 public void testCreateFormulaFromElementsWindow() throws Exception { 82 String saveTo = getPath("temp/" + "FormulaFromElements.odf"); 83 84 // Make Elements window pop up 85 if (!mathElementsWindow.exists()) { 86 app.dispatch(".uno:ToolBox"); 87 } 88 // Click a formula in Elements window and edit the formula in the 89 // commands window 90 mathElementsRelations.click(); 91 mathElementsRelationsNotEqual.click(); 92 sleep(1); 93 typeKeys("a"); 94 app.dispatch(".uno:NextMark"); 95 typeKeys("b"); 96 String insertedFormula = "a <> b"; 97 98 // Verify if the formula is correct 99 app.dispatch(".uno:Select"); 100 app.dispatch(".uno:Copy"); 101 assertEquals("The inserted formula into math", insertedFormula.concat(" "), app.getClipboard()); 102 103 // Save and reopen the formula 104 FileUtil.deleteFile(saveTo); 105 saveAndReopen(saveTo); 106 mathEditWindow.waitForExistence(10, 2); 107 108 // Verify if the formula still exists in the file, and correct 109 app.dispatch(".uno:Select"); 110 app.dispatch(".uno:Copy"); 111 assertEquals("The inserted formula into math", insertedFormula.concat(" "), app.getClipboard()); 112 113 } 114 115 /** 116 * Test create a formula from right click menu in equation editor 117 * 118 * @throws Exception 119 */ 120 @Test testCreateFormulaFromRightClickMenu()121 public void testCreateFormulaFromRightClickMenu() throws Exception { 122 String saveTo = getPath("temp/" + "FormulaFromRightClickMenu.odf"); 123 124 // Right click in equation editor, choose "Functions->More->arcsin(x)", 125 mathEditWindow.rightClick(5, 5); 126 typeKeys("<down>"); 127 typeKeys("<down>"); 128 typeKeys("<down>"); 129 typeKeys("<down>"); 130 typeKeys("<enter>"); 131 typeKeys("<up>"); 132 typeKeys("<enter>"); 133 typeKeys("<enter>"); 134 typeKeys("a"); 135 sleep(2); 136 String insertedFormula = "arcsin(a)"; 137 138 // Verify if the formula is correct 139 app.dispatch(".uno:Select"); 140 app.dispatch(".uno:Copy"); 141 142 assertEquals("The inserted formula into math", insertedFormula.concat(" "), app.getClipboard()); 143 // Save and reopen the formula 144 FileUtil.deleteFile(saveTo); 145 saveAndReopen(saveTo); 146 147 mathEditWindow.waitForExistence(10, 2); 148 // Verify if the formula still exists in the file, and correct 149 app.dispatch(".uno:Select"); 150 app.dispatch(".uno:Copy"); 151 assertEquals("The inserted formula into math", insertedFormula.concat(" "), app.getClipboard()); 152 } 153 154 /** 155 * Test undo/redo in math 156 * 157 * @throws Exception 158 */ 159 @Test testUndoRedoInMath()160 public void testUndoRedoInMath() throws Exception { 161 162 // Make Elements window pop up 163 if (!mathElementsWindow.exists()) { 164 app.dispatch(".uno:ToolBox"); 165 } 166 167 // Click a formula in Elements window and edit the formula in the 168 // commands window 169 mathElementsUnaryBinary.click(); 170 mathElementsUnaryBinaryPlus.click(); 171 sleep(1); 172 typeKeys("a"); // "+a"; 173 174 // Undo and verify if it works fine 175 app.dispatch(".uno:Undo"); 176 app.dispatch(".uno:Select"); 177 app.dispatch(".uno:Copy"); 178 assertEquals("The inserted formula into math", "+<?> ", app.getClipboard()); 179 180 // Redo and verify if it works fine 181 app.dispatch(".uno:Redo"); 182 app.dispatch(".uno:Select"); 183 app.dispatch(".uno:Copy"); 184 assertEquals("The inserted formula into math", "+a ", app.getClipboard()); 185 } 186 } 187