| 1 | // Copyright © 2004-2006 University of Helsinki, Department of Computer Science | |
| 2 | // Copyright © 2012 various contributors | |
| 3 | // This software is released under GNU Lesser General Public License 2.1. | |
| 4 | // The license text is at http://www.gnu.org/licenses/lgpl-2.1.html | |
| 5 | ||
| 6 | package fi.helsinki.cs.titokone; | |
| 7 | ||
| 8 | import fi.helsinki.cs.ttk91.*; | |
| 9 | ||
| 10 | import java.io.*; | |
| 11 | import java.util.*; | |
| 12 | import java.util.logging.Logger; | |
| 13 | ||
| 14 | ||
| 15 | /** | |
| 16 | * This class contains the intellect the GUI class needs to provide | |
| 17 | * services to the Control class. It also hides the GUI and Control from | |
| 18 | * each other, serving as the middle-man for all their communication. It | |
| 19 | * prepares all the data from CompileInfo, LoadInfo and RunInfo objects | |
| 20 | * to GUI, so that it doesn't have to be aware of what's happening behind | |
| 21 | * GUIBrain. Moreover, this class for its part doesn't take any position on | |
| 22 | * how to show the data provided here on the screen. It may, however, tell | |
| 23 | * GUI to disable or enable some elements or objects, such as buttons, | |
| 24 | * menuitems or inputfields. | |
| 25 | */ | |
| 26 | public class GUIBrain { | |
| 27 | ||
| 28 | ||
| 29 | /** | |
| 30 | * This variable can be set to e.g. 70 to slow down the GUI on | |
| 31 | * compilation and runtime for overly fast machines. It should | |
| 32 | * preferrably be completely replaced with a user-selectable option, | |
| 33 | * however. The value should be at minimum 0. | |
| 34 | */ | |
| 35 | 3 | private final int SLOWDOWN = 0; |
| 36 | ||
| 37 | ||
| 38 | /** | |
| 39 | * This field contains the languages available, with the long, | |
| 40 | * English names like "Finnish" or "English (GB)" as keys and | |
| 41 | * the locales corresponding to the languages as values. | |
| 42 | */ | |
| 43 | private Hashtable<String, Locale> availableLanguages; | |
| 44 | ||
| 45 | private Control control; | |
| 46 | ||
| 47 | ||
| 48 | /** | |
| 49 | * This field namely stores the current settings and everytime a setting | |
| 50 | * is changed, this is informed about it. When a GUIBrain object is created, | |
| 51 | * it asks for Control to get settings from settings file (which is as well | |
| 52 | * stored in this class, to settingsFile field) and GUIBrain saves | |
| 53 | * those settings (if there's any) in this field. | |
| 54 | */ | |
| 55 | private Settings currentSettings; | |
| 56 | ||
| 57 | ||
| 58 | private Animator animator; | |
| 59 | private Display display; | |
| 60 | ||
| 61 | ||
| 62 | private GUI gui; | |
| 63 | ||
| 64 | 1 | private String programPath = "fi/helsinki/cs/titokone/"; |
| 65 | private File settingsFile; | |
| 66 | ||
| 67 | private File currentlyOpenedFile; | |
| 68 | ||
| 69 | public static final int COMMENTED = 1; | |
| 70 | public static final int LINE_BY_LINE = 2; | |
| 71 | public static final int PAUSED = 2; | |
| 72 | public static final int ANIMATED = 4; | |
| 73 | ||
| 74 | /** | |
| 75 | * This field is set when menuInterrupt is called, and all continuous | |
| 76 | * loops which do many things and wait for input in between should | |
| 77 | * check if this is sent before continuing to their next step. An | |
| 78 | * interrupt sent means they should stop doing whatever they were doing | |
| 79 | * as soon as is reasonable. (Usually when it would be the time to | |
| 80 | * wait for input from the user. | |
| 81 | */ | |
| 82 | private boolean interruptSent; | |
| 83 | ||
| 84 | ||
| 85 | /** | |
| 86 | * This field is set true, when continueTaskWithoutPauses is launched. | |
| 87 | * Methods menuRun() and menuCompile() check this to see if they want | |
| 88 | * to override the setting in currentSettings. | |
| 89 | */ | |
| 90 | private boolean noPauses; | |
| 91 | ||
| 92 | ||
| 93 | private boolean threadRunning; | |
| 94 | ||
| 95 | ||
| 96 | /** | |
| 97 | * Keeps track of the state of this program. It can be NONE, B91_NOT_RUNNING, | |
| 98 | * B91_RUNNING, B91_PAUSED, B91_WAIT_FOR_KBD, K91_NOT_COMPILING, K91_COMPILING | |
| 99 | * or K91_PAUSED. | |
| 100 | */ | |
| 101 | private short currentState; | |
| 102 | ||
| 103 | ||
| 104 | /** | |
| 105 | * These fields are used to set the current state of program. It's stored into | |
| 106 | * currentState field. | |
| 107 | */ | |
| 108 | private static final short NONE = 0; | |
| 109 | private static final short B91_NOT_RUNNING = 1; | |
| 110 | private static final short B91_RUNNING = 2; | |
| 111 | private static final short B91_PAUSED = 3; | |
| 112 | private static final short B91_WAIT_FOR_KBD = 4; | |
| 113 | private static final short K91_NOT_COMPILING = 5; | |
| 114 | private static final short K91_COMPILING = 6; | |
| 115 | private static final short K91_PAUSED = 7; | |
| 116 | private static final short INTERRUPTED_WITHOUT_PAUSE = 10; | |
| 117 | private static final short INTERRUPTED_WITH_PAUSE = 11; | |
| 118 | ||
| 119 | /** | |
| 120 | * This field contains our logger. | |
| 121 | */ | |
| 122 | private Logger logger; | |
| 123 | ||
| 124 | public static String DEFAULT_STDIN_FILENAME = "stdin"; | |
| 125 | public static String DEFAULT_STDOUT_FILENAME = "stdout"; | |
| 126 | ||
| 127 | /** | |
| 128 | * This variable sets whether the initial data area length (up to sp) | |
| 129 | * should be marked by hiding the symbolic versions of lines down from | |
| 130 | * it. | |
| 131 | */ | |
| 132 | 2 | protected static boolean ENABLE_DATA_AREA_MARKUP = true; |
| 133 | ||
| 134 | ||
| 135 | /** | |
| 136 | * This constructor sets up the GUIBrain instance. It calls private | |
| 137 | * initialization functions, including findAvailableLanguages(). | |
| 138 | */ | |
| 139 | public GUIBrain(GUI gui, Animator animator, Display display) { | |
| 140 | ||
| 141 | 1 | this.gui = gui; |
| 142 | ||
| 143 | logger = Logger.getLogger(getClass().getPackage().getName()); | |
| 144 | 2 | File defStdinFile = new File(System.getProperty("user.dir"), DEFAULT_STDIN_FILENAME); |
| 145 | 2 | File defStdoutFile = new File(System.getProperty("user.dir"), DEFAULT_STDOUT_FILENAME); |
| 146 | try { | |
| 147 | //defStdinFile.createNewFile(); // We don't need write access to stdin. | |
| 148 | 2 | if (!defStdoutFile.exists()) { |
| 149 | 1 | defStdoutFile.createNewFile(); |
| 150 | 1 | defStdoutFile.delete(); |
| 151 | } | |
| 152 | } catch (IOException e) { | |
| 153 | logger.info(e.getMessage()); | |
| 154 | } | |
| 155 | 2 | control = new Control(defStdinFile, defStdoutFile); |
| 156 | ||
| 157 | 1 | this.animator = animator; |
| 158 | 1 | this.display = display; |
| 159 | ||
| 160 | try { | |
| 161 | 1 | getCurrentSettings(); |
| 162 | } catch (IOException e) { | |
| 163 | 1 | System.out.println("Settings file cannot be accessed. ...exiting."); |
| 164 | 3 | System.exit(0); |
| 165 | } | |
| 166 | ||
| 167 | ||
| 168 | 1 | String filemode = currentSettings.getStrValue(Settings.STDIN_PATH); |
| 169 | 1 | String path = currentSettings.getStrValue(Settings.DEFAULT_STDIN); |
| 170 | ||
| 171 | 3 | if (path != null && !path.equals("")) { |
| 172 | 2 | if (filemode.equals("absolute")) { |
| 173 | 1 | defStdinFile = new File(path); |
| 174 | 2 | } else if (filemode.equals("relative")) { |
| 175 | 2 | defStdinFile = new File(System.getProperty("user.dir"), path); |
| 176 | } | |
| 177 | } | |
| 178 | try { | |
| 179 | 1 | control.setDefaultStdIn(defStdinFile); |
| 180 | } catch (Exception e) { | |
| 181 | logger.info(e.getMessage()); | |
| 182 | } | |
| 183 | ||
| 184 | ||
| 185 | 1 | filemode = currentSettings.getStrValue(Settings.STDOUT_PATH); |
| 186 | 1 | path = currentSettings.getStrValue(Settings.DEFAULT_STDOUT); |
| 187 | ||
| 188 | 3 | if (path != null && !path.equals("")) { |
| 189 | 2 | if (filemode.equals("absolute")) { |
| 190 | 1 | defStdoutFile = new File(path); |
| 191 | 2 | } else if (filemode.equals("relative")) { |
| 192 | 2 | defStdoutFile = new File(System.getProperty("user.dir"), path); |
| 193 | } | |
| 194 | } | |
| 195 | try { | |
| 196 | 1 | control.setDefaultStdOut(defStdoutFile); |
| 197 | } catch (Exception e) { | |
| 198 | logger.info(e.getMessage()); | |
| 199 | } | |
| 200 | ||
| 201 | 1 | int runmode = currentSettings.getIntValue(Settings.RUN_MODE); |
| 202 | 11 | gui.setSelected(GUI.OPTION_RUNNING_COMMENTED, (runmode & COMMENTED) != 0); |
| 203 | 11 | gui.setSelected(GUI.OPTION_RUNNING_PAUSED, (runmode & PAUSED) != 0); |
| 204 | 11 | gui.setSelected(GUI.OPTION_RUNNING_ANIMATED, (runmode & ANIMATED) != 0); |
| 205 | ||
| 206 | 1 | int compilemode = currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 207 | 11 | gui.setSelected(GUI.OPTION_COMPILING_COMMENTED, (compilemode & COMMENTED) != 0); |
| 208 | 11 | gui.setSelected(GUI.OPTION_COMPILING_PAUSED, (compilemode & PAUSED) != 0); |
| 209 | ||
| 210 | 1 | int memorysize = currentSettings.getIntValue(Settings.MEMORY_SIZE); |
| 211 | 3 | if (memorysize != Control.DEFAULT_MEMORY_SIZE) { |
| 212 | try { | |
| 213 | 1 | control.changeMemorySize(memorysize); |
| 214 | } catch (IllegalArgumentException wrongsize) { | |
| 215 | 3 | control.changeMemorySize(Control.DEFAULT_MEMORY_SIZE); |
| 216 | } | |
| 217 | } | |
| 218 | ||
| 219 | ||
| 220 | 2 | availableLanguages = new Hashtable<String, Locale>(); |
| 221 | 1 | findAvailableLanguages(); |
| 222 | ||
| 223 | 1 | String language = currentSettings.getStrValue(Settings.UI_LANGUAGE); |
| 224 | ||
| 225 | 2 | if (availableLanguages.containsKey(language)) { |
| 226 | 2 | Translator.setLocale((Locale) availableLanguages.get(language)); |
| 227 | //gui.updateAllTexts(); | |
| 228 | } | |
| 229 | ||
| 230 | ||
| 231 | 3 | noPauses = false; |
| 232 | 3 | interruptSent = false; |
| 233 | // The settings have not really changed into anything | |
| 234 | // interesting at this point. | |
| 235 | //saveSettings(); | |
| 236 | ||
| 237 | 3 | currentState = NONE; |
| 238 | } | |
| 239 | ||
| 240 | ||
| 241 | /** | |
| 242 | * This method corresponds to the menu option File -> Open... It | |
| 243 | * calls either openBinaryFile or openSourceFile correspondingly. | |
| 244 | */ | |
| 245 | public void menuOpenFile(File openedFile) { | |
| 246 | ||
| 247 | /* Opening a file is a command that interrupts all other tasks. */ | |
| 248 | 3 | interruptCurrentTasks(true); |
| 249 | ||
| 250 | 1 | String suffix = getExtension(openedFile); |
| 251 | ||
| 252 | 1 | gui.resetAll(); |
| 253 | ||
| 254 | 2 | if (suffix.equals("b91")) { |
| 255 | try { | |
| 256 | 1 | control.openBinary(openedFile); |
| 257 | } catch (Exception e) { | |
| 258 | 2 | gui.showError(e.getMessage()); |
| 259 | return; | |
| 260 | } | |
| 261 | ||
| 262 | 1 | loadAndUpdateGUI(); |
| 263 | ||
| 264 | 2 | } else if (suffix.equals("k91")) { |
| 265 | 1 | gui.resetAll(); |
| 266 | ||
| 267 | String k91Source = ""; | |
| 268 | ||
| 269 | try { | |
| 270 | 1 | k91Source = control.openSource(openedFile); |
| 271 | } catch (IOException e) { | |
| 272 | 2 | gui.showError(e.getMessage()); |
| 273 | return; | |
| 274 | } | |
| 275 | ||
| 276 | 1 | currentlyOpenedFile = openedFile; |
| 277 | ||
| 278 | 1 | String[] src = k91Source.split("\n|\r|\r\n"); |
| 279 | 1 | gui.insertToCodeTable(src); |
| 280 | 3 | gui.updateStatusBar(new Message("Opened a new k91 source " + |
| 281 | "file.").toString()); | |
| 282 | 3 | gui.setGUIView(2); |
| 283 | ||
| 284 | 3 | currentState = K91_NOT_COMPILING; |
| 285 | 1 | setGUICommandsForCurrentState(); |
| 286 | ||
| 287 | ||
| 288 | } else { // if file extension isn't either b91 or k91 | |
| 289 | 3 | gui.showError(new Message("File extension must be k91 or b91").toString()); |
| 290 | } | |
| 291 | } | |
| 292 | ||
| 293 | ||
| 294 | public static final int MIN_KBD_VALUE = Integer.MIN_VALUE; //,not -32767; | |
| 295 | public static final int MAX_KBD_VALUE = Integer.MAX_VALUE;//,not 32767; | |
| 296 | ||
| 297 | public boolean enterInput(String input) { | |
| 298 | int inputValue; | |
| 299 | 6 | String[] minAndMaxValues = {"" + MIN_KBD_VALUE, "" + MAX_KBD_VALUE}; |
| 300 | ||
| 301 | try { | |
| 302 | 1 | inputValue = Integer.parseInt(input); |
| 303 | } catch (NumberFormatException e) { | |
| 304 | 3 | gui.changeTextInEnterNumberLabel(new Message("Illegal input").toString()); |
| 305 | 3 | gui.updateStatusBar(new Message("Illegal input. You must insert a number between {0}...{1}", minAndMaxValues).toString()); |
| 306 | 3 | return false; |
| 307 | } | |
| 308 | ||
| 309 | 8 | if (inputValue > MAX_KBD_VALUE || inputValue < MIN_KBD_VALUE) { |
| 310 | 3 | gui.changeTextInEnterNumberLabel(new Message("Illegal input").toString()); |
| 311 | 3 | gui.updateStatusBar(new Message("Illegal input. You must insert a number between {0}...{1}", minAndMaxValues).toString()); |
| 312 | 3 | return false; |
| 313 | } | |
| 314 | ||
| 315 | 1 | gui.changeTextInEnterNumberLabel(""); |
| 316 | 1 | gui.updateStatusBar(""); |
| 317 | ||
| 318 | 1 | control.keyboardInput(inputValue); |
| 319 | 3 | return true; |
| 320 | } | |
| 321 | ||
| 322 | ||
| 323 | /** | |
| 324 | * This method corresponds to the menu option File -> Run. It does | |
| 325 | * its work by calling runInstruction(). | |
| 326 | */ | |
| 327 | public synchronized void menuRun() { | |
| 328 | ||
| 329 | 3 | threadRunning = true; |
| 330 | ||
| 331 | 3 | interruptSent = false; |
| 332 | 3 | noPauses = false; |
| 333 | ||
| 334 | /* If stdout file is set to be overwritten, then it must be emptied first. | |
| 335 | It's done here by deleting it first and then creating it again. | |
| 336 | */ | |
| 337 | 1 | File stdoutFile = getCurrentDefaultStdoutFile(); |
| 338 | 3 | if (currentSettings.getStrValue(Settings.STDOUT_USE).equals("overwrite")) { |
| 339 | try { | |
| 340 | 2 | if (stdoutFile.exists()) { |
| 341 | 1 | stdoutFile.delete(); |
| 342 | } | |
| 343 | 1 | stdoutFile.createNewFile(); |
| 344 | } catch (IOException e) { | |
| 345 | 5 | String[] filename = {stdoutFile.getName()}; |
| 346 | 3 | gui.showError(new Message("Error while emptying {0}", filename).toString()); |
| 347 | logger.warning(e.getMessage()); | |
| 348 | //return; // Allow emptying to fail, since it may not mean anything. | |
| 349 | } | |
| 350 | } | |
| 351 | ||
| 352 | RunInfo runinfo; | |
| 353 | 1 | int runmode = currentSettings.getIntValue(Settings.RUN_MODE); |
| 354 | ||
| 355 | 2 | int base = 0; //Register base is always 0 |
| 356 | 1 | int limit = currentSettings.getIntValue(Settings.MEMORY_SIZE); //Register limit is equal to memsize |
| 357 | ||
| 358 | 2 | animator.init(control.getCpu(), base, limit); |
| 359 | ||
| 360 | 4 | if ((runmode & ANIMATED) != 0) { |
| 361 | 1 | gui.showAnimator(); |
| 362 | } | |
| 363 | ||
| 364 | do { | |
| 365 | 3 | currentState = B91_RUNNING; |
| 366 | 1 | setGUICommandsForCurrentState(); |
| 367 | ||
| 368 | 4 | int nextLine = ((Processor) control.getCpu()).getValueOf(TTK91Cpu.CU_PC_CURRENT); |
| 369 | 3 | gui.selectLine(nextLine, GUI.INSTRUCTIONS_AND_DATA_TABLE); |
| 370 | ||
| 371 | 1 | runmode = currentSettings.getIntValue(Settings.RUN_MODE); |
| 372 | ||
| 373 | try { | |
| 374 | 1 | runinfo = control.runLine(); |
| 375 | 1 | if (runinfo == null) { |
| 376 | break; | |
| 377 | } | |
| 378 | } catch (TTK91NoKbdData needMoreData) { | |
| 379 | /* GUI's KBD-frame is enabled and exectution cannot go on before user has entered | |
| 380 | a number value there. GUI calls GUIBrain's enterInput()-method to send the number | |
| 381 | ahead to Control. | |
| 382 | */ | |
| 383 | 3 | gui.addComment(new Message("Enter a number in the text field above.").toString()); |
| 384 | 3 | gui.updateStatusBar(new Message("Waiting for KBD input...").toString()); |
| 385 | 3 | currentState = B91_WAIT_FOR_KBD; |
| 386 | 1 | setGUICommandsForCurrentState(); |
| 387 | 3 | gui.enable(GUI.INPUT_FIELD); |
| 388 | /* Wait until continueTask() is run. In this case it's done by pressing | |
| 389 | enter-button below the text field where user enter kbd-data. | |
| 390 | */ | |
| 391 | 1 | waitForContinueTask(); |
| 392 | 3 | gui.disable(GUI.INPUT_FIELD); |
| 393 | continue; // And then go to beginning of the do-while-loop. | |
| 394 | ||
| 395 | } catch (TTK91RuntimeException e) { | |
| 396 | 3 | gui.updateStatusBar(new Message("Execution aborted due to an error").toString()); |
| 397 | 2 | gui.addComment(e.getMessage()); |
| 398 | 3 | currentState = INTERRUPTED_WITH_PAUSE; |
| 399 | 1 | setGUICommandsForCurrentState(); |
| 400 | break; | |
| 401 | } | |
| 402 | ||
| 403 | 4 | if ((runmode & COMMENTED) != 0) { |
| 404 | 2 | if (runinfo.getComments() != null) { |
| 405 | 8 | gui.addComment(runinfo.getLineNumber() + ": " + runinfo.getComments()); |
| 406 | } | |
| 407 | } | |
| 408 | ||
| 409 | 1 | animator.stopAnimation(); |
| 410 | 1 | animator.animate(runinfo); |
| 411 | ||
| 412 | 2 | gui.updateStatusBar(runinfo.getComments()); |
| 413 | ||
| 414 | // If the command wrote something to screen, we'll deal with | |
| 415 | // the actual writing. STDOUT writes are dealt with in Control. | |
| 416 | 4 | if (runinfo.isExternalOp() && runinfo.whatOUT() != null) { |
| 417 | // We use a Processor constant to check what device we are | |
| 418 | // writing to. CRT happens to be 0 now, but it might not be | |
| 419 | // "in the future". | |
| 420 | 4 | if (runinfo.whatOUT()[0] == Processor.CRT) { |
| 421 | 4 | gui.addOutputData(runinfo.whatOUT()[1]); |
| 422 | } | |
| 423 | } | |
| 424 | ||
| 425 | 1 | int[] newRegisterValues = runinfo.getRegisters(); |
| 426 | 5 | gui.updateReg(GUI.R0, newRegisterValues[0]); |
| 427 | 5 | gui.updateReg(GUI.R1, newRegisterValues[1]); |
| 428 | 5 | gui.updateReg(GUI.R2, newRegisterValues[2]); |
| 429 | 5 | gui.updateReg(GUI.R3, newRegisterValues[3]); |
| 430 | 5 | gui.updateReg(GUI.R4, newRegisterValues[4]); |
| 431 | 5 | gui.updateReg(GUI.R5, newRegisterValues[5]); |
| 432 | 5 | gui.updateReg(GUI.R6, newRegisterValues[6]); |
| 433 | 5 | gui.updateReg(GUI.R7, newRegisterValues[7]); |
| 434 | 4 | gui.updateReg(GUI.PC, runinfo.getNewPC()); |
| 435 | ||
| 436 | 1 | LinkedList changedMemoryLines = runinfo.getChangedMemoryLines(); |
| 437 | 1 | Iterator changedMemoryLinesListIterator = changedMemoryLines.iterator(); |
| 438 | ||
| 439 | 2 | while (changedMemoryLinesListIterator.hasNext()) { |
| 440 | 1 | Object[] listItem = (Object[]) changedMemoryLinesListIterator.next(); |
| 441 | 3 | int line = ((Integer) listItem[0]).intValue(); |
| 442 | 2 | MemoryLine contents = (MemoryLine) listItem[1]; |
| 443 | 3 | gui.updateInstructionsAndDataTableLine(line, contents.getBinary(), contents.getSymbolic()); |
| 444 | } | |
| 445 | ||
| 446 | 1 | gui.repaint(); |
| 447 | ||
| 448 | 5 | if ((runmode & LINE_BY_LINE) != 0 && noPauses == false) { |
| 449 | 3 | currentState = B91_PAUSED; |
| 450 | 1 | setGUICommandsForCurrentState(); |
| 451 | 1 | waitForContinueTask(); |
| 452 | ||
| 453 | } else { | |
| 454 | try { | |
| 455 | 3 | wait(SLOWDOWN + 1); // Add 1 to avoid the special meaning of 0. |
| 456 | } catch (InterruptedException e) { | |
| 457 | 1 | System.out.println("InterruptedException in menuRun()"); |
| 458 | } | |
| 459 | ||
| 460 | } | |
| 461 | ||
| 462 | 1 | } while (interruptSent == false); // End of do-while -loop |
| 463 | ||
| 464 | 3 | if (currentState == INTERRUPTED_WITH_PAUSE) { |
| 465 | 1 | setGUICommandsForCurrentState(); |
| 466 | 1 | waitForContinueTask(); |
| 467 | } | |
| 468 | ||
| 469 | 1 | load(); |
| 470 | 3 | currentState = B91_NOT_RUNNING; |
| 471 | 1 | setGUICommandsForCurrentState(); |
| 472 | ||
| 473 | 1 | gui.unselectAll(); |
| 474 | ||
| 475 | 1 | gui.addComment(" "); |
| 476 | 3 | gui.addComment(new Message("Execution finished").toString()); |
| 477 | 1 | gui.addComment(" "); |
| 478 | ||
| 479 | 1 | continueTask(); |
| 480 | ||
| 481 | 3 | threadRunning = false; |
| 482 | 1 | continueTask(); |
| 483 | ||
| 484 | } | |
| 485 | ||
| 486 | /** | |
| 487 | * This method is used to save the source after it has been | |
| 488 | * modified in the code window. | |
| 489 | */ | |
| 490 | public void saveSource() { | |
| 491 | try { | |
| 492 | 2 | control.modifySource(gui.getCodeTableContents()); |
| 493 | } catch (IOException e) { | |
| 494 | 2 | gui.showError(e.getMessage()); |
| 495 | } | |
| 496 | } | |
| 497 | ||
| 498 | ||
| 499 | /** | |
| 500 | * This method corresponds to the menu option File -> Compile. It | |
| 501 | * does its work by calling compileLine(). | |
| 502 | */ | |
| 503 | public synchronized void menuCompile() { | |
| 504 | ||
| 505 | 3 | threadRunning = true; |
| 506 | ||
| 507 | 3 | interruptSent = false; |
| 508 | 3 | noPauses = false; |
| 509 | ||
| 510 | 3 | currentState = K91_COMPILING; |
| 511 | 1 | setGUICommandsForCurrentState(); |
| 512 | ||
| 513 | /* compileinfo is set to null now. Null as CompileInfo object means also that | |
| 514 | compilation has finished successfully. We may think that if no line was | |
| 515 | compiled then it would mean a successful compilation as well, so this isn't | |
| 516 | in contradiction to that anyway. | |
| 517 | Really this is set to null because we need compileinfo to be initialized somehow | |
| 518 | in compileLine() methods try-catch clause a few lines below. | |
| 519 | */ | |
| 520 | CompileInfo compileinfo = null; | |
| 521 | ||
| 522 | 1 | int compilemode = currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 523 | int phase; | |
| 524 | ||
| 525 | /* This will be set to true once the compilation succeeds. The value | |
| 526 | of this variable will be used in case of an interrupted compilation | |
| 527 | or if an error occurs, when menuCompile() has to decide whether to | |
| 528 | change back to pre-compilation-started state or not. | |
| 529 | */ | |
| 530 | 2 | boolean compilingCompleted = false; |
| 531 | ||
| 532 | do { | |
| 533 | ||
| 534 | 3 | currentState = K91_COMPILING; |
| 535 | 1 | setGUICommandsForCurrentState(); |
| 536 | ||
| 537 | try { | |
| 538 | 1 | compileinfo = control.compileLine(); |
| 539 | } catch (TTK91CompileException e) { | |
| 540 | /* This section is executed if an error occured during compilation. First | |
| 541 | we preset errorLine and phase to what they would be, if there hasn't | |
| 542 | been any compileinfo before. | |
| 543 | */ | |
| 544 | 2 | int errorLine = 0; |
| 545 | 2 | phase = CompileInfo.FIRST_ROUND; |
| 546 | ||
| 547 | /* Then we check if there has been some compileinfos before and set errorLine | |
| 548 | and phase accordingly if positive. | |
| 549 | */ | |
| 550 | 1 | if (compileinfo != null) { |
| 551 | 4 | errorLine = compileinfo.getLineNumber() + 1; |
| 552 | 1 | phase = compileinfo.getPhase(); |
| 553 | } | |
| 554 | ||
| 555 | 7 | gui.addComment(errorLine + ": " + e.getMessage()); |
| 556 | 3 | gui.updateStatusBar(new Message("Compilation aborted due to an error").toString()); |
| 557 | ||
| 558 | 1 | if (phase == CompileInfo.FIRST_ROUND) { |
| 559 | 3 | gui.selectLine(errorLine, GUI.CODE_TABLE); |
| 560 | 3 | } else if (phase == CompileInfo.SECOND_ROUND) { |
| 561 | 3 | gui.selectLine(errorLine, GUI.INSTRUCTIONS_AND_DATA_TABLE); |
| 562 | } | |
| 563 | ||
| 564 | 3 | currentState = K91_PAUSED; |
| 565 | 1 | setGUICommandsForCurrentState(); |
| 566 | 1 | waitForContinueTask(); |
| 567 | break; | |
| 568 | } | |
| 569 | ||
| 570 | /* Compilation is finished once compileLine() returns null */ | |
| 571 | 1 | if (compileinfo == null) { |
| 572 | 2 | compilingCompleted = true; |
| 573 | break; | |
| 574 | } else { | |
| 575 | 1 | String comments = compileinfo.getComments(); |
| 576 | 1 | if (comments == null) { |
| 577 | comments = ""; | |
| 578 | } | |
| 579 | ||
| 580 | 6 | if ((compilemode & COMMENTED) != 0 && !comments.equals("")) { |
| 581 | 7 | gui.addComment(compileinfo.getLineNumber() + ": " + comments); |
| 582 | } | |
| 583 | ||
| 584 | 1 | gui.updateStatusBar(comments); |
| 585 | ||
| 586 | 1 | compilemode = currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 587 | 1 | phase = compileinfo.getPhase(); |
| 588 | ||
| 589 | 1 | if (phase == CompileInfo.FIRST_ROUND) { |
| 590 | 2 | if (compileinfo.getSymbolFound()) { |
| 591 | 1 | String symbolName = compileinfo.getSymbolName(); |
| 592 | Integer symbolValue = null; | |
| 593 | 2 | if (compileinfo.getSymbolDefined()) { |
| 594 | 2 | symbolValue = new Integer(compileinfo.getSymbolValue()); |
| 595 | } | |
| 596 | 1 | gui.updateRowInSymbolTable(symbolName, symbolValue); |
| 597 | } | |
| 598 | 2 | if (compileinfo.getLabelFound()) { |
| 599 | 1 | String symbolName = compileinfo.getLabelName(); |
| 600 | 2 | Integer symbolValue = new Integer(compileinfo.getLabelValue()); |
| 601 | 1 | gui.updateRowInSymbolTable(symbolName, symbolValue); |
| 602 | } | |
| 603 | ||
| 604 | 4 | gui.selectLine(compileinfo.getLineNumber(), GUI.CODE_TABLE); |
| 605 | 3 | } else if (phase == CompileInfo.FINALIZING_FIRST_ROUND) { |
| 606 | 1 | String[][] symbolTable = compileinfo.getSymbolTable(); |
| 607 | 1 | if (symbolTable != null) { |
| 608 | 5 | for (int i = 0; i < symbolTable.length; i++) { |
| 609 | 2 | String symbolName = symbolTable[i][0]; |
| 610 | Integer symbolValue = null; | |
| 611 | try { | |
| 612 | 3 | symbolValue = new Integer(symbolTable[i][1]); |
| 613 | } catch (NumberFormatException e) { | |
| 614 | } | |
| 615 | 1 | gui.updateRowInSymbolTable(symbolName, symbolValue); |
| 616 | } | |
| 617 | } | |
| 618 | ||
| 619 | 1 | String[] newInstructionsContents = compileinfo.getInstructions(); |
| 620 | 1 | String[] newDataContents = compileinfo.getData(); |
| 621 | 1 | gui.insertToInstructionsTable(newInstructionsContents); |
| 622 | 1 | gui.insertToDataTable(newDataContents); |
| 623 | 3 | gui.setGUIView(3); |
| 624 | ||
| 625 | 3 | } else if (phase == CompileInfo.SECOND_ROUND) { |
| 626 | 1 | int line = compileinfo.getLineNumber(); |
| 627 | 1 | int binary = compileinfo.getLineBinary(); |
| 628 | 1 | gui.updateInstructionsAndDataTableLine(line, binary); |
| 629 | 4 | gui.selectLine(compileinfo.getLineNumber(), GUI.INSTRUCTIONS_AND_DATA_TABLE); |
| 630 | } | |
| 631 | ||
| 632 | 1 | gui.repaint(); |
| 633 | ||
| 634 | 7 | if (((compilemode & PAUSED) != 0) && !comments.equals("") && noPauses == false) { |
| 635 | 3 | currentState = K91_PAUSED; |
| 636 | 1 | setGUICommandsForCurrentState(); |
| 637 | 1 | waitForContinueTask(); |
| 638 | } else { | |
| 639 | try { | |
| 640 | 3 | wait(SLOWDOWN + 1); // Add 1 to avoid the special meaning of 0. |
| 641 | } catch (InterruptedException e) { | |
| 642 | 1 | System.out.println("InterruptedException in menuRun()"); |
| 643 | } | |
| 644 | ||
| 645 | } | |
| 646 | } | |
| 647 | ||
| 648 | 1 | } while (interruptSent == false); // End of do-loop |
| 649 | ||
| 650 | 3 | if (currentState == INTERRUPTED_WITH_PAUSE) { |
| 651 | 1 | setGUICommandsForCurrentState(); |
| 652 | 1 | waitForContinueTask(); |
| 653 | } | |
| 654 | ||
| 655 | 3 | if (compilingCompleted == true) { |
| 656 | try { | |
| 657 | 1 | control.saveBinary(); |
| 658 | 3 | System.out.println(new Message("Program saved to binary file!").toString()); |
| 659 | } catch (IOException e) { | |
| 660 | 1 | System.out.println(e); |
| 661 | } | |
| 662 | 1 | gui.resetAll(); |
| 663 | 1 | gui.addComment(" "); |
| 664 | 3 | gui.addComment(new Message("Compilation finished").toString()); |
| 665 | 1 | gui.addComment(" "); |
| 666 | 1 | loadAndUpdateGUI(); |
| 667 | } else { | |
| 668 | /* Reload the source so that the compiling starts again from the beginning. */ | |
| 669 | try { | |
| 670 | 1 | control.openSource(currentlyOpenedFile); |
| 671 | } catch (IOException e) { | |
| 672 | 2 | gui.showError(e.getMessage()); |
| 673 | 3 | currentState = NONE; |
| 674 | 1 | setGUICommandsForCurrentState(); |
| 675 | return; | |
| 676 | } | |
| 677 | 3 | currentState = K91_NOT_COMPILING; |
| 678 | 1 | setGUICommandsForCurrentState(); |
| 679 | 3 | gui.setGUIView(2); |
| 680 | 1 | gui.resetAll(); |
| 681 | 1 | gui.addComment(" "); |
| 682 | 3 | gui.addComment(new Message("Compilation aborted.").toString()); |
| 683 | 1 | gui.addComment(" "); |
| 684 | 1 | continueTask(); |
| 685 | } | |
| 686 | 3 | threadRunning = false; |
| 687 | 1 | continueTask(); |
| 688 | } | |
| 689 | ||
| 690 | ||
| 691 | /** | |
| 692 | * This method corresponds to the menu option File -> Erase memory. | |
| 693 | */ | |
| 694 | public synchronized void menuEraseMemory() { | |
| 695 | 3 | interruptCurrentTasks(true); |
| 696 | ||
| 697 | /* If there's no other thread running, then waiting for continueTask would | |
| 698 | be futile, since no one will ever notify this method to continue exectution. | |
| 699 | Actually, running waitForContinueTask() would mean dead lock then. | |
| 700 | */ | |
| 701 | 3 | if (threadRunning == true) { |
| 702 | 1 | waitForContinueTask(); |
| 703 | } | |
| 704 | ||
| 705 | 1 | control.eraseMemory(); |
| 706 | // The registers should be zeros now; | |
| 707 | 5 | gui.updateReg(GUI.R0, 0); |
| 708 | 5 | gui.updateReg(GUI.R1, 0); |
| 709 | 5 | gui.updateReg(GUI.R2, 0); |
| 710 | 5 | gui.updateReg(GUI.R3, 0); |
| 711 | 5 | gui.updateReg(GUI.R4, 0); |
| 712 | 5 | gui.updateReg(GUI.R5, 0); |
| 713 | 5 | gui.updateReg(GUI.R6, 0); |
| 714 | 5 | gui.updateReg(GUI.R7, 0); |
| 715 | 5 | gui.updateReg(GUI.PC, 0); |
| 716 | 1 | gui.resetAll(); |
| 717 | ||
| 718 | 3 | gui.updateStatusBar(new Message("Memory contents erased").toString()); |
| 719 | ||
| 720 | 3 | gui.setGUIView(1); |
| 721 | 3 | currentState = NONE; |
| 722 | 1 | setGUICommandsForCurrentState(); |
| 723 | 2 | display.setMem(control.getPhysicalMemory()); |
| 724 | } | |
| 725 | ||
| 726 | ||
| 727 | /** | |
| 728 | * This method corresponds to the menu option File -> Exit. | |
| 729 | */ | |
| 730 | public void menuExit() { | |
| 731 | } | |
| 732 | ||
| 733 | ||
| 734 | /** | |
| 735 | * This method corresponds to the menu option Option -> Set language. | |
| 736 | * If the chosen language is one in the list, then this version is called. | |
| 737 | * | |
| 738 | * @param language Name of the language. This should be one of those get | |
| 739 | * from getAvailableLanguages() method. | |
| 740 | */ | |
| 741 | public void menuSetLanguage(String language) { | |
| 742 | ||
| 743 | 2 | if (availableLanguages.containsKey(language)) { |
| 744 | 2 | Translator.setLocale((Locale) availableLanguages.get(language)); |
| 745 | 1 | currentSettings.setValue(Settings.UI_LANGUAGE, language); |
| 746 | 1 | saveSettings(); |
| 747 | 1 | gui.updateAllTexts(); |
| 748 | } | |
| 749 | } | |
| 750 | ||
| 751 | ||
| 752 | /** | |
| 753 | * This method correspods as well to the menu option Option -> Set language. | |
| 754 | * This version is called, if user has chosen an external language file. | |
| 755 | * | |
| 756 | * @param languageFile The language file. This must be class-file that | |
| 757 | * extends ListResourceBundle. | |
| 758 | */ | |
| 759 | public void menuSetLanguage(File languageFile) { | |
| 760 | ||
| 761 | 2 | if (languageFile.exists()) { |
| 762 | try { | |
| 763 | 2 | Translator.setLocale(Locale.CHINESE, control.loadLanguageFile(languageFile)); |
| 764 | } catch (ResourceLoadFailedException e) { | |
| 765 | 3 | gui.showError(new Message("Not a language file").toString()); |
| 766 | 2 | System.out.println(e.getMessage()); |
| 767 | return; | |
| 768 | } | |
| 769 | //currentSettings.setValue(Settings.UI_LANGUAGE, language); | |
| 770 | //control.saveSettings(currentSettings.toString(), settingsFile); | |
| 771 | 1 | gui.updateAllTexts(); |
| 772 | } | |
| 773 | } | |
| 774 | ||
| 775 | ||
| 776 | /** | |
| 777 | * This method corresponds to the menu option Option -> Set Default Stdin File. | |
| 778 | * It informs Control about the new default stdin file and saves it to | |
| 779 | * settingsFile. | |
| 780 | */ | |
| 781 | public void menuSetStdin(File stdinFile) { | |
| 782 | try { | |
| 783 | 1 | control.setDefaultStdIn(stdinFile); |
| 784 | } catch (Exception e) { | |
| 785 | 2 | gui.showError(e.getMessage()); |
| 786 | return; | |
| 787 | } | |
| 788 | 1 | String filename = stdinFile.getPath(); |
| 789 | 1 | currentSettings.setValue(Settings.DEFAULT_STDIN, filename); |
| 790 | 1 | currentSettings.setValue(Settings.STDIN_PATH, "absolute"); |
| 791 | 1 | saveSettings(); |
| 792 | ||
| 793 | 3 | gui.addComment(new Message("Default stdin file set to {0}", filename).toString()); |
| 794 | } | |
| 795 | ||
| 796 | ||
| 797 | /** | |
| 798 | * This method corresponds to the menu option Option -> Set Default Stdout File. | |
| 799 | * It informs Control about the new default stdout file and saves it to | |
| 800 | * settingsFile. | |
| 801 | */ | |
| 802 | public void menuSetStdout(File stdoutFile, boolean append) { | |
| 803 | 1 | String filename = stdoutFile.getPath(); |
| 804 | ||
| 805 | 3 | if (append == true) { |
| 806 | 1 | currentSettings.setValue(Settings.STDOUT_USE, "append"); |
| 807 | } else { | |
| 808 | 1 | currentSettings.setValue(Settings.STDOUT_USE, "overwrite"); |
| 809 | } | |
| 810 | try { | |
| 811 | 1 | control.setDefaultStdOut(stdoutFile); |
| 812 | } catch (Exception e) { | |
| 813 | 2 | gui.showError(e.getMessage()); |
| 814 | //return; // Allow unwriteable stdout file; the exception'll hit later anyway. | |
| 815 | } | |
| 816 | 1 | currentSettings.setValue(Settings.DEFAULT_STDOUT, filename); |
| 817 | 1 | currentSettings.setValue(Settings.STDOUT_PATH, "absolute"); |
| 818 | 1 | saveSettings(); |
| 819 | ||
| 820 | 3 | gui.addComment(new Message("Default stdout file set to {0}", filename).toString()); |
| 821 | } | |
| 822 | ||
| 823 | ||
| 824 | /** | |
| 825 | * This method corresponds to the menu option Option -> Set Memory Size. | |
| 826 | */ | |
| 827 | public void menuSetMemorySize(int newSize) { | |
| 828 | try { | |
| 829 | 1 | control.changeMemorySize(newSize); |
| 830 | } catch (IllegalArgumentException e) { | |
| 831 | return; | |
| 832 | } | |
| 833 | 1 | currentSettings.setValue(Settings.MEMORY_SIZE, newSize); |
| 834 | 1 | saveSettings(); |
| 835 | 3 | gui.setGUIView(1); |
| 836 | 3 | currentState = NONE; |
| 837 | 1 | setGUICommandsForCurrentState(); |
| 838 | } | |
| 839 | ||
| 840 | ||
| 841 | /** | |
| 842 | * This methods refreshes GUI so that it shows running options as they | |
| 843 | * are declared currently. | |
| 844 | */ | |
| 845 | public void refreshRunningOptions() { | |
| 846 | 1 | int runmode = currentSettings.getIntValue(Settings.RUN_MODE); |
| 847 | 11 | gui.setSelected(GUI.OPTION_RUNNING_PAUSED, (runmode & PAUSED) != 0); |
| 848 | 11 | gui.setSelected(GUI.OPTION_RUNNING_COMMENTED, (runmode & COMMENTED) != 0); |
| 849 | 11 | gui.setSelected(GUI.OPTION_RUNNING_ANIMATED, (runmode & ANIMATED) != 0); |
| 850 | } | |
| 851 | ||
| 852 | public void menuSetRunningOption(int option, boolean b) { | |
| 853 | 1 | int runmode = currentSettings.getIntValue(Settings.RUN_MODE); |
| 854 | 4 | boolean adjustAnimationOff = false, adjustLineByLineOn = false; |
| 855 | ||
| 856 | // First, update running mode. If the option LINE_BY_LINE was turned | |
| 857 | // off, turn ANIMATED off. If the option ANIMATED was turned on, | |
| 858 | // turn LINE_BY_LINE on. | |
| 859 | 7 | if (((runmode & option) != 0) == b) { |
| 860 | // do nothing | |
| 861 | 2 | } else if ((runmode & option) != 0) { |
| 862 | 1 | runmode -= option; // Something was turned off. |
| 863 | // Was it LINE_BY_LINE and is animation on? | |
| 864 | 7 | if (option == LINE_BY_LINE && (runmode & ANIMATED) != 0) { |
| 865 | 2 | adjustAnimationOff = true; |
| 866 | } | |
| 867 | 2 | } else if ((runmode & option) == 0) { |
| 868 | 1 | runmode += option; // Something was turned on. |
| 869 | // Was it ANIMATED and is line-by-line off? | |
| 870 | 7 | if (option == ANIMATED && (runmode & LINE_BY_LINE) == 0) { |
| 871 | 2 | adjustLineByLineOn = true; |
| 872 | } | |
| 873 | } | |
| 874 | ||
| 875 | 1 | currentSettings.setValue(Settings.RUN_MODE, runmode); |
| 876 | 1 | saveSettings(); |
| 877 | ||
| 878 | switch (option) { | |
| 879 | case LINE_BY_LINE: // Synonym for case PAUSED: | |
| 880 | 3 | gui.setSelected(GUI.OPTION_RUNNING_PAUSED, b); |
| 881 | break; | |
| 882 | case COMMENTED: | |
| 883 | 3 | gui.setSelected(GUI.OPTION_RUNNING_COMMENTED, b); |
| 884 | break; | |
| 885 | case ANIMATED: | |
| 886 | 3 | gui.setSelected(GUI.OPTION_RUNNING_ANIMATED, b); |
| 887 | 12 | if (b == true && (currentState == B91_RUNNING |
| 888 | || currentState == B91_PAUSED | |
| 889 | || currentState == B91_WAIT_FOR_KBD)) { | |
| 890 | 1 | gui.showAnimator(); |
| 891 | } else { | |
| 892 | 1 | gui.hideAnimator(); |
| 893 | } | |
| 894 | break; | |
| 895 | } | |
| 896 | // Finally, we repeat the process to a) turn animation off if line-by-line | |
| 897 | // running was turned off, and b) turn line-by-line running on if animation | |
| 898 | // was turned on. Note the lack of infinite looping which we are proud of. | |
| 899 | 1 | if (adjustAnimationOff) { |
| 900 | 5 | menuSetRunningOption(ANIMATED, false); |
| 901 | } | |
| 902 | 1 | if (adjustLineByLineOn) { |
| 903 | 5 | menuSetRunningOption(LINE_BY_LINE, true); |
| 904 | } | |
| 905 | ||
| 906 | } | |
| 907 | ||
| 908 | ||
| 909 | /** | |
| 910 | * This methods refreshes GUI so that it shows compiling options as they | |
| 911 | * are declared currently. | |
| 912 | */ | |
| 913 | public void refreshCompilingOptions() { | |
| 914 | 1 | int compilemode = currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 915 | 11 | gui.setSelected(GUI.OPTION_COMPILING_PAUSED, (compilemode & PAUSED) != 0); |
| 916 | 11 | gui.setSelected(GUI.OPTION_COMPILING_COMMENTED, (compilemode & COMMENTED) != 0); |
| 917 | } | |
| 918 | ||
| 919 | ||
| 920 | /** | |
| 921 | * This method | |
| 922 | */ | |
| 923 | public void menuSetCompilingOption(int option, boolean b) { | |
| 924 | 1 | int compilemode = currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 925 | ||
| 926 | 7 | if (((compilemode & option) != 0) == b) { |
| 927 | // do nothing | |
| 928 | 2 | } else if ((compilemode & option) != 0) { |
| 929 | 1 | compilemode -= option; |
| 930 | 2 | } else if ((compilemode & option) == 0) { |
| 931 | 1 | compilemode += option; |
| 932 | } | |
| 933 | ||
| 934 | 1 | currentSettings.setValue(Settings.COMPILE_MODE, compilemode); |
| 935 | 1 | saveSettings(); |
| 936 | ||
| 937 | switch (option) { | |
| 938 | case PAUSED: | |
| 939 | 3 | gui.setSelected(GUI.OPTION_COMPILING_PAUSED, b); |
| 940 | break; | |
| 941 | case COMMENTED: | |
| 942 | 3 | gui.setSelected(GUI.OPTION_COMPILING_COMMENTED, b); |
| 943 | break; | |
| 944 | } | |
| 945 | } | |
| 946 | ||
| 947 | ||
| 948 | public void menuAbout() { | |
| 949 | } | |
| 950 | ||
| 951 | ||
| 952 | public void menuManual() { | |
| 953 | } | |
| 954 | ||
| 955 | ||
| 956 | /** | |
| 957 | * This method corresponds to a request to interrupt whatever we | |
| 958 | * were doing once it becomes possible. | |
| 959 | * | |
| 960 | * @param immediate If this is true, then continueTask is being waited before | |
| 961 | * the previous job ends. | |
| 962 | * If this is false, then it stops immediately and next job | |
| 963 | * can start right after calling this. | |
| 964 | */ | |
| 965 | public void menuInterrupt(boolean immediate) { | |
| 966 | 3 | gui.updateStatusBar(new Message("Current operation aborted").toString()); |
| 967 | 1 | interruptCurrentTasks(immediate); |
| 968 | } | |
| 969 | ||
| 970 | ||
| 971 | /** | |
| 972 | * Notifies all currents tasks to be interrupted once they are able to read the | |
| 973 | * new value of interruptSent. Immediate interruption means that all tasks should | |
| 974 | * end without any further activities, while non-immediate interruption means | |
| 975 | * that some tasks may pause to wait for continueTask() to notify them before | |
| 976 | * ending completely. | |
| 977 | * | |
| 978 | * @param immediate If this is true, then continueTask is being waited before | |
| 979 | * the previous job ends. | |
| 980 | * If this is false, then it stops immediately and next job | |
| 981 | * can start right after calling this. | |
| 982 | */ | |
| 983 | private void interruptCurrentTasks(boolean immediate) { | |
| 984 | 3 | if (immediate == true) { |
| 985 | 3 | currentState = INTERRUPTED_WITHOUT_PAUSE; |
| 986 | } else { | |
| 987 | 3 | currentState = INTERRUPTED_WITH_PAUSE; |
| 988 | } | |
| 989 | ||
| 990 | 3 | interruptSent = true; |
| 991 | synchronized (this) { | |
| 992 | 1 | notifyAll(); |
| 993 | } | |
| 994 | } | |
| 995 | ||
| 996 | ||
| 997 | /** | |
| 998 | * Notifies all methods,that have called waitForContinueTask() to continue | |
| 999 | * their operation. | |
| 1000 | */ | |
| 1001 | public void continueTask() { | |
| 1002 | synchronized (this) { | |
| 1003 | 1 | notify(); |
| 1004 | } | |
| 1005 | return; | |
| 1006 | } | |
| 1007 | ||
| 1008 | ||
| 1009 | /** | |
| 1010 | * Notifies all methods, that have called waitForContinueTask() to continue | |
| 1011 | * their operation plus informs them that waitForContinueTask() should no | |
| 1012 | * longer be called during current operation. | |
| 1013 | */ | |
| 1014 | public void continueTaskWithoutPauses() { | |
| 1015 | 3 | noPauses = true; |
| 1016 | synchronized (this) { | |
| 1017 | 1 | notify(); |
| 1018 | } | |
| 1019 | return; | |
| 1020 | } | |
| 1021 | ||
| 1022 | ||
| 1023 | /** | |
| 1024 | * A method can call this, if it wants enter into pause mode and wait for someone | |
| 1025 | * to call continueTask() or continueTaskWithoutPauses() methods. This method cannot | |
| 1026 | * however be used, unless the method which is calling this hasn't been set to run | |
| 1027 | * in a thread of its own. eg. by calling new GUIThreader() | |
| 1028 | */ | |
| 1029 | public void waitForContinueTask() { | |
| 1030 | ||
| 1031 | synchronized (this) { | |
| 1032 | try { | |
| 1033 | 1 | wait(); |
| 1034 | } catch (InterruptedException e) { | |
| 1035 | 1 | System.out.println("InterruptedException"); |
| 1036 | } | |
| 1037 | } | |
| 1038 | return; | |
| 1039 | } | |
| 1040 | ||
| 1041 | ||
| 1042 | /** | |
| 1043 | * Returns all available languages. These (and only these) can be used as parameter | |
| 1044 | * for setLanguge(String) method. | |
| 1045 | */ | |
| 1046 | public String[] getAvailableLanguages() { | |
| 1047 | 2 | Object[] keys = availableLanguages.keySet().toArray(); |
| 1048 | String[] str = new String[keys.length]; | |
| 1049 | 5 | for (int i = 0; i < keys.length; i++) { |
| 1050 | str[i] = (String) keys[i]; | |
| 1051 | } | |
| 1052 | 1 | return str; |
| 1053 | } | |
| 1054 | ||
| 1055 | ||
| 1056 | // Private methods. --------------------------------------------------- | |
| 1057 | ||
| 1058 | ||
| 1059 | /** | |
| 1060 | * Makes sure that currentSettings contains at least the default values for each | |
| 1061 | * key, if they cannot be obtained from settingsFile. | |
| 1062 | */ | |
| 1063 | private void getCurrentSettings() throws IOException { | |
| 1064 | 5 | String defaultStdinFile = System.getProperty("user.dir") + "/stdin"; |
| 1065 | String defaultStdinPath = "absolute"; | |
| 1066 | 5 | String defaultStdoutFile = System.getProperty("user.dir") + "/stdout"; |
| 1067 | String defaultStdoutPath = "absolute"; | |
| 1068 | String defaultStdoutUse = "overwrite"; | |
| 1069 | 2 | int defaultMemorySize = Control.DEFAULT_MEMORY_SIZE; |
| 1070 | String defaultUILanguage = "English"; | |
| 1071 | 2 | int defaultRunningMode = 0; |
| 1072 | 2 | int defaultCompilingMode = 0; |
| 1073 | 2 | boolean useDefaultSettings = false; |
| 1074 | InputStream defaultSettingsStream = null; | |
| 1075 | ||
| 1076 | //URI fileURI; | |
| 1077 | ||
| 1078 | //try { | |
| 1079 | // fileURI = new URI( getClass().getClassLoader().getResource(programPath).toString() + "etc/settings.cfg" ); | |
| 1080 | // settingsFile = new File(fileURI); | |
| 1081 | 3 | settingsFile = new File(System.getProperty("user.home"), "titokone.cfg"); |
| 1082 | //} | |
| 1083 | //catch (Exception e) { | |
| 1084 | // System.out.println("Main path not found!...exiting"); | |
| 1085 | // System.exit(0); | |
| 1086 | //} | |
| 1087 | ||
| 1088 | // First, check if the user has a settings file. Otherwise we'll use the default | |
| 1089 | // file in <the class directory>etc/settings.cfg. | |
| 1090 | 2 | if (settingsFile.exists() == false) { |
| 1091 | 2 | useDefaultSettings = true; |
| 1092 | // (Creating a new settings file will not be necessary; the settings saving | |
| 1093 | // will take care of it. In fact, we do not want to uselessly create an empty | |
| 1094 | // settings file to confuse us on the next run. But we will want to check | |
| 1095 | // if we are allowed to.) | |
| 1096 | 1 | settingsFile.createNewFile(); // May throw an IOException. |
| 1097 | 1 | settingsFile.delete(); // May throw an IOException, hardly if createNewFile didn't. |
| 1098 | } | |
| 1099 | ||
| 1100 | String settingsFileContents = ""; | |
| 1101 | try { | |
| 1102 | 1 | if (!useDefaultSettings) { // Use user's own settings file. |
| 1103 | 1 | settingsFileContents = control.loadSettingsFileContents(settingsFile); |
| 1104 | logger.info("Used user's own settings file."); | |
| 1105 | } else { // Use default settings file. | |
| 1106 | 2 | ClassLoader loader = getClass().getClassLoader(); |
| 1107 | 5 | defaultSettingsStream = loader.getResourceAsStream(programPath + |
| 1108 | "etc/settings.cfg"); | |
| 1109 | 1 | settingsFileContents = control.loadSettingsStreamContents(defaultSettingsStream); |
| 1110 | logger.info("Used default settings file."); | |
| 1111 | } | |
| 1112 | } catch (IOException e) { | |
| 1113 | logger.warning("Error while reading " + | |
| 1114 | (useDefaultSettings ? "default" : "user's") + | |
| 1115 | " settings file."); | |
| 1116 | throw e; | |
| 1117 | } | |
| 1118 | ||
| 1119 | try { | |
| 1120 | 2 | currentSettings = new Settings(settingsFileContents); |
| 1121 | } catch (Exception e) { | |
| 1122 | logger.warning("Parse error in settings file, using hard-coded defaults."); | |
| 1123 | 2 | currentSettings = new Settings(); // Create an empty settings instance. |
| 1124 | } | |
| 1125 | ||
| 1126 | ||
| 1127 | try { | |
| 1128 | 2 | if (currentSettings.getStrValue(Settings.STDIN_PATH) == null) { |
| 1129 | 1 | currentSettings.setValue(Settings.STDIN_PATH, defaultStdinPath); |
| 1130 | } | |
| 1131 | } catch (Exception e) { | |
| 1132 | 1 | currentSettings.setValue(Settings.STDIN_PATH, defaultStdinPath); |
| 1133 | } | |
| 1134 | ||
| 1135 | try { | |
| 1136 | 2 | if (currentSettings.getStrValue(Settings.DEFAULT_STDIN) == null) { |
| 1137 | 1 | currentSettings.setValue(Settings.DEFAULT_STDIN, defaultStdinFile); |
| 1138 | } | |
| 1139 | } catch (Exception e) { | |
| 1140 | 1 | currentSettings.setValue(Settings.DEFAULT_STDIN, defaultStdinFile); |
| 1141 | } | |
| 1142 | ||
| 1143 | try { | |
| 1144 | 2 | if (currentSettings.getStrValue(Settings.STDOUT_PATH) == null) { |
| 1145 | 1 | currentSettings.setValue(Settings.STDOUT_PATH, defaultStdoutPath); |
| 1146 | } | |
| 1147 | } catch (Exception e) { | |
| 1148 | 1 | currentSettings.setValue(Settings.STDOUT_PATH, defaultStdoutPath); |
| 1149 | } | |
| 1150 | ||
| 1151 | try { | |
| 1152 | 2 | if (currentSettings.getStrValue(Settings.DEFAULT_STDOUT) == null) { |
| 1153 | 1 | currentSettings.setValue(Settings.DEFAULT_STDOUT, defaultStdoutFile); |
| 1154 | } | |
| 1155 | } catch (Exception e) { | |
| 1156 | 1 | currentSettings.setValue(Settings.DEFAULT_STDOUT, defaultStdoutFile); |
| 1157 | } | |
| 1158 | ||
| 1159 | try { | |
| 1160 | 2 | if (currentSettings.getStrValue(Settings.STDOUT_USE) == null) { |
| 1161 | 1 | currentSettings.setValue(Settings.STDOUT_USE, defaultStdoutUse); |
| 1162 | } | |
| 1163 | } catch (Exception e) { | |
| 1164 | 1 | currentSettings.setValue(Settings.STDOUT_USE, defaultStdoutUse); |
| 1165 | } | |
| 1166 | ||
| 1167 | try { | |
| 1168 | 1 | currentSettings.getIntValue(Settings.MEMORY_SIZE); |
| 1169 | } catch (Exception e) { | |
| 1170 | 1 | currentSettings.setValue(Settings.MEMORY_SIZE, defaultMemorySize); |
| 1171 | } | |
| 1172 | ||
| 1173 | try { | |
| 1174 | 2 | if (currentSettings.getStrValue(Settings.UI_LANGUAGE) == null) { |
| 1175 | 1 | currentSettings.setValue(Settings.UI_LANGUAGE, defaultUILanguage); |
| 1176 | } | |
| 1177 | } catch (Exception e) { | |
| 1178 | 1 | currentSettings.setValue(Settings.UI_LANGUAGE, defaultUILanguage); |
| 1179 | } | |
| 1180 | ||
| 1181 | try { | |
| 1182 | 1 | currentSettings.getIntValue(Settings.RUN_MODE); |
| 1183 | } catch (Exception e) { | |
| 1184 | 1 | currentSettings.setValue(Settings.RUN_MODE, defaultRunningMode); |
| 1185 | } | |
| 1186 | ||
| 1187 | try { | |
| 1188 | 1 | currentSettings.getIntValue(Settings.COMPILE_MODE); |
| 1189 | } catch (Exception e) { | |
| 1190 | 1 | currentSettings.setValue(Settings.COMPILE_MODE, defaultCompilingMode); |
| 1191 | } | |
| 1192 | } | |
| 1193 | ||
| 1194 | ||
| 1195 | /** | |
| 1196 | * This just loads the opened b91-program into Titokone's memory without updating | |
| 1197 | * GUI anyway. However, GUI is told to show an error message, if the loaded program | |
| 1198 | * is too large and thus Titokone is out of memory. | |
| 1199 | * | |
| 1200 | * @return LoadInfo object, which contains information about the loading process. | |
| 1201 | */ | |
| 1202 | private LoadInfo load() { | |
| 1203 | ||
| 1204 | LoadInfo loadinfo; | |
| 1205 | try { | |
| 1206 | 1 | loadinfo = control.load(); |
| 1207 | } catch (TTK91AddressOutOfBounds e) { | |
| 1208 | 3 | gui.showError(new Message("Titokone out of memory").toString()); |
| 1209 | 2 | return control.getPendingLoadInfo(); // This is null; load really failed. |
| 1210 | } catch (TTK91NoStdInData e) { | |
| 1211 | 1 | File[] appDefs = control.getApplicationDefinitions(); |
| 1212 | 6 | String[] stdinFilePath = {getCurrentDefaultStdinFile().getPath()}; |
| 1213 | 3 | if (appDefs[Control.DEF_STDIN_POS] != null) { |
| 1214 | 5 | stdinFilePath[0] = appDefs[Control.DEF_STDIN_POS].getPath(); |
| 1215 | } | |
| 1216 | ||
| 1217 | //gui.showError(new Message("Stdin file {0} is not in valid format or it doesn't exist", stdinFilePath).toString()); | |
| 1218 | //gui.addComment(e.getMessage()); // The message is already translated. | |
| 1219 | 2 | return control.getPendingLoadInfo(); // This is != null; load succeeded. |
| 1220 | } | |
| 1221 | ||
| 1222 | 1 | return loadinfo; |
| 1223 | ||
| 1224 | } | |
| 1225 | ||
| 1226 | ||
| 1227 | /** | |
| 1228 | * Load the program into Titokone's memory and update's GUI to show the new memory contents | |
| 1229 | * and register values and such. | |
| 1230 | */ | |
| 1231 | private void loadAndUpdateGUI() { | |
| 1232 | 1 | LoadInfo loadinfo = load(); |
| 1233 | ||
| 1234 | 1 | if (loadinfo != null) { |
| 1235 | 2 | gui.updateStatusBar(loadinfo.getStatusMessage()); |
| 1236 | 4 | gui.updateReg(GUI.SP, loadinfo.getSP()); |
| 1237 | 4 | gui.updateReg(GUI.FP, loadinfo.getFP()); |
| 1238 | ||
| 1239 | 1 | String[][] symbolsAndValues = loadinfo.getSymbolTable(); |
| 1240 | 1 | gui.insertSymbolTable(symbolsAndValues); |
| 1241 | ||
| 1242 | 1 | int instructionsBinary[] = loadinfo.getBinaryCommands(); |
| 1243 | 1 | String instructionsSymbolic[] = loadinfo.getSymbolicCommands(); |
| 1244 | ||
| 1245 | 1 | int dataBinary[] = loadinfo.getData(); // Full memory excepting code area. |
| 1246 | // The symbolic data depends on two things: The Loader should add | |
| 1247 | // symbolic versions of the initial data area, and the RandomAccessMemory | |
| 1248 | // should add NOPs on 0 lines. The latter does not currently happen, | |
| 1249 | // but can be changed if it is deemed better. | |
| 1250 | String dataSymbolic[]; | |
| 1251 | // Only show symbolic forms of the initial data area, not below it? | |
| 1252 | 1 | if (GUIBrain.ENABLE_DATA_AREA_MARKUP) { |
| 1253 | 1 | dataSymbolic = loadinfo.getDataAreaSymbolic(); |
| 1254 | } else { | |
| 1255 | 1 | dataSymbolic = loadinfo.getDataSymbolic(); |
| 1256 | } | |
| 1257 | 1 | gui.insertToInstructionsTable(instructionsBinary, instructionsSymbolic); |
| 1258 | 1 | gui.insertToDataTable(dataBinary, dataSymbolic); |
| 1259 | ||
| 1260 | 2 | gui.addComment(loadinfo.getComments()); |
| 1261 | ||
| 1262 | 3 | currentState = B91_NOT_RUNNING; |
| 1263 | 1 | setGUICommandsForCurrentState(); |
| 1264 | 3 | gui.setGUIView(3); |
| 1265 | 2 | display.setMem(control.getPhysicalMemory()); |
| 1266 | } | |
| 1267 | } | |
| 1268 | ||
| 1269 | ||
| 1270 | /** | |
| 1271 | * Saves currentSettings to settingsFile. | |
| 1272 | */ | |
| 1273 | private void saveSettings() { | |
| 1274 | try { | |
| 1275 | 2 | control.saveSettings(currentSettings.toString(), settingsFile); |
| 1276 | } catch (IOException e) { | |
| 1277 | 5 | String[] name = {settingsFile.getName()}; |
| 1278 | 3 | gui.showError(new Message("{0} is inaccessible", name).toString()); |
| 1279 | } | |
| 1280 | } | |
| 1281 | ||
| 1282 | ||
| 1283 | /** | |
| 1284 | * This method returns the default stdout file, which is the one declared in currentSettings. | |
| 1285 | */ | |
| 1286 | private File getCurrentDefaultStdoutFile() { | |
| 1287 | ||
| 1288 | 6 | File currentStdoutFile = new File(System.getProperty("user.dir") + DEFAULT_STDOUT_FILENAME); |
| 1289 | ||
| 1290 | 1 | String filemode = currentSettings.getStrValue(Settings.STDOUT_PATH); |
| 1291 | 1 | String path = currentSettings.getStrValue(Settings.DEFAULT_STDOUT); |
| 1292 | ||
| 1293 | 3 | if (path != null && !path.equals("")) { |
| 1294 | 2 | if (filemode.equals("absolute")) { |
| 1295 | 1 | currentStdoutFile = new File(path); |
| 1296 | 2 | } else if (filemode.equals("relative")) { |
| 1297 | 6 | currentStdoutFile = new File(System.getProperty("user.dir") + path); |
| 1298 | } | |
| 1299 | } | |
| 1300 | ||
| 1301 | 1 | return currentStdoutFile; |
| 1302 | } | |
| 1303 | ||
| 1304 | ||
| 1305 | /** | |
| 1306 | * This method returns the default stdin file, which is the one declared in currentSettings. | |
| 1307 | */ | |
| 1308 | private File getCurrentDefaultStdinFile() { | |
| 1309 | ||
| 1310 | 2 | File currentStdinFile = new File(System.getProperty("user.dir"), DEFAULT_STDIN_FILENAME); |
| 1311 | ||
| 1312 | 1 | String filemode = currentSettings.getStrValue(Settings.STDIN_PATH); |
| 1313 | 1 | String path = currentSettings.getStrValue(Settings.DEFAULT_STDIN); |
| 1314 | ||
| 1315 | 3 | if (path != null && !path.equals("")) { |
| 1316 | 2 | if (filemode.equals("absolute")) { |
| 1317 | 1 | currentStdinFile = new File(path); |
| 1318 | 2 | } else if (filemode.equals("relative")) { |
| 1319 | 2 | currentStdinFile = new File(System.getProperty("user.dir"), path); |
| 1320 | } | |
| 1321 | } | |
| 1322 | ||
| 1323 | 1 | return currentStdinFile; |
| 1324 | } | |
| 1325 | ||
| 1326 | ||
| 1327 | /** | |
| 1328 | * This method determines the available languages. It reads them from | |
| 1329 | * a setup file languages.cfg, which contains lineseparator-delimited | |
| 1330 | * sets of language-name, language-id, (country), eg. | |
| 1331 | * "Finnish, fi", or "English (GB), en, GB". | |
| 1332 | */ | |
| 1333 | private void findAvailableLanguages() { | |
| 1334 | InputStream fileStream = null; | |
| 1335 | //URI fileURI; | |
| 1336 | //File languageFile = null; | |
| 1337 | ||
| 1338 | //try { | |
| 1339 | //fileURI = new URI( getClass().getClassLoader().getResource(programPath).toString() + "etc/languages.cfg" ); | |
| 1340 | //languageFile = new File(fileURI); | |
| 1341 | 2 | ClassLoader loader = getClass().getClassLoader(); |
| 1342 | 5 | fileStream = loader.getResourceAsStream(programPath + "etc/languages.cfg"); |
| 1343 | //} | |
| 1344 | //catch (Exception e) { | |
| 1345 | // System.out.println("Main path not found!...exiting"); | |
| 1346 | // System.exit(0); | |
| 1347 | //} | |
| 1348 | ||
| 1349 | String languageName, language, country, variant; | |
| 1350 | ||
| 1351 | 1 | if (fileStream != null) { |
| 1352 | String languageFileContents; | |
| 1353 | try { | |
| 1354 | 1 | languageFileContents = control.loadSettingsStreamContents(fileStream); |
| 1355 | } catch (IOException e) { | |
| 1356 | logger.warning("IOException in language settings file."); | |
| 1357 | return; | |
| 1358 | } | |
| 1359 | ||
| 1360 | 1 | String[] languageFileRow = languageFileContents.split("\n|\r|\r\n"); |
| 1361 | ||
| 1362 | /* Split each row of language.cfg into separate strings and | |
| 1363 | tokenize these strings by a colon. If there are two or three | |
| 1364 | tokens on each row, then everything goes well. Otherwise | |
| 1365 | the language.cfg is not a proper language file for this program. | |
| 1366 | */ | |
| 1367 | 5 | for (int i = 0; i < languageFileRow.length; i++) { |
| 1368 | 1 | String[] token = languageFileRow[i].split("="); |
| 1369 | 3 | if (token.length != 2) { |
| 1370 | 1 | System.out.println("Parse error in language file"); |
| 1371 | return; | |
| 1372 | } | |
| 1373 | 3 | languageName = token[0].trim(); |
| 1374 | ||
| 1375 | 3 | token = token[1].split("\\."); |
| 1376 | 3 | if (token.length == 1) { |
| 1377 | 3 | language = token[0].trim(); |
| 1378 | 2 | availableLanguages.put(languageName, new Locale(language)); |
| 1379 | 3 | } else if (token.length == 2) { |
| 1380 | 3 | language = token[0].trim(); |
| 1381 | 3 | country = token[1].trim(); |
| 1382 | 2 | availableLanguages.put(languageName, new Locale(language, country)); |
| 1383 | 3 | } else if (token.length == 3) { |
| 1384 | 3 | language = token[0].trim(); |
| 1385 | 3 | country = token[1].trim(); |
| 1386 | 3 | variant = token[2].trim(); |
| 1387 | 2 | availableLanguages.put(languageName, new Locale(language, country, variant)); |
| 1388 | } else { | |
| 1389 | 1 | System.out.println("Parse error in language file"); |
| 1390 | } | |
| 1391 | } | |
| 1392 | } | |
| 1393 | } | |
| 1394 | ||
| 1395 | ||
| 1396 | public static String getExtension(File f) { | |
| 1397 | String ext = null; | |
| 1398 | 1 | String s = f.getName(); |
| 1399 | 3 | int i = s.lastIndexOf('.'); |
| 1400 | ||
| 1401 | 8 | if (i > 0 && i < s.length() - 1) { |
| 1402 | 5 | ext = s.substring(i + 1).toLowerCase(); |
| 1403 | } | |
| 1404 | 1 | return ext; |
| 1405 | } | |
| 1406 | ||
| 1407 | ||
| 1408 | /** | |
| 1409 | * Sets GUI to correspond the current state of program, which means that some | |
| 1410 | * buttons should be enables while others not. | |
| 1411 | */ | |
| 1412 | private void setGUICommandsForCurrentState() { | |
| 1413 | switch (currentState) { | |
| 1414 | case NONE: | |
| 1415 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1416 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1417 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1418 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1419 | 3 | gui.disable(GUI.STOP_COMMAND); |
| 1420 | break; | |
| 1421 | ||
| 1422 | case B91_NOT_RUNNING: | |
| 1423 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1424 | 3 | gui.enable(GUI.RUN_COMMAND); |
| 1425 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1426 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1427 | 3 | gui.disable(GUI.STOP_COMMAND); |
| 1428 | break; | |
| 1429 | ||
| 1430 | case B91_RUNNING: | |
| 1431 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1432 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1433 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1434 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1435 | 3 | gui.enable(GUI.STOP_COMMAND); |
| 1436 | break; | |
| 1437 | ||
| 1438 | case B91_PAUSED: | |
| 1439 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1440 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1441 | 3 | gui.enable(GUI.CONTINUE_COMMAND); |
| 1442 | 3 | gui.enable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1443 | 3 | gui.enable(GUI.STOP_COMMAND); |
| 1444 | break; | |
| 1445 | ||
| 1446 | case B91_WAIT_FOR_KBD: | |
| 1447 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1448 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1449 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1450 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1451 | 3 | gui.enable(GUI.STOP_COMMAND); |
| 1452 | break; | |
| 1453 | ||
| 1454 | case K91_NOT_COMPILING: | |
| 1455 | 3 | gui.enable(GUI.COMPILE_COMMAND); |
| 1456 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1457 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1458 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1459 | 3 | gui.disable(GUI.STOP_COMMAND); |
| 1460 | 3 | gui.enable(GUI.CODE_TABLE_EDITING); |
| 1461 | break; | |
| 1462 | ||
| 1463 | case K91_COMPILING: | |
| 1464 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1465 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1466 | 3 | gui.disable(GUI.CONTINUE_COMMAND); |
| 1467 | 3 | gui.disable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1468 | 3 | gui.enable(GUI.STOP_COMMAND); |
| 1469 | 3 | gui.disable(GUI.CODE_TABLE_EDITING); |
| 1470 | break; | |
| 1471 | ||
| 1472 | case K91_PAUSED: | |
| 1473 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1474 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1475 | 3 | gui.enable(GUI.CONTINUE_COMMAND); |
| 1476 | 3 | gui.enable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1477 | 3 | gui.enable(GUI.STOP_COMMAND); |
| 1478 | 3 | gui.disable(GUI.CODE_TABLE_EDITING); |
| 1479 | break; | |
| 1480 | ||
| 1481 | case INTERRUPTED_WITH_PAUSE: | |
| 1482 | 3 | gui.disable(GUI.COMPILE_COMMAND); |
| 1483 | 3 | gui.disable(GUI.RUN_COMMAND); |
| 1484 | 3 | gui.enable(GUI.CONTINUE_COMMAND); |
| 1485 | 3 | gui.enable(GUI.CONTINUE_WITHOUT_PAUSES_COMMAND); |
| 1486 | 3 | gui.disable(GUI.STOP_COMMAND); |
| 1487 | break; | |
| 1488 | ||
| 1489 | } | |
| 1490 | } | |
| 1491 | } | |
Mutations | ||
| 35 |
Removed assignment to member variable SLOWDOWN : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 64 |
Removed assignment to member variable programPath : NO_COVERAGE |
|
| 132 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 141 |
Removed assignment to member variable gui : NO_COVERAGE |
|
| 144 |
removed call to java/io/File::<init> : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE |
|
| 145 |
removed call to java/io/File::<init> : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE |
|
| 148 |
removed call to java/io/File::exists : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 149 |
removed call to java/io/File::createNewFile : NO_COVERAGE |
|
| 150 |
removed call to java/io/File::delete : NO_COVERAGE |
|
| 155 |
removed call to fi/helsinki/cs/titokone/Control::<init> : NO_COVERAGE Removed assignment to member variable control : NO_COVERAGE |
|
| 157 |
Removed assignment to member variable animator : NO_COVERAGE |
|
| 158 |
Removed assignment to member variable display : NO_COVERAGE |
|
| 161 |
removed call to fi/helsinki/cs/titokone/GUIBrain::getCurrentSettings : NO_COVERAGE |
|
| 163 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 164 |
Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/System::exit : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 168 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 169 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 171 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 172 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 173 |
removed call to java/io/File::<init> : NO_COVERAGE |
|
| 174 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 175 |
removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/io/File::<init> : NO_COVERAGE |
|
| 179 |
removed call to fi/helsinki/cs/titokone/Control::setDefaultStdIn : NO_COVERAGE |
|
| 185 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 186 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 188 |
negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 189 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 190 |
removed call to java/io/File::<init> : NO_COVERAGE |
|
| 191 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 192 |
removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/io/File::<init> : NO_COVERAGE |
|
| 196 |
removed call to fi/helsinki/cs/titokone/Control::setDefaultStdOut : NO_COVERAGE |
|
| 201 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 202 |
negated conditional : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 203 |
Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 204 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 206 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 207 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 208 |
Replaced bitwise AND with OR : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 210 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 211 |
negated conditional : NO_COVERAGE Substituted 15 with 16 : NO_COVERAGE Replaced constant value of 15 with 16 : NO_COVERAGE |
|
| 213 |
removed call to fi/helsinki/cs/titokone/Control::changeMemorySize : NO_COVERAGE |
|
| 215 |
Substituted 15 with 16 : NO_COVERAGE Replaced constant value of 15 with 16 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Control::changeMemorySize : NO_COVERAGE |
|
| 220 |
Removed assignment to member variable availableLanguages : NO_COVERAGE removed call to java/util/Hashtable::<init> : NO_COVERAGE |
|
| 221 |
removed call to fi/helsinki/cs/titokone/GUIBrain::findAvailableLanguages : NO_COVERAGE |
|
| 223 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 225 |
removed call to java/util/Hashtable::containsKey : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 226 |
removed call to java/util/Hashtable::get : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Translator::setLocale : NO_COVERAGE |
|
| 231 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable noPauses : NO_COVERAGE |
|
| 232 |
Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable interruptSent : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 237 |
Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 248 |
removed call to fi/helsinki/cs/titokone/GUIBrain::interruptCurrentTasks : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 250 |
removed call to fi/helsinki/cs/titokone/GUIBrain::getExtension : NO_COVERAGE |
|
| 252 |
removed call to fi/helsinki/cs/titokone/GUI::resetAll : NO_COVERAGE |
|
| 254 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 256 |
removed call to fi/helsinki/cs/titokone/Control::openBinary : NO_COVERAGE |
|
| 258 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to java/lang/Exception::getMessage : NO_COVERAGE |
|
| 262 |
removed call to fi/helsinki/cs/titokone/GUIBrain::loadAndUpdateGUI : NO_COVERAGE |
|
| 264 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 265 |
removed call to fi/helsinki/cs/titokone/GUI::resetAll : NO_COVERAGE |
|
| 270 |
removed call to fi/helsinki/cs/titokone/Control::openSource : NO_COVERAGE |
|
| 272 |
removed call to java/io/IOException::getMessage : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE |
|
| 276 |
Removed assignment to member variable currentlyOpenedFile : NO_COVERAGE |
|
| 278 |
removed call to java/lang/String::split : NO_COVERAGE |
|
| 279 |
removed call to fi/helsinki/cs/titokone/GUI::insertToCodeTable : NO_COVERAGE |
|
| 280 |
removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE |
|
| 282 |
removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 284 |
Substituted 5 with -1 : NO_COVERAGE Substituted 5 with 6 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 285 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 289 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 299 |
Substituted 1 with 0 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 302 |
removed call to java/lang/Integer::parseInt : NO_COVERAGE |
|
| 304 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::changeTextInEnterNumberLabel : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 305 |
removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE |
|
| 306 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE |
|
| 309 |
negated conditional : NO_COVERAGE Substituted 2147483647 with -2147483648 : NO_COVERAGE Substituted -2147483648 with -2147483647 : NO_COVERAGE Replaced constant value of 2147483647 with -2147483648 : NO_COVERAGE Replaced constant value of -2147483648 with -2147483647 : NO_COVERAGE changed conditional boundary : NO_COVERAGE negated conditional : NO_COVERAGE changed conditional boundary : NO_COVERAGE |
|
| 310 |
removed call to fi/helsinki/cs/titokone/GUI::changeTextInEnterNumberLabel : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 311 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 312 |
replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 315 |
removed call to fi/helsinki/cs/titokone/GUI::changeTextInEnterNumberLabel : NO_COVERAGE |
|
| 316 |
removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 318 |
removed call to fi/helsinki/cs/titokone/Control::keyboardInput : NO_COVERAGE |
|
| 319 |
Substituted 1 with 0 : NO_COVERAGE replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 329 |
Removed assignment to member variable threadRunning : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 331 |
Removed assignment to member variable interruptSent : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 332 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable noPauses : NO_COVERAGE |
|
| 337 |
removed call to fi/helsinki/cs/titokone/GUIBrain::getCurrentDefaultStdoutFile : NO_COVERAGE |
|
| 338 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 340 |
removed call to java/io/File::exists : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 341 |
removed call to java/io/File::delete : NO_COVERAGE |
|
| 343 |
removed call to java/io/File::createNewFile : NO_COVERAGE |
|
| 345 |
Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to java/io/File::getName : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 346 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 353 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 355 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 356 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 358 |
removed call to fi/helsinki/cs/titokone/Control::getCpu : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Animator::init : NO_COVERAGE |
|
| 360 |
negated conditional : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE |
|
| 361 |
removed call to fi/helsinki/cs/titokone/GUI::showAnimator : NO_COVERAGE |
|
| 365 |
Substituted 2 with 3 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 366 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 368 |
Replaced constant value of 204 with 205 : NO_COVERAGE Substituted 204 with 205 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Control::getCpu : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Processor::getValueOf : NO_COVERAGE |
|
| 369 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::selectLine : NO_COVERAGE |
|
| 371 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 374 |
removed call to fi/helsinki/cs/titokone/Control::runLine : NO_COVERAGE |
|
| 375 |
negated conditional : NO_COVERAGE |
|
| 383 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 384 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 385 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 386 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 387 |
Substituted 5 with 6 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 5 with -1 : NO_COVERAGE |
|
| 391 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 392 |
Substituted 5 with 6 : NO_COVERAGE Substituted 5 with -1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 396 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 397 |
removed call to fi/helsinki/cs/ttk91/TTK91RuntimeException::getMessage : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 398 |
Replaced constant value of 11 with 12 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 11 with 12 : NO_COVERAGE |
|
| 399 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 403 |
Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 404 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/RunInfo::getComments : NO_COVERAGE |
|
| 405 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to fi/helsinki/cs/titokone/RunInfo::getLineNumber : NO_COVERAGE removed call to fi/helsinki/cs/titokone/RunInfo::getComments : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE |
|
| 409 |
removed call to fi/helsinki/cs/titokone/Animator::stopAnimation : NO_COVERAGE |
|
| 410 |
removed call to fi/helsinki/cs/titokone/Animator::animate : NO_COVERAGE |
|
| 412 |
removed call to fi/helsinki/cs/titokone/RunInfo::getComments : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 416 |
removed call to fi/helsinki/cs/titokone/RunInfo::whatOUT : NO_COVERAGE negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/RunInfo::isExternalOp : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 420 |
removed call to fi/helsinki/cs/titokone/RunInfo::whatOUT : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 421 |
removed call to fi/helsinki/cs/titokone/RunInfo::whatOUT : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addOutputData : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 425 |
removed call to fi/helsinki/cs/titokone/RunInfo::getRegisters : NO_COVERAGE |
|
| 426 |
removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 427 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 428 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 429 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 430 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE |
|
| 431 |
removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 5 with 6 : NO_COVERAGE Substituted 5 with -1 : NO_COVERAGE Substituted 5 with 6 : NO_COVERAGE Substituted 5 with -1 : NO_COVERAGE |
|
| 432 |
Replaced constant value of 6 with 7 : NO_COVERAGE Replaced constant value of 6 with 7 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE |
|
| 433 |
Substituted 7 with 8 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE Substituted 7 with 8 : NO_COVERAGE |
|
| 434 |
removed call to fi/helsinki/cs/titokone/RunInfo::getNewPC : NO_COVERAGE Substituted 8 with 9 : NO_COVERAGE Replaced constant value of 8 with 9 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE |
|
| 436 |
removed call to fi/helsinki/cs/titokone/RunInfo::getChangedMemoryLines : NO_COVERAGE |
|
| 437 |
removed call to java/util/LinkedList::iterator : NO_COVERAGE |
|
| 439 |
removed call to java/util/Iterator::hasNext : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 440 |
removed call to java/util/Iterator::next : NO_COVERAGE |
|
| 441 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/Integer::intValue : NO_COVERAGE |
|
| 442 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 443 |
removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE removed call to fi/helsinki/cs/titokone/MemoryLine::getSymbolic : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateInstructionsAndDataTableLine : NO_COVERAGE |
|
| 446 |
removed call to fi/helsinki/cs/titokone/GUI::repaint : NO_COVERAGE |
|
| 448 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE |
|
| 449 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 450 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 451 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 455 |
removed call to java/lang/Object::wait : NO_COVERAGE Substituted 1 with 2 : NO_COVERAGE Substituted 1 with 0.0 : NO_COVERAGE |
|
| 457 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 462 |
negated conditional : NO_COVERAGE |
|
| 464 |
Substituted 11 with 12 : NO_COVERAGE negated conditional : NO_COVERAGE Replaced constant value of 11 with 12 : NO_COVERAGE |
|
| 465 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 466 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 469 |
removed call to fi/helsinki/cs/titokone/GUIBrain::load : NO_COVERAGE |
|
| 470 |
Substituted 1 with 0 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 471 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 473 |
removed call to fi/helsinki/cs/titokone/GUI::unselectAll : NO_COVERAGE |
|
| 475 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 476 |
removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 477 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 479 |
removed call to fi/helsinki/cs/titokone/GUIBrain::continueTask : NO_COVERAGE |
|
| 481 |
Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable threadRunning : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 482 |
removed call to fi/helsinki/cs/titokone/GUIBrain::continueTask : NO_COVERAGE |
|
| 492 |
removed call to fi/helsinki/cs/titokone/Control::modifySource : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::getCodeTableContents : NO_COVERAGE |
|
| 494 |
removed call to java/io/IOException::getMessage : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE |
|
| 505 |
Substituted 1 with 0 : NO_COVERAGE Removed assignment to member variable threadRunning : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 507 |
Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable interruptSent : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 508 |
Removed assignment to member variable noPauses : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 510 |
Substituted 6 with 7 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Replaced constant value of 6 with 7 : NO_COVERAGE |
|
| 511 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 522 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 530 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 534 |
Replaced constant value of 6 with 7 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 535 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 538 |
removed call to fi/helsinki/cs/titokone/Control::compileLine : NO_COVERAGE |
|
| 544 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 545 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 550 |
negated conditional : NO_COVERAGE |
|
| 551 |
Replaced integer addition with subtraction : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLineNumber : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 552 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getPhase : NO_COVERAGE |
|
| 555 |
removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to fi/helsinki/cs/ttk91/TTK91CompileException::getMessage : NO_COVERAGE |
|
| 556 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 558 |
negated conditional : NO_COVERAGE |
|
| 559 |
removed call to fi/helsinki/cs/titokone/GUI::selectLine : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 560 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 561 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::selectLine : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 564 |
Substituted 7 with 8 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE |
|
| 565 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 566 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 571 |
negated conditional : NO_COVERAGE |
|
| 572 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 575 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getComments : NO_COVERAGE |
|
| 576 |
negated conditional : NO_COVERAGE |
|
| 580 |
removed call to java/lang/String::equals : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 581 |
removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLineNumber : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE |
|
| 584 |
removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE |
|
| 586 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 587 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getPhase : NO_COVERAGE |
|
| 589 |
negated conditional : NO_COVERAGE |
|
| 590 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getSymbolFound : NO_COVERAGE |
|
| 591 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getSymbolName : NO_COVERAGE |
|
| 593 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getSymbolDefined : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 594 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getSymbolValue : NO_COVERAGE removed call to java/lang/Integer::<init> : NO_COVERAGE |
|
| 596 |
removed call to fi/helsinki/cs/titokone/GUI::updateRowInSymbolTable : NO_COVERAGE |
|
| 598 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLabelFound : NO_COVERAGE |
|
| 599 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getLabelName : NO_COVERAGE |
|
| 600 |
removed call to java/lang/Integer::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLabelValue : NO_COVERAGE |
|
| 601 |
removed call to fi/helsinki/cs/titokone/GUI::updateRowInSymbolTable : NO_COVERAGE |
|
| 604 |
removed call to fi/helsinki/cs/titokone/GUI::selectLine : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLineNumber : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 605 |
Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 606 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getSymbolTable : NO_COVERAGE |
|
| 607 |
negated conditional : NO_COVERAGE |
|
| 608 |
Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Changed increment from 1 to -1 : NO_COVERAGE changed conditional boundary : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 609 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 612 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to java/lang/Integer::<init> : NO_COVERAGE |
|
| 615 |
removed call to fi/helsinki/cs/titokone/GUI::updateRowInSymbolTable : NO_COVERAGE |
|
| 619 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getInstructions : NO_COVERAGE |
|
| 620 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getData : NO_COVERAGE |
|
| 621 |
removed call to fi/helsinki/cs/titokone/GUI::insertToInstructionsTable : NO_COVERAGE |
|
| 622 |
removed call to fi/helsinki/cs/titokone/GUI::insertToDataTable : NO_COVERAGE |
|
| 623 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 625 |
negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 626 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getLineNumber : NO_COVERAGE |
|
| 627 |
removed call to fi/helsinki/cs/titokone/CompileInfo::getLineBinary : NO_COVERAGE |
|
| 628 |
removed call to fi/helsinki/cs/titokone/GUI::updateInstructionsAndDataTableLine : NO_COVERAGE |
|
| 629 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::selectLine : NO_COVERAGE removed call to fi/helsinki/cs/titokone/CompileInfo::getLineNumber : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 632 |
removed call to fi/helsinki/cs/titokone/GUI::repaint : NO_COVERAGE |
|
| 634 |
negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 635 |
Removed assignment to member variable currentState : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE Substituted 7 with 8 : NO_COVERAGE |
|
| 636 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 637 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 640 |
removed call to java/lang/Object::wait : NO_COVERAGE Substituted 1 with 2 : NO_COVERAGE Substituted 1 with 0.0 : NO_COVERAGE |
|
| 642 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 648 |
negated conditional : NO_COVERAGE |
|
| 650 |
negated conditional : NO_COVERAGE Substituted 11 with 12 : NO_COVERAGE Replaced constant value of 11 with 12 : NO_COVERAGE |
|
| 651 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 652 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 655 |
Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 657 |
removed call to fi/helsinki/cs/titokone/Control::saveBinary : NO_COVERAGE |
|
| 658 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to java/io/PrintStream::println : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 660 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 662 |
removed call to fi/helsinki/cs/titokone/GUI::resetAll : NO_COVERAGE |
|
| 663 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 664 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE |
|
| 665 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 666 |
removed call to fi/helsinki/cs/titokone/GUIBrain::loadAndUpdateGUI : NO_COVERAGE |
|
| 670 |
removed call to fi/helsinki/cs/titokone/Control::openSource : NO_COVERAGE |
|
| 672 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to java/io/IOException::getMessage : NO_COVERAGE |
|
| 673 |
Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 674 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 677 |
Substituted 5 with -1 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 5 with 6 : NO_COVERAGE |
|
| 678 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 679 |
Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 680 |
removed call to fi/helsinki/cs/titokone/GUI::resetAll : NO_COVERAGE |
|
| 681 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 682 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 683 |
removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 684 |
removed call to fi/helsinki/cs/titokone/GUIBrain::continueTask : NO_COVERAGE |
|
| 686 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable threadRunning : NO_COVERAGE |
|
| 687 |
removed call to fi/helsinki/cs/titokone/GUIBrain::continueTask : NO_COVERAGE |
|
| 695 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUIBrain::interruptCurrentTasks : NO_COVERAGE |
|
| 701 |
negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 702 |
removed call to fi/helsinki/cs/titokone/GUIBrain::waitForContinueTask : NO_COVERAGE |
|
| 705 |
removed call to fi/helsinki/cs/titokone/Control::eraseMemory : NO_COVERAGE |
|
| 707 |
Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 708 |
Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE |
|
| 709 |
Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 710 |
Substituted 3 with 4 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 711 |
Substituted 0 with 1 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 712 |
Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Substituted 5 with -1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 5 with 6 : NO_COVERAGE |
|
| 713 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Replaced constant value of 6 with 7 : NO_COVERAGE |
|
| 714 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE Substituted 7 with 8 : NO_COVERAGE |
|
| 715 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 8 with 9 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Replaced constant value of 8 with 9 : NO_COVERAGE |
|
| 716 |
removed call to fi/helsinki/cs/titokone/GUI::resetAll : NO_COVERAGE |
|
| 718 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 720 |
Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 721 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 722 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 723 |
removed call to fi/helsinki/cs/titokone/Control::getPhysicalMemory : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Display::setMem : NO_COVERAGE |
|
| 743 |
removed call to java/util/Hashtable::containsKey : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 744 |
removed call to fi/helsinki/cs/titokone/Translator::setLocale : NO_COVERAGE removed call to java/util/Hashtable::get : NO_COVERAGE |
|
| 745 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 746 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 747 |
removed call to fi/helsinki/cs/titokone/GUI::updateAllTexts : NO_COVERAGE |
|
| 761 |
removed call to java/io/File::exists : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 763 |
removed call to fi/helsinki/cs/titokone/Control::loadLanguageFile : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Translator::setLocale : NO_COVERAGE |
|
| 765 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 766 |
removed call to java/io/PrintStream::println : NO_COVERAGE removed call to fi/helsinki/cs/titokone/ResourceLoadFailedException::getMessage : NO_COVERAGE |
|
| 771 |
removed call to fi/helsinki/cs/titokone/GUI::updateAllTexts : NO_COVERAGE |
|
| 783 |
removed call to fi/helsinki/cs/titokone/Control::setDefaultStdIn : NO_COVERAGE |
|
| 785 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to java/lang/Exception::getMessage : NO_COVERAGE |
|
| 788 |
removed call to java/io/File::getPath : NO_COVERAGE |
|
| 789 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 790 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 791 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 793 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 803 |
removed call to java/io/File::getPath : NO_COVERAGE |
|
| 805 |
Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 806 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 808 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 811 |
removed call to fi/helsinki/cs/titokone/Control::setDefaultStdOut : NO_COVERAGE |
|
| 813 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to java/lang/Exception::getMessage : NO_COVERAGE |
|
| 816 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 817 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 818 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 820 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 829 |
removed call to fi/helsinki/cs/titokone/Control::changeMemorySize : NO_COVERAGE |
|
| 833 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 834 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 835 |
removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 836 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 837 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 846 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 847 |
Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 848 |
Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE negated conditional : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 849 |
Substituted 1 with 0 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 853 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 854 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 859 |
Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 861 |
Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 862 |
Replaced integer subtraction with addition : NO_COVERAGE |
|
| 864 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE |
|
| 865 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 867 |
Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 868 |
Replaced integer addition with subtraction : NO_COVERAGE |
|
| 870 |
Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 871 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 875 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 876 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 880 |
removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 883 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE |
|
| 886 |
removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 887 |
Substituted 4 with 5 : NO_COVERAGE negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 890 |
removed call to fi/helsinki/cs/titokone/GUI::showAnimator : NO_COVERAGE |
|
| 892 |
removed call to fi/helsinki/cs/titokone/GUI::hideAnimator : NO_COVERAGE |
|
| 899 |
negated conditional : NO_COVERAGE |
|
| 900 |
Substituted 4 with 5 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 902 |
negated conditional : NO_COVERAGE |
|
| 903 |
removed call to fi/helsinki/cs/titokone/GUIBrain::menuSetRunningOption : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 914 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 915 |
Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 916 |
Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 924 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 926 |
Substituted 0 with 1 : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 928 |
Replaced bitwise AND with OR : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 929 |
Replaced integer subtraction with addition : NO_COVERAGE |
|
| 930 |
negated conditional : NO_COVERAGE Replaced bitwise AND with OR : NO_COVERAGE |
|
| 931 |
Replaced integer addition with subtraction : NO_COVERAGE |
|
| 934 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 935 |
removed call to fi/helsinki/cs/titokone/GUIBrain::saveSettings : NO_COVERAGE |
|
| 939 |
removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 942 |
Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setSelected : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 966 |
removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 967 |
removed call to fi/helsinki/cs/titokone/GUIBrain::interruptCurrentTasks : NO_COVERAGE |
|
| 984 |
negated conditional : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 985 |
Replaced constant value of 10 with 11 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 10 with 11 : NO_COVERAGE |
|
| 987 |
Replaced constant value of 11 with 12 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE Substituted 11 with 12 : NO_COVERAGE |
|
| 990 |
Substituted 1 with 0 : NO_COVERAGE Removed assignment to member variable interruptSent : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 992 |
removed call to java/lang/Object::notifyAll : NO_COVERAGE |
|
| 1003 |
removed call to java/lang/Object::notify : NO_COVERAGE |
|
| 1015 |
Substituted 1 with 0 : NO_COVERAGE Removed assignment to member variable noPauses : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1017 |
removed call to java/lang/Object::notify : NO_COVERAGE |
|
| 1033 |
removed call to java/lang/Object::wait : NO_COVERAGE |
|
| 1035 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 1047 |
removed call to java/util/Hashtable::keySet : NO_COVERAGE removed call to java/util/Set::toArray : NO_COVERAGE |
|
| 1049 |
Changed increment from 1 to -1 : NO_COVERAGE changed conditional boundary : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE negated conditional : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1052 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::getAvailableLanguages to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1064 |
removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE |
|
| 1066 |
removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE |
|
| 1069 |
Substituted 15 with 16 : NO_COVERAGE Replaced constant value of 15 with 16 : NO_COVERAGE |
|
| 1071 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1072 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1073 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1081 |
removed call to java/io/File::<init> : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE Removed assignment to member variable settingsFile : NO_COVERAGE |
|
| 1090 |
removed call to java/io/File::exists : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1091 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1096 |
removed call to java/io/File::createNewFile : NO_COVERAGE |
|
| 1097 |
removed call to java/io/File::delete : NO_COVERAGE |
|
| 1102 |
negated conditional : NO_COVERAGE |
|
| 1103 |
removed call to fi/helsinki/cs/titokone/Control::loadSettingsFileContents : NO_COVERAGE |
|
| 1106 |
removed call to java/lang/Class::getClassLoader : NO_COVERAGE removed call to java/lang/Object::getClass : NO_COVERAGE |
|
| 1107 |
removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/ClassLoader::getResourceAsStream : NO_COVERAGE |
|
| 1109 |
removed call to fi/helsinki/cs/titokone/Control::loadSettingsStreamContents : NO_COVERAGE |
|
| 1120 |
Removed assignment to member variable currentSettings : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::<init> : NO_COVERAGE |
|
| 1123 |
Removed assignment to member variable currentSettings : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::<init> : NO_COVERAGE |
|
| 1128 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1129 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1132 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1136 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1137 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1140 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1144 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1145 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1148 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1152 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1153 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1156 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1160 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1161 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1164 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1168 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 1170 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1174 |
negated conditional : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1175 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1178 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1182 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 1184 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1188 |
removed call to fi/helsinki/cs/titokone/Settings::getIntValue : NO_COVERAGE |
|
| 1190 |
removed call to fi/helsinki/cs/titokone/Settings::setValue : NO_COVERAGE |
|
| 1206 |
removed call to fi/helsinki/cs/titokone/Control::load : NO_COVERAGE |
|
| 1208 |
removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE |
|
| 1209 |
removed call to fi/helsinki/cs/titokone/Control::getPendingLoadInfo : NO_COVERAGE mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::load to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1211 |
removed call to fi/helsinki/cs/titokone/Control::getApplicationDefinitions : NO_COVERAGE |
|
| 1212 |
Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to java/io/File::getPath : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUIBrain::getCurrentDefaultStdinFile : NO_COVERAGE |
|
| 1213 |
negated conditional : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1214 |
Substituted 0 with 1 : NO_COVERAGE removed call to java/io/File::getPath : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1219 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::load to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Control::getPendingLoadInfo : NO_COVERAGE |
|
| 1222 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::load to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1232 |
removed call to fi/helsinki/cs/titokone/GUIBrain::load : NO_COVERAGE |
|
| 1234 |
negated conditional : NO_COVERAGE |
|
| 1235 |
removed call to fi/helsinki/cs/titokone/GUI::updateStatusBar : NO_COVERAGE removed call to fi/helsinki/cs/titokone/LoadInfo::getStatusMessage : NO_COVERAGE |
|
| 1236 |
Substituted 6 with 7 : NO_COVERAGE Replaced constant value of 6 with 7 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE removed call to fi/helsinki/cs/titokone/LoadInfo::getSP : NO_COVERAGE |
|
| 1237 |
Substituted 7 with 8 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::updateReg : NO_COVERAGE Replaced constant value of 7 with 8 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/LoadInfo::getFP : NO_COVERAGE |
|
| 1239 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getSymbolTable : NO_COVERAGE |
|
| 1240 |
removed call to fi/helsinki/cs/titokone/GUI::insertSymbolTable : NO_COVERAGE |
|
| 1242 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getBinaryCommands : NO_COVERAGE |
|
| 1243 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getSymbolicCommands : NO_COVERAGE |
|
| 1245 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getData : NO_COVERAGE |
|
| 1252 |
negated conditional : NO_COVERAGE |
|
| 1253 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getDataAreaSymbolic : NO_COVERAGE |
|
| 1255 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getDataSymbolic : NO_COVERAGE |
|
| 1257 |
removed call to fi/helsinki/cs/titokone/GUI::insertToInstructionsTable : NO_COVERAGE |
|
| 1258 |
removed call to fi/helsinki/cs/titokone/GUI::insertToDataTable : NO_COVERAGE |
|
| 1260 |
removed call to fi/helsinki/cs/titokone/LoadInfo::getComments : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::addComment : NO_COVERAGE |
|
| 1262 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Removed assignment to member variable currentState : NO_COVERAGE |
|
| 1263 |
removed call to fi/helsinki/cs/titokone/GUIBrain::setGUICommandsForCurrentState : NO_COVERAGE |
|
| 1264 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::setGUIView : NO_COVERAGE |
|
| 1265 |
removed call to fi/helsinki/cs/titokone/Display::setMem : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Control::getPhysicalMemory : NO_COVERAGE |
|
| 1275 |
removed call to fi/helsinki/cs/titokone/Control::saveSettings : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Settings::toString : NO_COVERAGE |
|
| 1277 |
Substituted 1 with 0 : NO_COVERAGE removed call to java/io/File::getName : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1278 |
removed call to fi/helsinki/cs/titokone/GUI::showError : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE |
|
| 1288 |
removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/io/File::<init> : NO_COVERAGE |
|
| 1290 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1291 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1293 |
negated conditional : NO_COVERAGE negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 1294 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1295 |
removed call to java/io/File::<init> : NO_COVERAGE |
|
| 1296 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1297 |
removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/io/File::<init> : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE |
|
| 1301 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::getCurrentDefaultStdoutFile to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1310 |
removed call to java/io/File::<init> : NO_COVERAGE removed call to java/lang/System::getProperty : NO_COVERAGE |
|
| 1312 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1313 |
removed call to fi/helsinki/cs/titokone/Settings::getStrValue : NO_COVERAGE |
|
| 1315 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1316 |
removed call to java/lang/String::equals : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1317 |
removed call to java/io/File::<init> : NO_COVERAGE |
|
| 1318 |
negated conditional : NO_COVERAGE removed call to java/lang/String::equals : NO_COVERAGE |
|
| 1319 |
removed call to java/lang/System::getProperty : NO_COVERAGE removed call to java/io/File::<init> : NO_COVERAGE |
|
| 1323 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::getCurrentDefaultStdinFile to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1341 |
removed call to java/lang/Class::getClassLoader : NO_COVERAGE removed call to java/lang/Object::getClass : NO_COVERAGE |
|
| 1342 |
removed call to java/lang/StringBuilder::toString : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/StringBuilder::append : NO_COVERAGE removed call to java/lang/ClassLoader::getResourceAsStream : NO_COVERAGE removed call to java/lang/StringBuilder::<init> : NO_COVERAGE |
|
| 1351 |
negated conditional : NO_COVERAGE |
|
| 1354 |
removed call to fi/helsinki/cs/titokone/Control::loadSettingsStreamContents : NO_COVERAGE |
|
| 1360 |
removed call to java/lang/String::split : NO_COVERAGE |
|
| 1367 |
Substituted 0 with 1 : NO_COVERAGE Changed increment from 1 to -1 : NO_COVERAGE negated conditional : NO_COVERAGE changed conditional boundary : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1368 |
removed call to java/lang/String::split : NO_COVERAGE |
|
| 1369 |
negated conditional : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1370 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 1373 |
Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1375 |
removed call to java/lang/String::split : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1376 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1377 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE |
|
| 1378 |
removed call to java/util/Hashtable::put : NO_COVERAGE removed call to java/util/Locale::<init> : NO_COVERAGE |
|
| 1379 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1380 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE |
|
| 1381 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE |
|
| 1382 |
removed call to java/util/Locale::<init> : NO_COVERAGE removed call to java/util/Hashtable::put : NO_COVERAGE |
|
| 1383 |
negated conditional : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1384 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE |
|
| 1385 |
removed call to java/lang/String::trim : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1386 |
Substituted 2 with 3 : NO_COVERAGE removed call to java/lang/String::trim : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1387 |
removed call to java/util/Hashtable::put : NO_COVERAGE removed call to java/util/Locale::<init> : NO_COVERAGE |
|
| 1389 |
removed call to java/io/PrintStream::println : NO_COVERAGE |
|
| 1398 |
removed call to java/io/File::getName : NO_COVERAGE |
|
| 1399 |
Substituted 46 with 47 : NO_COVERAGE removed call to java/lang/String::lastIndexOf : NO_COVERAGE Replaced constant value of 46 with 47 : NO_COVERAGE |
|
| 1401 |
changed conditional boundary : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE negated conditional : NO_COVERAGE removed call to java/lang/String::length : NO_COVERAGE Replaced integer subtraction with addition : NO_COVERAGE changed conditional boundary : NO_COVERAGE negated conditional : NO_COVERAGE |
|
| 1402 |
removed call to java/lang/String::toLowerCase : NO_COVERAGE Replaced integer addition with subtraction : NO_COVERAGE removed call to java/lang/String::substring : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1404 |
mutated return of Object value for fi/helsinki/cs/titokone/GUIBrain::getExtension to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE |
|
| 1415 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1416 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1417 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1418 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1419 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1423 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1424 |
Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1425 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1426 |
Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1427 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1431 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1432 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1433 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1434 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1435 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1439 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1440 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1441 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1442 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1443 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1447 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1448 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1449 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1450 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1451 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1455 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1456 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1457 |
Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1458 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1459 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1460 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Replaced constant value of 6 with 7 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE |
|
| 1464 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE |
|
| 1465 |
Substituted 1 with 0 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1466 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1467 |
Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1468 |
Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1469 |
Replaced constant value of 6 with 7 : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1473 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1474 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1475 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1476 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE |
|
| 1477 |
removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |
|
| 1478 |
Replaced constant value of 6 with 7 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 6 with 7 : NO_COVERAGE |
|
| 1482 |
Substituted 0 with 1 : NO_COVERAGE Substituted 0 with 1 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE |
|
| 1483 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE Substituted 1 with 0 : NO_COVERAGE |
|
| 1484 |
Substituted 3 with 4 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE Substituted 3 with 4 : NO_COVERAGE |
|
| 1485 |
Substituted 4 with 5 : NO_COVERAGE Substituted 4 with 5 : NO_COVERAGE removed call to fi/helsinki/cs/titokone/GUI::enable : NO_COVERAGE |
|
| 1486 |
removed call to fi/helsinki/cs/titokone/GUI::disable : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE Substituted 2 with 3 : NO_COVERAGE |