Compiler.java

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.titokone.devices.DeviceNames;
9
import fi.helsinki.cs.ttk91.TTK91CompileException;
10
import java.util.Collections;
11
12
import java.util.*;
13
14
/**
15
 * This class knows everything about the relation between symbolic
16
 * code and binary code. It can transform a full source to binary or
17
 * one symbolic command to binary or vice versa. Empty out all compiler
18
 * commands and empty lines at the start
19
 * of round 2.
20
 */
21
public class Compiler {
22
23
    /**
24
     * This field contains the source code as a String array.
25
     */
26
    private String[] source;
27
28
    /**
29
     * This field holds the declared variables, labels and other
30
     * symbols. It acts as a pointer to the symbolTable Vector where
31
     * the actual data is stored.
32
     */
33
    private HashMap<String, Integer> symbols;
34
35
    /**
36
     * This field holds the invalid values to be introduced
37
     * (i.e. already used labels can't be re-used.
38
     */
39
    private HashMap<String, Integer> invalidLabels;
40
41
    /**
42
     * This field tells the next line to be checked.
43
     */
44
    private int nextLine;
45
46
    /**
47
     * This field holds all the valid symbols on a label.
48
     */
49 1
    private final String VALIDLABELCHARS = "0123456789abcdefghijklmnopqrstuvwxyzåäö_";
50 3
    private final int NOTVALID = -1;
51 3
    private final int EMPTY = -1;
52
53
    /**
54
     * Maximum value of the EQU and DC.
55
     */
56 3
    private final int MAXINT = 2147483647;
57
58
    /**
59
     * Minimum value of the EQU and DC.
60
     */
61 3
    private final int MININT = -2147483648;
62
63
    /**
64
     * Maximum value of the Address.
65
     */
66 3
    private final int ADDRESSMAX = 32767;
67
68
    /**
69
     * Minimum value of the Address.
70
     */
71 3
    private final int ADDRESSMIN = -32768;
72
73
    /**
74
     * This field holds the value of Stdin if it was set with DEF command.
75
     */
76
    private String defStdin;
77
    /**
78
     * This field holds the value of Stdout if it was set with DEF command.
79
     */
80
    private String defStdout;
81
82
    /**
83
     * This field keeps track of whether we are in the first round of
84
     * compilation or the second. It is set by compile() and updated
85
     * by compileLine().
86
     */
87
    private boolean firstRound;
88
89
    /**
90
     * This field counts the number of actual command lines found
91
     * during the first round.
92
     */
93
    private int commandLineCount;
94
95
    /**
96
     * This array contains the code.  During the first round this
97
     * field holds the clean version of the code (stripped of
98
     * compiler commands like def, ds, dc etc.)
99
     */
100
    private Vector<String> code;
101
102
    /**
103
     * This field acts as a symboltable, it is a String array vector
104
     * where 1:st position holds the name of the symbol and the
105
     * second either it's value (label, equ) or the command (ds 10,
106
     * dc 10)
107
     */
108
    private Vector<String[]> symbolTable;
109
110
    /**
111
     * This array contains the data.
112
     */
113
    private String[] data;
114
115
    // Second Round
116
117
    /**
118
     * This field holds the Memoryline objects for the code. These
119
     * are passed to the Application constructor at the end of the
120
     * compile process, and are gathered during the second round from
121
     * first round commands in code-array
122
     */
123
    private MemoryLine[] codeMemoryLines;
124
125
    /**
126
     * This field holds the Memoryline objects for the data
127
     * area. Much like the code part, this is gathered during the
128
     * second round and passed to the Application when
129
     * getApplication() method is called.
130
     */
131
    private MemoryLine[] dataMemoryLines;
132
133
    /**
134
     * This value tells if all the lines are processed twice and
135
     * getApplication can be run.
136
     */
137
    private boolean compileFinished;
138
139
    /**
140
     * This field contains the CompileDebugger instance to inform of
141
     * any compilation happenings.
142
     */
143
    private CompileDebugger compileDebugger;
144
145
    /**
146
     * This field contains the SymbolicInterpreter instance to use as
147
     * part of the compilation.
148
     */
149
    private SymbolicInterpreter symbolicInterpreter;
150
151
152
    /*---------- Constructor ----------*/
153
154
    /**
155
     * This constructor sets up the class. It also initializes an
156
     * instance of CompileDebugger.
157
     */
158
    public Compiler() {
159 2
        compileDebugger = new CompileDebugger();
160 2
        symbolicInterpreter = new SymbolicInterpreter();
161
    }
162
163
    /**
164
     * This function initializes transforms a symbolic source code into an
165
     * application class. After this, call compileLine() to actually compile
166
     * the application one line at a time, and finally getApplication() to get
167
     * the finished application.
168
     *
169
     * @param source The symbolic source code to be compiled.
170
     */
171
    public void compile(String source) {
172 3
        firstRound = true;
173 3
        compileFinished = false;
174
175 4
        while (source.indexOf("\r\n") != -1) {
176 13
            source = source.substring(0, source.indexOf("\r\n")) + source.substring(source.indexOf("\r\n") + 1);
177
        }
178 2
        this.source = source.split("[\n\r\f\u0085\u2028\u2029]");
179
180 3
        nextLine = 0;
181 1
        defStdin = "";
182 1
        defStdout = "";
183
184 2
        code = new Vector<String>();
185 2
        symbols = new HashMap<String, Integer>();
186 2
        symbolTable = new Vector<String[]>();
187
188 2
        invalidLabels = new HashMap<String,Integer>();
189 1
        invalidLabels.putAll(DeviceNames.DEVICES);
190 1
        invalidLabels.putAll(SvcNames.SVCS);
191
    }
192
193
    /**
194
     * This function goes through one line of the code. On the first
195
     * round, it gathers the symbols and their definitions to a
196
     * symbol table and conducts syntax-checking, on the second round
197
     * it transforms each command to its binary format. For the
198
     * transformations, the CompileConstants class is used. It calls
199
     * the private methods firstRoundProcess() and
200
     * secondRoundProcess() to do the actual work, if there is any to
201
     * do.  The transfer from first round of compilation to the
202
     * second is done automatically; during it,
203
     * initializeSecondRound() is called.
204
     *
205
     * @return A CompileInfo debug information object, describing
206
     *         what happened during the compilation of this line and whether
207
     *         this is the first or second round of compilation or null if
208
     *         there are no more lines left to process.
209
     * @throws TTK91CompileException If a) there is a syntax error
210
     *                               during the first round of checking (error code 101) or b) a
211
     *                               symbol is still undefined after the first round of compilation
212
     *                               is finished.
213
     */
214
    public CompileInfo compileLine() throws TTK91CompileException {
215
216
        CompileInfo info;
217
218 1
        if (firstRound) {
219 1
            if (nextLine == source.length) {
220 1
                compileDebugger.firstPhase();
221 1
                info = initializeSecondRound();
222 1
                return info;
223
            } else {
224 1
                compileDebugger.firstPhase(nextLine, source[nextLine]);
225 1
                info = firstRoundProcess(source[nextLine]);
226 4
                ++nextLine;
227 1
                return info;
228
            }
229
        } else {
230 2
            if (nextLine == code.size()) {
231 1
                compileDebugger.finalPhase();
232 3
                compileFinished = true;
233 1
                return null;
234
            } else {
235 1
                compileDebugger.secondPhase(nextLine, source[nextLine]);
236 2
                info = secondRoundProcess((String) code.get(nextLine));
237 4
                ++nextLine;
238 1
                return info;
239
            }
240
        }
241
    }
242
243
244
    /**
245
     * This method returns the readily-compiled application if the
246
     * compilation is complete, or null otherwise.
247
     */
248
    public Application getApplication() throws IllegalStateException {
249 1
        if (compileFinished) {
250 1
            dataMemoryLines = new MemoryLine[data.length];
251 5
            for (int i = 0; i < data.length; ++i) {
252 2
                dataMemoryLines[i] = new MemoryLine(Integer.parseInt(data[i]), "");
253
            }
254
255 1
            SymbolTable st = new SymbolTable();
256
            String[] tempSTLine;
257
            String symbolName;
258
            int symbolValue;
259
260 6
            for (int i = 0; i < symbolTable.size(); ++i) {
261 1
                tempSTLine = (String[]) symbolTable.get(i);
262 2
                symbolName = tempSTLine[0];
263 3
                symbolValue = Integer.parseInt(tempSTLine[1]);
264 1
                st.addSymbol(symbolName, symbolValue);
265
            }
266
267 2
            if (!defStdin.equals("")) {
268 1
                st.addDefinition("stdin", defStdin);
269
            }
270 2
            if (!defStdout.equals("")) {
271 1
                st.addDefinition("stdout", defStdout);
272
            }
273
274 2
            return new Application(codeMemoryLines, dataMemoryLines, st);
275
276
        } else {
277 3
            throw new IllegalStateException(new Message("Compilation is not " +
278
                    "finished " +
279
                    "yet.").toString());
280
        }
281
    }
282
283
    /**
284
     * This function transforms a binary command number to a MemoryLine
285
     * containing both the binary and the symbolic command corresponding
286
     * to it.
287
     *
288
     * @param binary The command to be translated as binary.
289
     * @return A MemoryLine instance containing both the information
290
     *         about the symbolic command and the binary version of it.
291
     */
292
    public MemoryLine getSymbolicAndBinary(int binary) {
293 1
        BinaryInterpreter bi = new BinaryInterpreter();
294 3
        return new MemoryLine(binary, bi.binaryToString(binary));
295
    }
296
297
    /**
298
     * This function transforms a MemoryLine containing only the binary
299
     * command to a MemoryLine containing both the binary and the
300
     * symbolic command corresponding to it.
301
     *
302
     * @param binaryOnly A MemoryLine containing the binary only of the
303
     *                   command to be translated as binary. If the MemoryLine contains
304
     *                   both, the pre-set symbolic value is ignored.
305
     * @return A MemoryLine instance containing both the information
306
     *         about the symbolic command and the binary version of it.
307
     */
308
    public MemoryLine getSymbolicAndBinary(MemoryLine binaryOnly) {
309 1
        BinaryInterpreter bi = new BinaryInterpreter();
310 5
        return new MemoryLine(binaryOnly.getBinary(),
311
                bi.binaryToString(binaryOnly.getBinary()));
312
    }
313
314
    /**
315
     * This function gathers new symbol information from the given line
316
     * and checks its syntax. If a data reservation is detected, the
317
     * dataAreaSize is incremented accordingly. If the line contains
318
     * an actual command, commandLineCount is incremented.
319
     *
320
     * @param line The line of code to process.
321
     * @return A CompileInfo object describing what was done, or null if
322
     *         the first round has been completed. This will be the sign for
323
     *         the compiler to prepare for the second round and start it.
324
     */
325
    private CompileInfo firstRoundProcess(String line) throws TTK91CompileException {
326
        String[] lineTemp;
327 2
        boolean nothingFound = true;
328
        String comment = "";
329
        String[] commentParameters;
330 2
        int intValue = 0;
331 2
        String[] symbolTableEntry = new String[2];
332 2
        boolean labelFound = false;
333 2
        boolean variableUsed = false;
334
335 3
        compileDebugger.setStatusMessage(new Message("First round of compilation.").toString());
336
337
        /*
338
                    The method first tries to parse a compilercommand (equ, dc, ds, def) from the line. If
339
                    succesfull then Check whether name is valid and value correct.
340
                    */
341
        try {
342
343 1
            lineTemp = parseCompilerCommandLine(line);
344
345
            // compiler command
346 2
            boolean allCharsValid = true;
347 2
            boolean atLeastOneNonNumber = false;
348
349 4
            if (invalidLabels.containsKey(lineTemp[0])) {
350
                // not a valid label
351 12
                if (!(lineTemp[1].equalsIgnoreCase("def") &&
352
                        (lineTemp[0].equalsIgnoreCase("stdin") ||
353
                                lineTemp[0].equalsIgnoreCase("stdout"))
354
                )) {
355 2
                    comment = new Message("Invalid label.").toString();
356 1
                    throw new TTK91CompileException(comment);
357
                }
358
            }
359
360 4
            if (!validLabelName(lineTemp[0])) {
361
                // not a valid label;
362 2
                comment = new Message("Invalid label.").toString();
363 1
                throw new TTK91CompileException(comment);
364
            } else {
365 4
                if (lineTemp[1].equalsIgnoreCase("ds")) {
366 2
                    intValue = 0;
367
                    try {
368 3
                        intValue = Integer.parseInt(lineTemp[2]);
369
                    } catch (NumberFormatException e) {
370 2
                        comment = new Message("Invalid size for a " +
371
                                "DS.").toString();
372 1
                        throw new TTK91CompileException(comment);
373
                    }
374 6
                    if (intValue < 0 || intValue > Integer.MAX_VALUE) {
375 2
                        comment = new Message("Invalid size for a " +
376
                                "DS.").toString();
377 1
                        throw new TTK91CompileException(comment);
378
                    }
379
                }
380
381 4
                if (lineTemp[1].equalsIgnoreCase("dc")) {
382 2
                    intValue = 0;
383 6
                    if (lineTemp[2].trim().length() > 0) {
384
                        try {
385 3
                            intValue = Integer.parseInt(lineTemp[2]);
386
                        } catch (NumberFormatException e) {
387 2
                            comment = new Message("Invalid value for a " +
388
                                    "DC.").toString();
389 1
                            throw new TTK91CompileException(comment);
390
                        }
391
392 8
                        if (intValue < MININT || intValue > MAXINT) {
393 2
                            comment = new Message("Invalid value for a " +
394
                                    "DC.").toString();
395 1
                            throw new TTK91CompileException(comment);
396
                        }
397
                    }
398
                }
399
400 4
                if (lineTemp[1].equalsIgnoreCase("equ")) {
401 4
                    if (symbols.containsKey(lineTemp[0])) {
402 4
                        symbolTableEntry[0] = lineTemp[0];
403 4
                        symbolTableEntry[1] = lineTemp[2];
404 6
                        symbolTable.set(((Integer) symbols.get(lineTemp[0])).intValue(),
405
                                symbolTableEntry.clone());
406
                    } else {
407 5
                        symbols.put(lineTemp[0], new Integer(symbolTable.size()));
408 4
                        symbolTableEntry[0] = lineTemp[0];
409 4
                        symbolTableEntry[1] = lineTemp[2];
410 2
                        symbolTable.add(symbolTableEntry.clone());
411
                    }
412
413
                    try {
414 3
                        intValue = Integer.parseInt(lineTemp[2]);
415
                    } catch (NumberFormatException e) {
416 2
                        comment = new Message("Invalid value for an " +
417
                                "EQU.").toString();
418 1
                        throw new TTK91CompileException(comment);
419
                    }
420
421 8
                    if (intValue < MININT || intValue > MAXINT) {
422 2
                        comment = new Message("Invalid value for an " +
423
                                "EQU.").toString();
424 1
                        throw new TTK91CompileException(comment);
425
                    }
426
427 3
                    compileDebugger.foundEQU(lineTemp[0], intValue);
428 2
                    commentParameters = new String[2];
429 4
                    commentParameters[0] = lineTemp[0];
430 4
                    commentParameters[1] = lineTemp[2];
431 2
                    comment = new Message("Variable {0} defined as {1}.",
432
                            commentParameters).toString();
433 1
                    compileDebugger.setComment(comment);
434
                }
435 4
                if (lineTemp[1].equals("ds")) {
436 4
                    if (symbols.containsKey(lineTemp[0])) {
437 4
                        symbolTableEntry[0] = lineTemp[0];
438 11
                        symbolTableEntry[1] = lineTemp[1] + " " +
439
                                lineTemp[2];
440 6
                        symbolTable.set(((Integer) symbols.get(lineTemp[0])).intValue(),
441
                                symbolTableEntry.clone()
442
                        );
443
444
                    } else {
445 5
                        symbols.put(lineTemp[0], new Integer(symbolTable.size()));
446 4
                        symbolTableEntry[0] = lineTemp[0];
447 11
                        symbolTableEntry[1] = lineTemp[1] + " " +
448
                                lineTemp[2];
449 2
                        symbolTable.add(symbolTableEntry.clone());
450
                    }
451 3
                    compileDebugger.foundDS(lineTemp[0]);
452 4
                    comment = new Message("Found variable {0}.",
453
                            lineTemp[0]).toString();
454 1
                    compileDebugger.setComment(comment);
455
                }
456
457 4
                if (lineTemp[1].equals("dc")) {
458
459 3
                    compileDebugger.foundDC(lineTemp[0]);
460
461 4
                    if (symbols.containsKey(lineTemp[0])) {
462
463 4
                        symbolTableEntry[0] = lineTemp[0];
464 11
                        symbolTableEntry[1] = lineTemp[1] + " " +
465
                                lineTemp[2];
466 6
                        symbolTable.set(((Integer) symbols.get(lineTemp[0])).intValue(),
467
                                symbolTableEntry.clone());
468
469
                    } else {
470
471 5
                        symbols.put(lineTemp[0], new Integer(symbolTable.size()));
472 4
                        symbolTableEntry[0] = lineTemp[0];
473 11
                        symbolTableEntry[1] = lineTemp[1] + " " +
474
                                lineTemp[2];
475 2
                        symbolTable.add(symbolTableEntry.clone());
476
477
                    }
478 3
                    compileDebugger.foundDC(lineTemp[0]);
479
480 4
                    comment = new Message("Found variable {0}.",
481
                            lineTemp[0]).toString();
482 1
                    compileDebugger.setComment(comment);
483
484
                }
485 4
                if (lineTemp[1].equalsIgnoreCase("def")) {
486 8
                    if (lineTemp[0].equals("stdin") ||
487
                            lineTemp[0].equals("stdout")) {
488 4
                        if (lineTemp[0].equals("stdin")) {
489 3
                            defStdin = lineTemp[2];
490
                        } else {
491 3
                            defStdout = lineTemp[2];
492
                        }
493 2
                        commentParameters = new String[2];
494 5
                        commentParameters[0] = lineTemp[0].toUpperCase();
495 4
                        commentParameters[1] = lineTemp[2];
496 2
                        comment = new Message("{0} defined as {1}.",
497
                                commentParameters).toString();
498 1
                        compileDebugger.setComment(comment);
499
                    } else {
500 2
                        comment = new Message("Invalid DEF " +
501
                                "operation.").toString();
502 1
                        throw new TTK91CompileException(comment);
503
                    }
504
                }
505
            }
506
        } catch (TTK91CompileException e) {
507
            /*
508
                            This means that line is not a valid compiler command. Now we try to parse a valid ttk91-command
509
                            from it. ParseLine return line as an array with label in position 0, opcode in 1, first register in
510
                            2, addressingmode in 3, address in 4 and other register in position 5.
511
512
                            However that is not all there is to it. Once a label is introduced it becomes unusable and
513
                            cannot be defined twice, and address part must be within the limits.
514
515
                            Address can be either a variable or a number and that must be noticed also.
516
                            */
517
518 1
            lineTemp = parseLine(line);
519
520 4
            if (lineTemp[1].equals("")) {
521
                // line empty;
522
523
            } else {
524 1
                code.add(line);
525 4
                if (!lineTemp[0].equals("")) {
526 2
                    nothingFound = false;
527 2
                    labelFound = true;
528
                    // label found
529
530 4
                    if (invalidLabels.containsKey(lineTemp[0])) {
531
                        // not a valid label
532 2
                        comment = new Message("Invalid label.").toString();
533 1
                        throw new TTK91CompileException(comment);
534
                    } else {
535 3
                        invalidLabels.put(lineTemp[0], null);
536
537 4
                        if (symbols.containsKey(lineTemp[0])) {
538 4
                            symbolTableEntry[0] = lineTemp[0];
539 10
                            symbolTableEntry[1] = "" +
540
                                    (code.size() - 1);
541 6
                            symbolTable.set(((Integer) symbols.get(lineTemp[0])).intValue(),
542
                                    symbolTableEntry.clone());
543
                        } else {
544 5
                            symbols.put(lineTemp[0], new Integer(symbolTable.size()));
545 4
                            symbolTableEntry[0] = lineTemp[0];
546 10
                            symbolTableEntry[1] = "" +
547
                                    (code.size() - 1);
548 2
                            symbolTable.add(symbolTableEntry.clone());
549
                        }
550
551 7
                        compileDebugger.foundLabel(lineTemp[0],
552
                                code.size() - 1);
553
                    }
554
                }
555
556
                try {
557 4
                    if (!lineTemp[4].equals("")) {
558 3
                        Integer.parseInt(lineTemp[4]);
559
                    }
560
                } catch (NumberFormatException ne) {
561
                    // variable used
562 6
                    if (symbolicInterpreter.getRegisterId(lineTemp[4]) == -1) {
563 2
                        nothingFound = false;
564 2
                        variableUsed = true;
565 3
                        compileDebugger.foundSymbol(lineTemp[4]);
566 4
                        if (!symbols.containsKey(lineTemp[4])) {
567 4
                            if (invalidLabels.get(lineTemp[4]) == null) {
568 5
                                symbols.put(lineTemp[4], new
569
                                        Integer(symbolTable.size()));
570 4
                                symbolTableEntry[0] = lineTemp[4];
571 2
                                symbolTableEntry[1] = "";
572 2
                                symbolTable.add(symbolTableEntry.clone());
573
                            } else {
574
                                // predefined word (halt etc) was used
575 5
                                symbols.put(lineTemp[4],
576
                                        new Integer(symbolTable.size()));
577 4
                                symbolTableEntry[0] = lineTemp[4];
578 9
                                symbolTableEntry[1] = "" +
579
                                        (Integer) invalidLabels.get(lineTemp[4]);
580 2
                                symbolTable.add(symbolTableEntry.clone());
581
                            }
582
                        }
583
                    }
584
                }
585
586 2
                if (variableUsed && labelFound) {
587 2
                    commentParameters = new String[2];
588 4
                    commentParameters[0] = lineTemp[0];
589 4
                    commentParameters[1] = lineTemp[4];
590 2
                    comment = new Message("Found label {0} and variable " +
591
                            "{1}.",
592
                            commentParameters).toString();
593 1
                    compileDebugger.setComment(comment);
594
595
                } else {
596 1
                    if (variableUsed) {
597 4
                        comment = new Message("Variable {0} used.",
598
                                lineTemp[4]).toString();
599 1
                        compileDebugger.setComment(comment);
600
601
                    } else {
602 1
                        if (labelFound) {
603 4
                            comment = new Message("Label {0} found.",
604
                                    lineTemp[0]).toString();
605 1
                            compileDebugger.setComment(comment);
606
607
                        }
608
                    }
609
                }
610
            }
611
        }
612 2
        return compileDebugger.lineCompiled();
613
    }
614
615
    /**
616
     * This method initializes the code and data area arrays for the
617
     * second round processing according to the dataAreaSize and
618
     * commandLineCount variables. It also resets the StringTokenizer
619
     * by calling tokenize(). Before entering the second round we
620
     * must clear all the empty lines like compiler-codes
621
     * (pseudo-codes) and lines with nothing but comments.
622
     */
623
    private CompileInfo initializeSecondRound() {
624
625 3
        nextLine = 0;
626 3
        firstRound = false;
627
628
        // copy the code.
629
630 1
        String[] newCode = new String[code.size()];
631 5
        for (int i = 0; i < newCode.length; ++i) {
632 1
            newCode[i] = (String) code.get(i);
633
        }
634
635
        String[] lineTemp;
636 2
        int dataAreaSize = 0;
637
638
        // calculate the size of data-area
639
640 3
        compileDebugger.setStatusMessage(new Message(
641
                "Initializing the second  round of compilation.").toString());
642
643 6
        for (int i = 0; i < symbolTable.size(); ++i) {
644 1
            lineTemp = (String[]) symbolTable.get(i);
645 8
            if (lineTemp[1].trim().length() >= 2) {
646 9
                if (lineTemp[1].substring(0, 2).equalsIgnoreCase("ds")) {
647 7
                    dataAreaSize += Integer.parseInt(lineTemp[1].substring(3));
648
                } else {
649
650 9
                    if (lineTemp[1].substring(0, 2).equalsIgnoreCase("dc")) {
651 1
                        ++dataAreaSize;
652
                    }
653
654
                }
655
            }
656
        }
657
658 1
        data = new String[dataAreaSize];
659 2
        String[] newSymbolTableLine = new String[2];
660 2
        newSymbolTableLine[0] = "";
661 2
        newSymbolTableLine[1] = "";
662 2
        int nextPosition = 0;
663
        int nextMemorySlot = newCode.length;
664 2
        int dsValue = 0;
665
666
        // update variable values to symbolTable
667 6
        for (int i = 0; i < symbolTable.size(); ++i) {
668 1
            lineTemp = (String[]) symbolTable.get(i);
669 8
            if (lineTemp[1].trim().length() >= 2) {
670 9
                if (lineTemp[1].substring(0, 2).equalsIgnoreCase("ds")) {
671 6
                    dsValue = Integer.parseInt(lineTemp[1].substring(3));
672 4
                    newSymbolTableLine[0] = lineTemp[0];
673 6
                    newSymbolTableLine[1] = "" + nextMemorySlot;
674 2
                    symbolTable.set(i, newSymbolTableLine.clone());
675
676
                    // Allaolevat rivit puukotti Jari S. 12.11.2005, sillä
677
                    // taulukoiden symboliarvot olivat syvältä!
678
                    // Ei vakuuttavasti testattu ja muutos arvaus, joka
679
                    // tehty tuntematta luokan toimintaa juurikaan!
680
                    //++nextMemorySlot;
681 1
                    nextMemorySlot += dsValue;
682
683 5
                    for (int j = 0; j < dsValue; ++j) {
684 1
                        data[j + nextPosition] = "" + 0;
685
                    }
686 1
                    nextPosition += dsValue;
687
                } else {
688 9
                    if (lineTemp[1].substring(0, 2).equalsIgnoreCase("dc")) {
689 8
                        if (lineTemp[1].trim().length() > 2) {
690 5
                            data[nextPosition] = lineTemp[1].substring(3);
691
                        } else {
692
                            data[nextPosition] = "" + 0;
693
                        }
694 4
                        newSymbolTableLine[0] = lineTemp[0];
695 6
                        newSymbolTableLine[1] = "" + nextMemorySlot;
696 2
                        symbolTable.set(i, newSymbolTableLine.clone());
697 1
                        ++nextMemorySlot;
698 1
                        ++nextPosition;
699
                    }
700
                }
701
            }
702
        }
703
704
        // make new SymbolTable
705 3
        String[][] newSymbolTable = new String[symbolTable.size()][2];
706 5
        for (int i = 0; i < newSymbolTable.length; ++i) {
707 1
            newSymbolTable[i] = (String[]) symbolTable.get(i);
708
        }
709
710
        // prepare for the second round.
711 1
        codeMemoryLines = new MemoryLine[newCode.length];
712
713 1
        compileDebugger.finalFirstPhase(newCode, data, newSymbolTable);
714 2
        return compileDebugger.lineCompiled();
715
716
    }
717
718
    /**
719
     * This function transforms any commands to binary and stores both
720
     * forms in the code array, or sets any initial data values in the
721
     * data array. It uses CompileConstants as its aid.
722
     *
723
     * @param line The line of code to process.
724
     * @return A CompileInfo object describing what was done, or
725
     *         null if the second round and thus the compilation has been
726
     *         completed.
727
     */
728
    private CompileInfo secondRoundProcess(String line) throws TTK91CompileException {
729
730 3
        compileDebugger.setStatusMessage(new Message(
731
                "Second round of compilation.").toString());
732
733
        String address = "";
734
        int lineAsBinary;
735
        String comment;
736
        String[] symbolTableEntry;
737 1
        String[] lineTemp = parseLine(line);
738 4
        if (!lineTemp[4].equals("")) {
739
            try {
740 7
                address = "" + Integer.parseInt(lineTemp[4]);
741
            } catch (NumberFormatException e) {
742 5
                Object tempObject = symbolTable.get((((Integer) symbols.get(lineTemp[4]))).intValue());
743
                symbolTableEntry = (String[]) tempObject;
744 4
                if (symbolTableEntry[1].equals("")) {
745 2
                    String missing = lineTemp[4];
746 2
                    comment = new Message("Missing referred label {0}", missing).toString();
747 1
                    throw new TTK91CompileException(comment);
748
                }
749 2
                address = (String) symbolTableEntry[1];
750
            }
751
        }
752
753
754 9
        lineAsBinary = symbolicInterpreter.stringToBinary(lineTemp[1],
755
                lineTemp[2],
756
                lineTemp[3],
757
                address,
758
                lineTemp[5]);
759
760 1
        compileDebugger.setBinary(lineAsBinary);
761 1
        codeMemoryLines[nextLine] = new MemoryLine(lineAsBinary, line);
762
763 2
        String binaryByPositions = new Instruction(lineAsBinary).toColonString();
764 12
        String[] commentParameters = {line, "" + lineAsBinary, binaryByPositions};
765 2
        comment = new Message("{0} --> {1} ({2}) ", commentParameters).toString();
766 1
        compileDebugger.setComment(comment);
767
768 2
        return compileDebugger.lineCompiled();
769
    }
770
771
    /**
772
     * This method parses a String and tries to find a label, opCode
773
     * and all the other parts of a Command line.
774
     *
775
     * @param symbolicOpcode Symbolic form of an operation code.
776
     */
777
    public String[] parseLine(String symbolicOpcode) throws TTK91CompileException {
778
        String label = "";
779
        String opcode = "";
780
        String firstRegister = "";
781
        String addressingMode = "";
782
        String secondRegister = "";
783
        String address = "";
784
785
        String comment;                // for exception
786
787
        String[] parsedLine;
788
        String wordTemp = "";
789 2
        int nextToCheck = 0;        // for looping out the spacing
790 2
        int fieldEnd = 0;        // searches the end of a field (' ', ',')
791 2
        boolean spaceBetweenMemorymodeAndAddress = false;
792
793
794 1
        fieldEnd = symbolicOpcode.indexOf(";");
795 3
        if (fieldEnd != -1) {
796 3
            symbolicOpcode = symbolicOpcode.substring(0, fieldEnd);
797
        }
798 5
        symbolicOpcode = symbolicOpcode.replace('\t', ' ');
799 5
        symbolicOpcode = symbolicOpcode.replace(' ', ' ');        // Not stupid!
800
        // replaces 0xa0 -> 0x20 - Lauri 2004-09-23
801 1
        symbolicOpcode = symbolicOpcode.toLowerCase();
802 1
        symbolicOpcode = symbolicOpcode.trim();
803
804 2
        if (symbolicOpcode.length() == 0) {
805 2
            parsedLine = new String[6];
806 5
            for (int i = 0; i < parsedLine.length; ++i) {
807
                parsedLine[i] = "";
808
            }
809 1
            return parsedLine;
810
        }
811
812
813 1
        String[] lineAsArray = symbolicOpcode.split("[ \t,]+");
814 2
        int lineAsArrayIndex = 0;
815
816
        /* label */
817
        wordTemp = lineAsArray[lineAsArrayIndex];
818 4
        if (symbolicInterpreter.getOpcode(wordTemp) == -1) {
819 2
            if (!validLabelName(wordTemp)) {
820 4
                comment = new Message("Compilation failed: {0}",
821
                        new Message("invalid label {0}.",
822
                                wordTemp).toString()).toString();
823 1
                throw new TTK91CompileException(comment);
824
            }
825
826
            label = wordTemp;
827 1
            ++lineAsArrayIndex;
828
        }
829
830
831
        /* opcode */
832 2
        if (lineAsArrayIndex < lineAsArray.length) {
833
            opcode = lineAsArray[lineAsArrayIndex];
834 1
            ++lineAsArrayIndex;
835 3
            if (symbolicInterpreter.getOpcode(opcode) < 0) {
836 4
                comment = new Message("Compilation failed: {0}",
837
                        new Message("invalid opcode {0}.",
838
                                opcode).toString()).toString();
839 1
                throw new TTK91CompileException(comment);
840
            }
841
        } else {
842 4
            comment = new Message("Compilation failed: {0}",
843
                    new Message("invalid opcode {0}.",
844
                            opcode).toString()).toString();
845 1
            throw new TTK91CompileException(comment);
846
        }
847
848
        /*first register*/
849 2
        if (lineAsArrayIndex < lineAsArray.length) {
850
            // first register might end with a ','. Not when push Sp etc.
851 8
            if (lineAsArray[lineAsArrayIndex].charAt(
852
                    lineAsArray[lineAsArrayIndex].length() - 1) == ',') {
853
854 11
                if (symbolicInterpreter.getRegisterId(
855
                        lineAsArray[lineAsArrayIndex].substring(0,
856
                                lineAsArray[lineAsArrayIndex].length() - 1)
857
                ) != -1) {
858 7
                    firstRegister = lineAsArray[lineAsArrayIndex].substring(0,
859
                            lineAsArray[lineAsArrayIndex].length() - 1);
860 1
                    ++lineAsArrayIndex;
861
                }
862
            } else {
863 4
                if (symbolicInterpreter.getRegisterId(
864
                        lineAsArray[lineAsArrayIndex]) != -1) {
865
                    firstRegister = lineAsArray[lineAsArrayIndex];
866 1
                    ++lineAsArrayIndex;
867
                }
868
            }
869
        }
870
871
872
        // Now supports addressing mode LOAD/STORE R1, (R2),
873
        // which is equal to LOAD/STORE R1, 0(R2).
874
        // 5.10.2004, Tom Bertell
875 2
        if (lineAsArrayIndex < lineAsArray.length) {
876 10
            if (lineAsArray[lineAsArrayIndex].charAt(0) == '(' &&
877
                    (opcode.equalsIgnoreCase("store") || opcode.equalsIgnoreCase("load"))) {
878 6
                lineAsArray[lineAsArrayIndex] = '0' + lineAsArray[lineAsArrayIndex];
879
            }
880
        }
881
882
        /* addressingMode */
883 2
        if (lineAsArrayIndex < lineAsArray.length) {
884 12
            if (lineAsArray[lineAsArrayIndex].charAt(0) == '=' ||
885
                    lineAsArray[lineAsArrayIndex].charAt(0) == '@') {
886
887 7
                addressingMode = "" + lineAsArray[lineAsArrayIndex].charAt(0);
888 4
                if (lineAsArray[lineAsArrayIndex].length() == 1) {
889 2
                    spaceBetweenMemorymodeAndAddress = true;
890 1
                    ++lineAsArrayIndex;
891
                }
892
893
            } else {
894
                addressingMode = "";
895
            }
896
        }
897
898
        /*address and second register*/
899 2
        if (lineAsArrayIndex < lineAsArray.length) {
900 4
            if (lineAsArray[lineAsArrayIndex].indexOf("(") != -1) {
901
902 4
                if (lineAsArray[lineAsArrayIndex].indexOf(")") <
903
                        lineAsArray[lineAsArrayIndex].indexOf("(")) {
904 4
                    comment = new Message("Compilation failed: {0}",
905
                            new Message("second register expected."
906
                            ).toString()).toString();
907 1
                    throw new TTK91CompileException(comment);
908
909
                } else {
910 1
                    if (spaceBetweenMemorymodeAndAddress) {
911 4
                        address = lineAsArray[lineAsArrayIndex].substring(
912
                                0, lineAsArray[lineAsArrayIndex].indexOf("(")
913
                        );
914
                    } else {
915 3
                        address = lineAsArray[lineAsArrayIndex].substring(
916
                                addressingMode.length(),
917
                                lineAsArray[lineAsArrayIndex].indexOf("(")
918
                        );
919
                    }
920
921 6
                    secondRegister = lineAsArray[lineAsArrayIndex].substring(
922
                            lineAsArray[lineAsArrayIndex].indexOf("(") + 1,
923
                            lineAsArray[lineAsArrayIndex].indexOf(")")
924
                    );
925
926 4
                    if (symbolicInterpreter.getRegisterId(secondRegister) == -1) {
927 4
                        comment = new Message("Compilation failed: {0}",
928
                                new Message("invalid register {0}.",
929
                                        secondRegister).toString()).toString();
930 1
                        throw new TTK91CompileException(comment);
931
                    }
932
                }
933
            } else {
934 1
                if (spaceBetweenMemorymodeAndAddress) {
935
                    address = lineAsArray[lineAsArrayIndex];
936
                } else {
937 2
                    address = lineAsArray[lineAsArrayIndex].substring(addressingMode.length());
938
                }
939
940 5
                if (lineAsArrayIndex + 1 < lineAsArray.length) {
941 1
                    ++lineAsArrayIndex;
942
943 8
                    if (lineAsArray[lineAsArrayIndex].indexOf("(") == -1 ||
944
                            lineAsArray[lineAsArrayIndex].indexOf(")") == -1) {
945 4
                        comment = new Message("Compilation failed: {0}",
946
                                new Message("second register expected."
947
                                ).toString()).toString();
948 1
                        throw new TTK91CompileException(comment);
949
                    }
950
951
952 4
                    if (lineAsArray[lineAsArrayIndex].indexOf(")") <
953
                            lineAsArray[lineAsArrayIndex].indexOf("(")) {
954 4
                        comment = new Message("Compilation failed: {0}",
955
                                new Message("second register expected."
956
                                ).toString()).toString();
957 1
                        throw new TTK91CompileException(comment);
958
959
                    } else {
960 6
                        secondRegister = lineAsArray[lineAsArrayIndex].substring(
961
                                lineAsArray[lineAsArrayIndex].indexOf("(") + 1,
962
                                lineAsArray[lineAsArrayIndex].indexOf(")")
963
                        );
964
                    }
965
                }
966
            }
967 1
            ++lineAsArrayIndex;
968
        }
969
970 4
        if (symbolicInterpreter.getRegisterId(address) != -1) {
971
            secondRegister = address;
972
            address = "";
973
        }
974
975 2
        if (lineAsArrayIndex < lineAsArray.length) {
976 4
            comment = new Message("Compilation failed: {0}",
977
                    new Message("end of line expected.").toString()).toString();
978 1
            throw new TTK91CompileException(comment);
979
        }
980
981 3
        if (opcode.length() > 0) {
982
            // original line [LL]
983
            //          if (opcode.charAt(0) == 'j' || opcode.charAt(0) == 'J') {
984
            // Modified to support "NOT". It's here because it takes only one param like command "JUMP" [LL]
985 15
            if (opcode.charAt(0) == 'j' || opcode.charAt(0) == 'J' || opcode.toLowerCase().equals("not")) {
986
                // Opcode matches jneg/jzer/jpos or the negations
987
                // jnneg/jnzer/jnpos. // or opcode is 'NOT' [LL]
988 6
                if (opcode.toLowerCase().matches("j" + "n?" +
989
                        "((neg)|(zer)|(pos))") ||
990
                        opcode.toLowerCase().equals("not")) {
991 2
                    if (firstRegister.equals("")) {
992 4
                        comment = new Message("Compilation failed: {0}",
993
                                new Message("first register expected."
994
                                ).toString()).toString();
995 1
                        throw new TTK91CompileException(comment);
996
                    }
997
                }
998
                // modified to support "NOT". With "NOT" only one reg is expected, no addresses [LL]
999 7
                if (((!opcode.toLowerCase().equals("not")) && (addressingMode.equals("=") || address.equals("")))) {
1000 4
                    comment = new Message("Compilation failed: {0}",
1001
                            new Message("address expected."
1002
                            ).toString()).toString();
1003 1
                    throw new TTK91CompileException(comment);
1004
                }
1005
            } else {
1006 2
                if (opcode.equalsIgnoreCase("nop")) {
1007
                    // (do nothing)
1008
                } else {
1009 2
                    if (opcode.equalsIgnoreCase("pop")) {
1010 6
                        if (addressingMode.equals("@") ||
1011
                                addressingMode.equals("=") || !address.equals("")) {
1012 4
                            comment = new Message("Compilation failed: {0}",
1013
                                    new Message("invalid argument."
1014
                                    ).toString()).toString();
1015 1
                            throw new TTK91CompileException(comment);
1016
                        }
1017
                    } else {
1018 4
                        if (opcode.equalsIgnoreCase("pushr") ||
1019
                                opcode.equalsIgnoreCase("popr")) {
1020 2
                            if (firstRegister.equals("")) {
1021 4
                                comment = new Message("Compilation failed: {0}",
1022
                                        new Message("first register expected."
1023
                                        ).toString()).toString();
1024 1
                                throw new TTK91CompileException(comment);
1025
                            }
1026
                        } else {
1027 6
                            if (firstRegister.equals("") ||
1028
                                    (address.equals("") && secondRegister.equals(""))) {
1029 4
                                comment = new Message("Compilation failed: {0}",
1030
                                        new Message("address or 1 register expected."
1031
                                        ).toString()).toString();
1032 1
                                throw new TTK91CompileException(comment);
1033
                            }
1034
                        }
1035
                    }
1036
                }
1037
            }
1038
        }
1039
1040 2
        if (!address.equals("")) {
1041 2
            boolean isANumber = true;
1042 6
            for (int i = 0; i < address.length(); ++i) {
1043 5
                if (!(i == 0 && address.charAt(i) == '-')) {
1044 3
                    if (!Character.isDigit(address.charAt(i))) {
1045 2
                        isANumber = false;
1046
                    }
1047
                }
1048
            }
1049
1050
            /* This one checks the length of the address String because
1051
                            Integer.parseInt(100000000000000) throws an exception.*/
1052 1
            if (isANumber) {
1053 14
                if (address.length() > ("" + ADDRESSMIN).length() ||
1054
                        Integer.parseInt(address) > ADDRESSMAX ||
1055
                        Integer.parseInt(address) < ADDRESSMIN) {
1056 4
                    comment = new Message("Compilation failed: {0}",
1057
                            new Message(
1058
                                    "invalid address value.").toString()).toString();
1059 1
                    throw new TTK91CompileException(comment);
1060
                }
1061
            }
1062
        }
1063
1064 4
        if (addressingMode.equals("=") && address.equals("")) {
1065 4
            comment = new Message("Compilation failed: {0}",
1066
                    new Message("address expected.").toString()).toString();
1067 1
            throw new TTK91CompileException(comment);
1068
        }
1069
1070
        // Modified to support '@' addressingmode with opcode store.
1071
        // Added !addressingMode.equals("@") to if. 5.10.2004, Tom Bertell
1072 6
        if (opcode.equalsIgnoreCase("store") && address.equals("") &&
1073
                !addressingMode.equals("@")) {
1074 4
            comment = new Message("Compilation failed: {0}",
1075
                    new Message("address expected.").toString()).toString();
1076 1
            throw new TTK91CompileException(comment);
1077
        }
1078
1079 4
        if (opcode.equalsIgnoreCase("store") && addressingMode.equals("=")) {
1080 4
            comment = new Message("Compilation failed: {0}",
1081
                    new Message("invalid addressing mode {0}.", "="
1082
                    ).toString()).toString();
1083 1
            throw new TTK91CompileException(comment);
1084
        }
1085
1086 12
        if (opcode.equals("") && (!label.equals("") ||
1087
                !firstRegister.equals("") ||
1088
                !addressingMode.equals("") ||
1089
                !address.equals("") ||
1090
                !secondRegister.equals(""))) {
1091 4
            comment = new Message("Compilation failed: {0}",
1092
                    new Message("opcode missing.", "="
1093
                    ).toString()).toString();
1094 1
            throw new TTK91CompileException(comment);
1095
        }
1096
1097 2
        parsedLine = new String[6];
1098 3
        parsedLine[0] = label.trim();
1099 3
        parsedLine[1] = opcode.trim();
1100 3
        parsedLine[2] = firstRegister.trim();
1101 3
        parsedLine[3] = addressingMode.trim();
1102 3
        parsedLine[4] = address.trim();
1103 3
        parsedLine[5] = secondRegister.trim();
1104 1
        return parsedLine;
1105
    }
1106
1107
    /**
1108
     * This function tries to find a compiler command from the
1109
     * line. Works much like parseLine but this time valid opcodes
1110
     * are DEF, EQU, DC and DS.
1111
     *
1112
     * @param line String representing one line from source code.
1113
     * @return String array with label in position 0, command in the
1114
     *         position 1 and position 2 contains the parameter.
1115
     */
1116
    public String[] parseCompilerCommandLine(String line) throws TTK91CompileException {
1117
1118 2
        int fieldEnd = 0;
1119 2
        int nextToCheck = 0;
1120
        String label = "";
1121
        String opcode = "";
1122
        String value = "";
1123
        int intValue;
1124
        String[] parsedLine;
1125
1126
        String comment;                // for exception
1127
1128
        /* preprosessing */
1129 1
        line = line.toLowerCase();
1130 5
        line = line.replace('\t', ' ');
1131 1
        fieldEnd = line.indexOf(";");
1132 3
        if (fieldEnd != -1) {
1133 3
            line = line.substring(0, fieldEnd);
1134
        }
1135
1136 1
        line = line.trim();
1137
1138
        /* LABEL opcode value */
1139 1
        fieldEnd = line.indexOf(" ");
1140 3
        if (fieldEnd == -1) {
1141 1
            label = line.substring(nextToCheck);
1142 1
            fieldEnd = line.length();
1143
        } else {
1144 1
            label = line.substring(nextToCheck, fieldEnd);
1145
        }
1146
1147 3
        nextToCheck = fieldEnd + 1;
1148
1149
        /* label OPCODE value */
1150 3
        if (nextToCheck < line.length()) {
1151 4
            while (line.charAt(nextToCheck) == ' ') {
1152 1
                ++nextToCheck;
1153
            }
1154 3
            fieldEnd = line.indexOf(' ', nextToCheck);
1155 3
            if (fieldEnd == -1) {
1156 1
                opcode = line.substring(nextToCheck);
1157 1
                fieldEnd = line.length();
1158
            } else {
1159 1
                opcode = line.substring(nextToCheck, fieldEnd);
1160
            }
1161 2
            if (!opcode.matches("((dc)|(ds)|(equ)|(def))")) {
1162 4
                comment = new Message("Compilation failed: {0}",
1163
                        new Message("invalid opcode {0}.",
1164
                                opcode).toString()).toString();
1165 1
                throw new TTK91CompileException(comment);
1166
            }
1167
            nextToCheck = fieldEnd;
1168
        }
1169
1170
        /* label opcode VALUE */
1171 3
        if (nextToCheck < line.length()) {
1172 4
            while (line.charAt(nextToCheck) == ' ') {
1173 1
                ++nextToCheck;
1174
            }
1175 1
            value = line.substring(nextToCheck);
1176
1177 2
            if (opcode.equals("def")) {
1178 5
                if (value.length() < 1) {
1179 4
                    comment = new Message("Compilation failed: {0}",
1180
                            new Message("invalid value {0}.",
1181
                                    value).toString()).toString();
1182 1
                    throw new TTK91CompileException(comment);
1183
                }
1184
            } else {
1185 3
                if (value.length() > 0) {
1186
                    try {
1187 1
                        intValue = Integer.parseInt(value);
1188 6
                        if (opcode.equalsIgnoreCase("ds") && intValue < 1) {
1189 4
                            comment = new Message("Compilation failed: {0}",
1190
                                    new Message("invalid value for a DS {0}.",
1191
                                            value).toString()).toString();
1192 1
                            throw new TTK91CompileException(comment);
1193
                        }
1194
                    } catch (NumberFormatException e) {
1195 4
                        comment = new Message("Compilation failed: {0}",
1196
                                new Message("invalid value {0}.",
1197
                                        value).toString()).toString();
1198 1
                        throw new TTK91CompileException(comment);
1199
                    }
1200
                }
1201
            }
1202
        } else {
1203 4
            comment = new Message("Compilation failed: {0}",
1204
                    new Message("value expected.").toString()).toString();
1205 1
            throw new TTK91CompileException(comment);
1206
        }
1207
1208
1209 4
        if (!opcode.equalsIgnoreCase("dc") && value.equals("")) {
1210 4
            comment = new Message("Compilation failed: {0}",
1211
                    new Message("value expected.").toString()).toString();
1212 1
            throw new TTK91CompileException(comment);
1213
        }
1214
1215 2
        parsedLine = new String[3];
1216 2
        parsedLine[0] = label;
1217 2
        parsedLine[1] = opcode;
1218 2
        parsedLine[2] = value;
1219 1
        return parsedLine;
1220
    }
1221
1222
    /**
1223
     * This method tests whether a label name contains at least one
1224
     * non-number and consists of 0-9, A-Ö and _.
1225
     * It does not check whether the label is in use already or if it
1226
     * is a reserved word.
1227
     *
1228
     * @param labelName The label name to test.
1229
     * @return True if the label consists of valid characters, false
1230
     *         otherwise.
1231
     */
1232
    private boolean validLabelName(String labelName) {
1233
        // It must have one non-number. Valid characters are A-Ö, 0-9 and _.
1234
        // Test 1: the word contains one or more of the following:
1235
        // a-z, A-Z, _, 0-9, åäö, ÅÄÖ, in any order.
1236
        // Test 2: the word also contains one non-number (class \D
1237
        // means anything but 0-9) surrounded by any number of
1238
        // any character. All these 'anything buts' and 'anys' are
1239
        // also valid characters, since we check that in Test 1.
1240 4
        if (labelName.matches("[åäöÅÄÖ\\w]+") &&
1241
                labelName.matches(".*\\D.*")) {
1242 3
            return true;
1243
        }
1244 3
        return false;
1245
    }
1246
}

Mutations

49

Removed assignment to member variable VALIDLABELCHARS : SURVIVED

50

Substituted -1 with 0 : SURVIVED

Removed assignment to member variable NOTVALID : SURVIVED

Substituted -1 with 1 : SURVIVED

51

Substituted -1 with 1 : SURVIVED

Removed assignment to member variable EMPTY : SURVIVED

Substituted -1 with 0 : SURVIVED

56

Substituted 2147483647 with -2147483648 : SURVIVED

Replaced constant value of 2147483647 with -2147483648 : SURVIVED

Removed assignment to member variable MAXINT : SURVIVED

61

Substituted -2147483648 with -2147483647 : SURVIVED

Removed assignment to member variable MININT : SURVIVED

Replaced constant value of -2147483648 with -2147483647 : SURVIVED

66

Replaced constant value of 32767 with 32768 : SURVIVED

Removed assignment to member variable ADDRESSMAX : SURVIVED

Substituted 32767 with -32768 : SURVIVED

71

Replaced constant value of -32768 with -32767 : SURVIVED

Substituted -32768 with -32767 : SURVIVED

Removed assignment to member variable ADDRESSMIN : SURVIVED

159

Removed assignment to member variable compileDebugger : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/CompileDebugger::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

160

Removed assignment to member variable symbolicInterpreter : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

172

Removed assignment to member variable firstRound : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

173

Removed assignment to member variable compileFinished : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

175

Substituted -1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::indexOf : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

176

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

178

removed call to java/lang/String::split : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable source : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

180

Removed assignment to member variable nextLine : KILLED -> fi.helsinki.cs.titokone.ControlTest.testSaveBinaryGuessFilename(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

181

Removed assignment to member variable defStdin : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

182

Removed assignment to member variable defStdout : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

184

removed call to java/util/Vector::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable code : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

185

Removed assignment to member variable symbols : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/HashMap::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

186

Removed assignment to member variable symbolTable : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Vector::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

188

Removed assignment to member variable invalidLabels : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/HashMap::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

189

removed call to java/util/HashMap::putAll : SURVIVED

190

removed call to java/util/HashMap::putAll : SURVIVED

218

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

219

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

220

removed call to fi/helsinki/cs/titokone/CompileDebugger::firstPhase : SURVIVED

221

removed call to fi/helsinki/cs/titokone/Compiler::initializeSecondRound : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

222

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::compileLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

224

removed call to fi/helsinki/cs/titokone/CompileDebugger::firstPhase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

225

removed call to fi/helsinki/cs/titokone/Compiler::firstRoundProcess : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

226

Replaced integer addition with subtraction : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : TIMED_OUT

Substituted 1 with 0 : TIMED_OUT

Removed assignment to member variable nextLine : TIMED_OUT

227

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::compileLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

230

removed call to java/util/Vector::size : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

231

removed call to fi/helsinki/cs/titokone/CompileDebugger::finalPhase : SURVIVED

232

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable compileFinished : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

233

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::compileLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

235

removed call to fi/helsinki/cs/titokone/CompileDebugger::secondPhase : SURVIVED

236

removed call to fi/helsinki/cs/titokone/Compiler::secondRoundProcess : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Vector::get : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

237

Removed assignment to member variable nextLine : TIMED_OUT

Replaced integer addition with subtraction : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : TIMED_OUT

Substituted 1 with 0 : TIMED_OUT

238

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::compileLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

249

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

250

Removed assignment to member variable dataMemoryLines : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

251

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testSaveBinaryGuessFilename(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testSaveBinaryGuessFilename(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testSaveBinaryGuessFilename(fi.helsinki.cs.titokone.ControlTest)

252

removed call to java/lang/Integer::parseInt : SURVIVED

removed call to fi/helsinki/cs/titokone/MemoryLine::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testSaveBinaryGuessFilename(fi.helsinki.cs.titokone.ControlTest)

255

removed call to fi/helsinki/cs/titokone/SymbolTable::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

260

Substituted 0 with 1 : SURVIVED

removed call to java/util/Vector::size : SURVIVED

negated conditional : SURVIVED

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

261

removed call to java/util/Vector::get : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

262

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

263

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/Integer::parseInt : SURVIVED

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

264

removed call to fi/helsinki/cs/titokone/SymbolTable::addSymbol : SURVIVED

267

negated conditional : RUN_ERROR

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

268

removed call to fi/helsinki/cs/titokone/SymbolTable::addDefinition : NO_COVERAGE

270

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testLoad(fi.helsinki.cs.titokone.ControlTest)

271

removed call to fi/helsinki/cs/titokone/SymbolTable::addDefinition : NO_COVERAGE

274

removed call to fi/helsinki/cs/titokone/Application::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::getApplication to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

277

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to java/lang/IllegalStateException::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

293

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::<init> : NO_COVERAGE

294

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::getSymbolicAndBinary to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::binaryToString : NO_COVERAGE

309

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::<init> : NO_COVERAGE

310

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::getSymbolicAndBinary to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/BinaryInterpreter::binaryToString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/MemoryLine::getBinary : NO_COVERAGE

327

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

330

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

331

Substituted 2 with 3 : SURVIVED

Substituted 2 with 3 : SURVIVED

332

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

333

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

335

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/CompileDebugger::setStatusMessage : SURVIVED

343

removed call to fi/helsinki/cs/titokone/Compiler::parseCompilerCommandLine : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

346

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

347

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

349

removed call to java/util/HashMap::containsKey : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

351

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

355

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

356

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

360

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Compiler::validLabelName : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

362

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

363

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

365

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

366

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

368

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/Integer::parseInt : SURVIVED

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

370

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

372

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

374

changed conditional boundary : SURVIVED

Replaced constant value of 2147483647 with -2147483648 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2147483647 with -2147483648 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

375

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

377

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

381

Substituted 1 with 0 : SURVIVED

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

Substituted 1 with 0 : SURVIVED

negated conditional : SURVIVED

382

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

383

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/String::trim : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

385

removed call to java/lang/Integer::parseInt : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

387

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

389

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

392

Substituted 2147483647 with -2147483648 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced constant value of -2147483648 with -2147483647 : NO_COVERAGE

Replaced constant value of 2147483647 with -2147483648 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted -2147483648 with -2147483647 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

393

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

395

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

400

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

negated conditional : SURVIVED

401

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/util/HashMap::containsKey : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

402

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

403

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

404

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::get : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/Vector::set : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

407

removed call to java/util/HashMap::put : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

408

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

409

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

410

removed call to java/util/Vector::add : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

414

removed call to java/lang/Integer::parseInt : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

416

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

418

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

421

negated conditional : NO_COVERAGE

Replaced constant value of 2147483647 with -2147483648 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted -2147483648 with -2147483647 : NO_COVERAGE

Substituted 2147483647 with -2147483648 : NO_COVERAGE

negated conditional : NO_COVERAGE

Replaced constant value of -2147483648 with -2147483647 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

422

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

424

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

427

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundEQU : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

428

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

429

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

430

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

431

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

433

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

435

Substituted 1 with 0 : SURVIVED

negated conditional : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to java/lang/String::equals : SURVIVED

436

Substituted 0 with 1 : SURVIVED

removed call to java/util/HashMap::containsKey : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

437

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

438

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : 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/StringBuilder::<init> : NO_COVERAGE

440

removed call to java/util/HashMap::get : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/Vector::set : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

445

Substituted 0 with 1 : SURVIVED

removed call to java/util/Vector::size : SURVIVED

removed call to java/lang/Integer::<init> : SURVIVED

removed call to java/util/HashMap::put : SURVIVED

Substituted 0 with 1 : SURVIVED

446

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

447

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::toString : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

449

removed call to java/util/Vector::add : SURVIVED

removed call to [Ljava/lang/String;::clone : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

451

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundDS : SURVIVED

452

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

454

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : SURVIVED

457

removed call to java/lang/String::equals : SURVIVED

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

negated conditional : SURVIVED

459

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundDC : NO_COVERAGE

461

removed call to java/util/HashMap::containsKey : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

463

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

464

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : 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

Substituted 1 with 0 : NO_COVERAGE

466

removed call to java/util/Vector::set : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

removed call to java/util/HashMap::get : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

471

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

472

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

473

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : 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

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

475

removed call to java/util/Vector::add : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

478

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundDC : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

480

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

482

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

485

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

486

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

488

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

489

Removed assignment to member variable defStdin : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

491

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Removed assignment to member variable defStdout : NO_COVERAGE

493

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

494

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::toUpperCase : NO_COVERAGE

495

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

496

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

498

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

500

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

502

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

518

removed call to fi/helsinki/cs/titokone/Compiler::parseLine : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

520

removed call to java/lang/String::equals : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

524

removed call to java/util/Vector::add : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

525

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

526

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

527

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

530

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::containsKey : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

532

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

533

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

535

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

537

removed call to java/util/HashMap::containsKey : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

538

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

539

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

541

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::get : NO_COVERAGE

removed call to java/util/Vector::set : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

544

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

545

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

546

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

548

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

removed call to java/util/Vector::add : NO_COVERAGE

551

Substituted 1 with 0 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundLabel : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

557

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 4 with 5 : SURVIVED

Substituted 4 with 5 : SURVIVED

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

558

Substituted 4 with 5 : NO_COVERAGE

removed call to java/lang/Integer::parseInt : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

562

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getRegisterId : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

563

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

564

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

565

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/CompileDebugger::foundSymbol : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

566

Substituted 4 with 5 : NO_COVERAGE

removed call to java/util/HashMap::containsKey : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

negated conditional : NO_COVERAGE

567

Substituted 4 with 5 : NO_COVERAGE

removed call to java/util/HashMap::get : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

568

removed call to java/util/Vector::size : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

570

Substituted 0 with 1 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

571

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

572

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

removed call to java/util/Vector::add : NO_COVERAGE

575

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to java/util/Vector::size : NO_COVERAGE

removed call to java/lang/Integer::<init> : NO_COVERAGE

removed call to java/util/HashMap::put : NO_COVERAGE

577

Substituted 0 with 1 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

578

Substituted 4 with 5 : 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/lang/StringBuilder::append : NO_COVERAGE

removed call to java/util/HashMap::get : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

580

removed call to java/util/Vector::add : NO_COVERAGE

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

586

negated conditional : SURVIVED

negated conditional : SURVIVED

587

Substituted 2 with 3 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

588

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

589

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

590

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

593

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

596

negated conditional : SURVIVED

597

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

599

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

602

negated conditional : SURVIVED

603

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

605

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : NO_COVERAGE

612

removed call to fi/helsinki/cs/titokone/CompileDebugger::lineCompiled : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::firstRoundProcess to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

625

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Removed assignment to member variable nextLine : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

626

Removed assignment to member variable firstRound : TIMED_OUT

Substituted 0 with 1 : TIMED_OUT

Substituted 0 with 1 : TIMED_OUT

630

removed call to java/util/Vector::size : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

631

negated conditional : SURVIVED

Substituted 0 with 1 : SURVIVED

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

632

removed call to java/util/Vector::get : SURVIVED

636

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

640

removed call to fi/helsinki/cs/titokone/CompileDebugger::setStatusMessage : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

643

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/util/Vector::size : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

644

removed call to java/util/Vector::get : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

645

Substituted 2 with 3 : SURVIVED

removed call to java/lang/String::length : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : SURVIVED

changed conditional boundary : SURVIVED

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

646

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equalsIgnoreCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

647

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Replaced integer addition with subtraction : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/Integer::parseInt : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

650

Substituted 0 with 1 : NO_COVERAGE

Substituted 1 with 0 : 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

removed call to java/lang/String::substring : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

negated conditional : NO_COVERAGE

651

Changed increment from 1 to -1 : NO_COVERAGE

658

Removed assignment to member variable data : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

659

Substituted 2 with 3 : SURVIVED

Substituted 2 with 3 : SURVIVED

660

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

661

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

662

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

664

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

667

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : RUN_ERROR

removed call to java/util/Vector::size : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

668

removed call to java/util/Vector::get : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

669

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : SURVIVED

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::length : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : SURVIVED

670

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equalsIgnoreCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

671

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/Integer::parseInt : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

672

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

673

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::toString : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

674

removed call to java/util/Vector::set : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to [Ljava/lang/String;::clone : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

681

Replaced integer addition with subtraction : SURVIVED

683

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

684

Replaced integer addition with subtraction : SURVIVED

686

Replaced integer addition with subtraction : SURVIVED

688

negated conditional : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

689

Substituted 2 with 3 : NO_COVERAGE

removed call to java/lang/String::trim : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 2 with 3 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

690

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 3 with 4 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

694

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

695

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

696

removed call to [Ljava/lang/String;::clone : NO_COVERAGE

removed call to java/util/Vector::set : NO_COVERAGE

697

Changed increment from 1 to -1 : NO_COVERAGE

698

Changed increment from 1 to -1 : NO_COVERAGE

705

Substituted 2 with 3 : SURVIVED

removed call to java/util/Vector::size : SURVIVED

Substituted 2 with 3 : SURVIVED

706

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

negated conditional : SURVIVED

707

removed call to java/util/Vector::get : SURVIVED

711

Removed assignment to member variable codeMemoryLines : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

713

removed call to fi/helsinki/cs/titokone/CompileDebugger::finalFirstPhase : SURVIVED

714

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::initializeSecondRound to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/CompileDebugger::lineCompiled : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

730

removed call to fi/helsinki/cs/titokone/CompileDebugger::setStatusMessage : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

737

removed call to fi/helsinki/cs/titokone/Compiler::parseLine : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

738

Substituted 4 with 5 : SURVIVED

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 4 with 5 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

740

removed call to java/lang/Integer::parseInt : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

742

removed call to java/util/HashMap::get : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

removed call to java/lang/Integer::intValue : NO_COVERAGE

removed call to java/util/Vector::get : NO_COVERAGE

744

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

745

Substituted 4 with 5 : NO_COVERAGE

Substituted 4 with 5 : NO_COVERAGE

746

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

747

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

749

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

754

Substituted 1 with 0 : SURVIVED

Substituted 5 with 6 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 5 with -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : SURVIVED

Substituted 3 with 4 : SURVIVED

Substituted 3 with 4 : SURVIVED

Substituted 2 with 3 : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::stringToBinary : SURVIVED

760

removed call to fi/helsinki/cs/titokone/CompileDebugger::setBinary : SURVIVED

761

removed call to fi/helsinki/cs/titokone/MemoryLine::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

763

removed call to fi/helsinki/cs/titokone/Instruction::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Instruction::toColonString : SURVIVED

764

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/StringBuilder::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : SURVIVED

removed call to java/lang/StringBuilder::toString : SURVIVED

Substituted 0 with 1 : SURVIVED

Substituted 3 with 4 : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : SURVIVED

Substituted 1 with 0 : SURVIVED

removed call to java/lang/StringBuilder::append : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

765

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

766

removed call to fi/helsinki/cs/titokone/CompileDebugger::setComment : SURVIVED

768

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::secondRoundProcess to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/CompileDebugger::lineCompiled : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

789

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

790

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

791

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

794

removed call to java/lang/String::indexOf : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

795

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

796

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

798

Substituted 9 with 10 : SURVIVED

Replaced constant value of 32 with 33 : SURVIVED

Replaced constant value of 9 with 10 : SURVIVED

Substituted 32 with 33 : SURVIVED

removed call to java/lang/String::replace : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

799

Replaced constant value of 160 with 161 : SURVIVED

Substituted 32 with 33 : SURVIVED

Replaced constant value of 32 with 33 : SURVIVED

Substituted 160 with 161 : SURVIVED

removed call to java/lang/String::replace : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

801

removed call to java/lang/String::toLowerCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

802

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

804

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::length : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

805

Replaced constant value of 6 with 7 : NO_COVERAGE

Substituted 6 with 7 : NO_COVERAGE

806

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

negated conditional : NO_COVERAGE

809

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::parseLine to ( if (x != null) null else throw new RuntimeException ) : NO_COVERAGE

813

removed call to java/lang/String::split : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

814

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

818

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getOpcode : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 1 : SURVIVED

Substituted -1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

819

removed call to fi/helsinki/cs/titokone/Compiler::validLabelName : NO_COVERAGE

negated conditional : NO_COVERAGE

820

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

823

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

827

Changed increment from 1 to -1 : NO_COVERAGE

832

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : SURVIVED

834

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

835

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getOpcode : SURVIVED

836

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

839

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

842

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

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/Message::toString : NO_COVERAGE

845

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

849

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

851

negated conditional : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

Substituted 44 with 45 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced constant value of 44 with 45 : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

854

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getRegisterId : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

858

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced integer subtraction with addition : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

860

Changed increment from 1 to -1 : NO_COVERAGE

863

Substituted -1 with 0 : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getRegisterId : NO_COVERAGE

negated conditional : NO_COVERAGE

866

Changed increment from 1 to -1 : NO_COVERAGE

875

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

876

negated conditional : NO_COVERAGE

Replaced constant value of 40 with 41 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

Substituted 40 with 41 : NO_COVERAGE

878

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Substituted 48 with 49 : NO_COVERAGE

removed call to java/lang/StringBuilder::toString : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

Replaced constant value of 48 with 49 : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

883

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

884

negated conditional : NO_COVERAGE

Substituted 61 with 62 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

Substituted 64 with 65 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Replaced constant value of 64 with 65 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

Replaced constant value of 61 with 62 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

887

Substituted 0 with 1 : 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/String::charAt : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/StringBuilder::append : NO_COVERAGE

removed call to java/lang/StringBuilder::<init> : NO_COVERAGE

888

removed call to java/lang/String::length : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

889

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

890

Changed increment from 1 to -1 : NO_COVERAGE

899

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

900

removed call to java/lang/String::indexOf : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

902

removed call to java/lang/String::indexOf : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

904

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

907

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

910

negated conditional : NO_COVERAGE

911

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

915

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

921

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

926

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getRegisterId : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

927

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

930

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

934

negated conditional : NO_COVERAGE

937

removed call to java/lang/String::substring : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

940

negated conditional : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

941

Changed increment from 1 to -1 : NO_COVERAGE

943

Substituted -1 with 0 : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

Substituted -1 with 0 : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

Substituted -1 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

945

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

948

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

952

negated conditional : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

954

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

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/Message::<init> : NO_COVERAGE

957

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

960

removed call to java/lang/String::indexOf : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

Replaced integer addition with subtraction : NO_COVERAGE

removed call to java/lang/String::indexOf : NO_COVERAGE

967

Changed increment from 1 to -1 : NO_COVERAGE

970

removed call to fi/helsinki/cs/titokone/SymbolicInterpreter::getRegisterId : SURVIVED

Substituted -1 with 1 : SURVIVED

negated conditional : SURVIVED

Substituted -1 with 0 : SURVIVED

975

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

976

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

978

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

981

removed call to java/lang/String::length : SURVIVED

negated conditional : SURVIVED

changed conditional boundary : SURVIVED

985

Substituted 0 with 1 : SURVIVED

removed call to java/lang/String::charAt : SURVIVED

Substituted 74 with 75 : SURVIVED

Substituted 0 with 1 : SURVIVED

removed call to java/lang/String::equals : SURVIVED

removed call to java/lang/String::toLowerCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Replaced constant value of 74 with 75 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 106 with 107 : SURVIVED

Substituted 0 with 1 : SURVIVED

Replaced constant value of 106 with 107 : SURVIVED

removed call to java/lang/String::charAt : SURVIVED

Substituted 0 with 1 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

988

negated conditional : NO_COVERAGE

removed call to java/lang/String::toLowerCase : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::matches : NO_COVERAGE

removed call to java/lang/String::toLowerCase : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

991

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

992

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

995

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

999

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::toLowerCase : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

1000

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

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/Message::toString : NO_COVERAGE

1003

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1006

removed call to java/lang/String::equalsIgnoreCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1009

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

negated conditional : NO_COVERAGE

1010

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

1012

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1015

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1018

negated conditional : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

removed call to java/lang/String::equalsIgnoreCase : NO_COVERAGE

negated conditional : NO_COVERAGE

1020

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

1021

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

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/Message::toString : NO_COVERAGE

1024

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1027

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::equals : NO_COVERAGE

negated conditional : NO_COVERAGE

1029

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1032

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1040

removed call to java/lang/String::equals : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1041

Substituted 1 with 0 : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

1042

changed conditional boundary : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

Changed increment from 1 to -1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1043

negated conditional : NO_COVERAGE

Substituted 45 with 46 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

Replaced constant value of 45 with 46 : NO_COVERAGE

1044

negated conditional : NO_COVERAGE

removed call to java/lang/Character::isDigit : NO_COVERAGE

removed call to java/lang/String::charAt : NO_COVERAGE

1045

Substituted 0 with 1 : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1052

negated conditional : NO_COVERAGE

1053

Replaced constant value of 32767 with 32768 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

negated conditional : NO_COVERAGE

Substituted -32768 with -32767 : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

Substituted 32767 with -32768 : NO_COVERAGE

negated conditional : NO_COVERAGE

removed call to java/lang/Integer::parseInt : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

removed call to java/lang/Integer::parseInt : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Replaced constant value of -32768 with -32767 : NO_COVERAGE

1056

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1059

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1064

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

1065

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1067

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1072

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : SURVIVED

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

1074

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1076

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1079

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

1080

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1083

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1086

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

negated conditional : SURVIVED

negated conditional : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

removed call to java/lang/String::equals : SURVIVED

1091

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1094

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1097

Replaced constant value of 6 with 7 : SURVIVED

Substituted 6 with 7 : SURVIVED

1098

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1099

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1100

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1101

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 3 with 4 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1102

Substituted 4 with 5 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 4 with 5 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1103

Substituted 5 with -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 5 with 6 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1104

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::parseLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1118

Substituted 0 with 1 : SURVIVED

Substituted 0 with 1 : SURVIVED

1119

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1129

removed call to java/lang/String::toLowerCase : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1130

Replaced constant value of 32 with 33 : SURVIVED

Replaced constant value of 9 with 10 : SURVIVED

removed call to java/lang/String::replace : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 9 with 10 : SURVIVED

Substituted 32 with 33 : SURVIVED

1131

removed call to java/lang/String::indexOf : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1132

Substituted -1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1133

Substituted 0 with 1 : NO_COVERAGE

removed call to java/lang/String::substring : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

1136

removed call to java/lang/String::trim : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1139

removed call to java/lang/String::indexOf : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1140

Substituted -1 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1141

removed call to java/lang/String::substring : SURVIVED

1142

removed call to java/lang/String::length : SURVIVED

1144

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1147

Replaced integer addition with subtraction : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : SURVIVED

Substituted 1 with 0 : SURVIVED

1150

changed conditional boundary : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::length : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1151

Replaced constant value of 32 with 33 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 32 with 33 : SURVIVED

removed call to java/lang/String::charAt : SURVIVED

1152

Changed increment from 1 to -1 : NO_COVERAGE

1154

removed call to java/lang/String::indexOf : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Replaced constant value of 32 with 33 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 32 with 33 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1155

Substituted -1 with 0 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted -1 with 1 : SURVIVED

1156

removed call to java/lang/String::substring : NO_COVERAGE

1157

removed call to java/lang/String::length : NO_COVERAGE

1159

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1161

removed call to java/lang/String::matches : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1162

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1165

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1171

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::length : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

changed conditional boundary : SURVIVED

1172

Substituted 32 with 33 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Replaced constant value of 32 with 33 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::charAt : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1173

Changed increment from 1 to -1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1175

removed call to java/lang/String::substring : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1177

removed call to java/lang/String::equals : SURVIVED

negated conditional : SURVIVED

1178

Substituted 1 with 0 : NO_COVERAGE

changed conditional boundary : NO_COVERAGE

Substituted 1 with 0 : NO_COVERAGE

removed call to java/lang/String::length : NO_COVERAGE

negated conditional : NO_COVERAGE

1179

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

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/Message::<init> : NO_COVERAGE

1182

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1185

removed call to java/lang/String::length : SURVIVED

changed conditional boundary : SURVIVED

negated conditional : SURVIVED

1187

removed call to java/lang/Integer::parseInt : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1188

negated conditional : SURVIVED

changed conditional boundary : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : SURVIVED

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

Substituted 1 with 0 : SURVIVED

1189

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

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/Message::toString : NO_COVERAGE

1192

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1195

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/Message::toString : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::<init> : NO_COVERAGE

1198

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1203

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

removed call to fi/helsinki/cs/titokone/Message::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to fi/helsinki/cs/titokone/Message::toString : SURVIVED

1205

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1209

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::equalsIgnoreCase : SURVIVED

negated conditional : SURVIVED

removed call to java/lang/String::equals : SURVIVED

1210

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/Message::<init> : NO_COVERAGE

removed call to fi/helsinki/cs/titokone/Message::toString : NO_COVERAGE

1212

removed call to fi/helsinki/cs/ttk91/TTK91CompileException::<init> : NO_COVERAGE

1215

Substituted 3 with 4 : SURVIVED

Substituted 3 with 4 : SURVIVED

1216

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 0 with 1 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1217

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1218

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 2 with 3 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1219

mutated return of Object value for fi/helsinki/cs/titokone/Compiler::parseCompilerCommandLine to ( if (x != null) null else throw new RuntimeException ) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1240

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::matches : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

negated conditional : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

removed call to java/lang/String::matches : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1242

replaced return of integer sized value with (x == 0 ? 1 : 0) : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

Substituted 1 with 0 : KILLED -> fi.helsinki.cs.titokone.ControlTest.testGetApplicationDefinitions(fi.helsinki.cs.titokone.ControlTest)

1244

Substituted 0 with 1 : NO_COVERAGE

replaced return of integer sized value with (x == 0 ? 1 : 0) : NO_COVERAGE

Substituted 0 with 1 : NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 0.27