Commit 2f41ad59ed7ec91fdc7877f757e06063bd9001c8

Authored by rtaniel
2 parents 453ac322 080a0e68

Merge branch 'test' into 'master'

Test

See merge request !1
1 -essai.ser  
2 -grid.data 1 +*.data
3 /.idea 2 /.idea
4 *.iml 3 *.iml
5 /out 4 /out
6 /bin 5 /bin
7 /.metadata 6 /.metadata
8 .project 7 .project
9 -.classpath  
10 \ No newline at end of file 8 \ No newline at end of file
  9 +.classpath
grid.data
No preview for this file type
src/ihm/TablooProto.java
@@ -277,7 +277,7 @@ public class TablooProto extends JPanel { @@ -277,7 +277,7 @@ public class TablooProto extends JPanel {
277 // Exécution de l'interface graphique a partir d'un terminal. 277 // Exécution de l'interface graphique a partir d'un terminal.
278 public static void main(String[] args) throws ClassNotFoundException, IOException { 278 public static void main(String[] args) throws ClassNotFoundException, IOException {
279 try { 279 try {
280 - grid = Grid.load(); 280 + grid = Grid.load("grid.data");
281 } catch (IOException | ClassNotFoundException e) { 281 } catch (IOException | ClassNotFoundException e) {
282 grid = new Grid(); 282 grid = new Grid();
283 } 283 }
@@ -298,7 +298,7 @@ public class TablooProto extends JPanel { @@ -298,7 +298,7 @@ public class TablooProto extends JPanel {
298 @Override 298 @Override
299 public void windowClosing(WindowEvent we) { 299 public void windowClosing(WindowEvent we) {
300 try { 300 try {
301 - grid.save(); 301 + grid.save("grid.data");
302 } catch (IOException e) { 302 } catch (IOException e) {
303 System.out.println(e.getMessage()); 303 System.out.println(e.getMessage());
304 } 304 }
src/kernel/Cell.java
@@ -5,12 +5,11 @@ import kernel.exception.CreateCycleException; @@ -5,12 +5,11 @@ import kernel.exception.CreateCycleException;
5 import java.io.Serializable; 5 import java.io.Serializable;
6 import java.util.ArrayList; 6 import java.util.ArrayList;
7 import java.util.List; 7 import java.util.List;
  8 +import java.util.Objects;
8 9
9 public class Cell implements Serializable { 10 public class Cell implements Serializable {
10 11
11 private static final long serialVersionUID = 1L; 12 private static final long serialVersionUID = 1L;
12 -  
13 -  
14 private String column; 13 private String column;
15 private int line; 14 private int line;
16 private double value; 15 private double value;
@@ -72,7 +71,7 @@ public class Cell implements Serializable { @@ -72,7 +71,7 @@ public class Cell implements Serializable {
72 71
73 public void setFormula(Formula formula) throws CreateCycleException { 72 public void setFormula(Formula formula) throws CreateCycleException {
74 if (formula.createCycle(this)) 73 if (formula.createCycle(this))
75 - throw new CreateCycleException(); 74 + throw new CreateCycleException("L'assignation de la formule " + formula.toString() + " créée un cycle.");
76 75
77 this.formula = formula; 76 this.formula = formula;
78 for (Cell cell : this.formula.getUtilisedCells()) 77 for (Cell cell : this.formula.getUtilisedCells())
@@ -94,5 +93,20 @@ public class Cell implements Serializable { @@ -94,5 +93,20 @@ public class Cell implements Serializable {
94 } 93 }
95 } 94 }
96 95
  96 + @Override
  97 + public boolean equals(Object o) {
  98 + if (this == o)
  99 + return true;
  100 + if (!(o instanceof Cell))
  101 + return false;
  102 +
  103 + Cell cell = (Cell) o;
  104 +
  105 + return line == cell.line && column.equals(cell.column);
  106 + }
97 107
  108 + @Override
  109 + public int hashCode() {
  110 + return Objects.hash(column, line);
  111 + }
98 } 112 }
src/kernel/Formula.java
@@ -6,6 +6,7 @@ public interface Formula { @@ -6,6 +6,7 @@ public interface Formula {
6 6
7 String getDevelopedFormula(); 7 String getDevelopedFormula();
8 8
  9 + @Override
9 String toString(); 10 String toString();
10 11
11 double eval(); 12 double eval();
src/kernel/Grid.java
@@ -20,46 +20,42 @@ public class Grid implements Serializable { @@ -20,46 +20,42 @@ public class Grid implements Serializable {
20 public static LanguageEnum language = LanguageEnum.FR; 20 public static LanguageEnum language = LanguageEnum.FR;
21 21
22 public void createCell(String column, int line, double value) throws InvalidIntervalException { 22 public void createCell(String column, int line, double value) throws InvalidIntervalException {
23 - column = column.toUpperCase();  
24 -  
25 if (!validateInterval(column, line)) 23 if (!validateInterval(column, line))
26 throw new InvalidIntervalException(); 24 throw new InvalidIntervalException();
  25 +
27 String id = this.getCellId(column, line); 26 String id = this.getCellId(column, line);
28 Cell cell = new Cell(column, line, value); 27 Cell cell = new Cell(column, line, value);
29 - this.cells.put(id, cell);  
30 28
  29 + this.cells.put(id, cell);
31 } 30 }
32 31
33 public void createCell(String column, int line, Formula formula) throws CreateCycleException, InvalidIntervalException { 32 public void createCell(String column, int line, Formula formula) throws CreateCycleException, InvalidIntervalException {
34 - column = column.toUpperCase();  
35 -  
36 if (!validateInterval(column, line)) 33 if (!validateInterval(column, line))
37 throw new InvalidIntervalException(); 34 throw new InvalidIntervalException();
  35 +
38 String id = this.getCellId(column, line); 36 String id = this.getCellId(column, line);
39 Cell cell = new Cell(column, line, formula); 37 Cell cell = new Cell(column, line, formula);
40 - this.cells.put(id, cell);  
41 38
  39 + this.cells.put(id, cell);
42 } 40 }
43 41
44 public void setValue(String column, int line, double value) throws CellNotFoundException { 42 public void setValue(String column, int line, double value) throws CellNotFoundException {
45 - column = column.toUpperCase();  
46 this.getCell(column, line).setValue(value); 43 this.getCell(column, line).setValue(value);
47 } 44 }
48 45
49 public void setFormula(String column, int line, Formula formula) throws CellNotFoundException, 46 public void setFormula(String column, int line, Formula formula) throws CellNotFoundException,
50 CreateCycleException { 47 CreateCycleException {
51 - column = column.toUpperCase();  
52 this.getCell(column, line).setFormula(formula); 48 this.getCell(column, line).setFormula(formula);
53 } 49 }
54 50
55 public Cell getCell(String column, int line) throws CellNotFoundException { 51 public Cell getCell(String column, int line) throws CellNotFoundException {
56 - column = column.toUpperCase();  
57 - Cell cell = this.cells.get(this.getCellId(column, line)); 52 + String id = this.getCellId(column, line);
  53 + Cell cell = this.cells.get(id);
58 54
59 if (cell != null) 55 if (cell != null)
60 return cell; 56 return cell;
61 else 57 else
62 - throw new CellNotFoundException(); 58 + throw new CellNotFoundException("La cellule " + id + " n'existe pas.");
63 } 59 }
64 60
65 public Cell getCell(String id) { 61 public Cell getCell(String id) {
@@ -71,26 +67,21 @@ public class Grid implements Serializable { @@ -71,26 +67,21 @@ public class Grid implements Serializable {
71 } 67 }
72 68
73 public double getValue(String column, int line) throws CellNotFoundException { 69 public double getValue(String column, int line) throws CellNotFoundException {
74 - column = column.toUpperCase();  
75 - return this.getCell(column, line).getValue(); 70 + return this.getCell(column.toUpperCase(), line).getValue();
76 } 71 }
77 72
78 public String getFormulaAsString(String column, int line) throws CellNotFoundException { 73 public String getFormulaAsString(String column, int line) throws CellNotFoundException {
79 - column = column.toUpperCase();  
80 - return this.getCell(column, line).toString(); 74 + return this.getCell(column.toUpperCase(), line).toString();
81 } 75 }
82 76
83 public String getDevelopedFormula(String column, int line) throws CellNotFoundException { 77 public String getDevelopedFormula(String column, int line) throws CellNotFoundException {
84 - column = column.toUpperCase();  
85 - return this.getCell(column, line).getDevelopedFormula(); 78 + return this.getCell(column.toUpperCase(), line).getDevelopedFormula();
86 } 79 }
87 80
88 private String getCellId(String column, int line) { 81 private String getCellId(String column, int line) {
89 - column = column.toUpperCase();  
90 - return column + line; 82 + return column.toUpperCase() + line;
91 } 83 }
92 84
93 -  
94 public int getTotalColumn() { 85 public int getTotalColumn() {
95 return MAX_COLUMNS.charAt(0) - (int) 'A' + 1; 86 return MAX_COLUMNS.charAt(0) - (int) 'A' + 1;
96 } 87 }
@@ -114,10 +105,10 @@ public class Grid implements Serializable { @@ -114,10 +105,10 @@ public class Grid implements Serializable {
114 Cell cell = this.getCell(id); 105 Cell cell = this.getCell(id);
115 106
116 if (!cell.getUsedIn().isEmpty()) 107 if (!cell.getUsedIn().isEmpty())
117 - throw new CannotDeleteCellException(); 108 + throw new CannotDeleteCellException("La cellule " + id + " est utilisée dans une autre case.");
118 109
119 cell.updateUsedIn(); 110 cell.updateUsedIn();
120 - this.cells.remove(this.getCellId(column, line)); 111 + this.cells.remove(id);
121 } 112 }
122 } 113 }
123 114
@@ -131,20 +122,21 @@ public class Grid implements Serializable { @@ -131,20 +122,21 @@ public class Grid implements Serializable {
131 return ascii; 122 return ascii;
132 } 123 }
133 124
134 - public void save() throws IOException {  
135 - File file = new File("grid.data"); 125 + public void save(String fileName) throws IOException {
  126 + File file = new File(fileName);
136 127
137 ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file)); 128 ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(file));
138 stream.writeObject(this); 129 stream.writeObject(this);
139 stream.close(); 130 stream.close();
140 } 131 }
141 132
142 - public static Grid load() throws IOException, ClassNotFoundException {  
143 - File file = new File("grid.data"); 133 + public static Grid load(String fileName) throws IOException, ClassNotFoundException {
  134 + File file = new File(fileName);
144 135
145 ObjectInputStream stream = new ObjectInputStream(new FileInputStream(file)); 136 ObjectInputStream stream = new ObjectInputStream(new FileInputStream(file));
  137 + Grid grid = (Grid) stream.readObject();
  138 + stream.close();
146 139
147 - return (Grid) stream.readObject(); 140 + return grid;
148 } 141 }
149 -  
150 } 142 }
src/kernel/exception/BadSyntaxException.java
@@ -3,6 +3,18 @@ package kernel.exception; @@ -3,6 +3,18 @@ package kernel.exception;
3 public class BadSyntaxException extends Exception { 3 public class BadSyntaxException extends Exception {
4 4
5 public BadSyntaxException() { 5 public BadSyntaxException() {
6 - super("Erreur de syntaxe."); 6 + super();
  7 + }
  8 +
  9 + public BadSyntaxException(String message) {
  10 + super(message);
  11 + }
  12 +
  13 + public BadSyntaxException(Throwable throwable) {
  14 + super(throwable);
  15 + }
  16 +
  17 + public BadSyntaxException(String message, Throwable throwable) {
  18 + super(message, throwable);
7 } 19 }
8 } 20 }
src/kernel/exception/CannotDeleteCellException.java
@@ -3,6 +3,18 @@ package kernel.exception; @@ -3,6 +3,18 @@ package kernel.exception;
3 public class CannotDeleteCellException extends Exception { 3 public class CannotDeleteCellException extends Exception {
4 4
5 public CannotDeleteCellException() { 5 public CannotDeleteCellException() {
6 - super("Cette cellule est utilisée dans une autre cellule."); 6 + super();
  7 + }
  8 +
  9 + public CannotDeleteCellException(String message) {
  10 + super(message);
  11 + }
  12 +
  13 + public CannotDeleteCellException(Throwable throwable) {
  14 + super(throwable);
  15 + }
  16 +
  17 + public CannotDeleteCellException(String message, Throwable throwable) {
  18 + super(message, throwable);
7 } 19 }
8 } 20 }
src/kernel/exception/CellNotFoundException.java
@@ -3,6 +3,18 @@ package kernel.exception; @@ -3,6 +3,18 @@ package kernel.exception;
3 public class CellNotFoundException extends Exception { 3 public class CellNotFoundException extends Exception {
4 4
5 public CellNotFoundException() { 5 public CellNotFoundException() {
6 - super("Vous voulez utiliser une cellule qui n'est pas encore créée."); 6 + super();
  7 + }
  8 +
  9 + public CellNotFoundException(String message) {
  10 + super(message);
  11 + }
  12 +
  13 + public CellNotFoundException(Throwable throwable) {
  14 + super(throwable);
  15 + }
  16 +
  17 + public CellNotFoundException(String message, Throwable throwable) {
  18 + super(message, throwable);
7 } 19 }
8 } 20 }
src/kernel/exception/CreateCycleException.java
1 package kernel.exception; 1 package kernel.exception;
2 2
3 public class CreateCycleException extends Exception { 3 public class CreateCycleException extends Exception {
  4 +
4 public CreateCycleException() { 5 public CreateCycleException() {
5 - super("L'aasignation de cette formule créée un cycle."); 6 + super();
  7 + }
  8 +
  9 + public CreateCycleException(String message) {
  10 + super(message);
  11 + }
  12 +
  13 + public CreateCycleException(Throwable throwable) {
  14 + super(throwable);
  15 + }
  16 +
  17 + public CreateCycleException(String message, Throwable throwable) {
  18 + super(message, throwable);
6 } 19 }
7 } 20 }
src/kernel/exception/InvalidIntervalException.java
1 package kernel.exception; 1 package kernel.exception;
2 2
3 public class InvalidIntervalException extends Exception { 3 public class InvalidIntervalException extends Exception {
  4 +
  5 + public InvalidIntervalException() {
  6 + super();
  7 + }
  8 +
  9 + public InvalidIntervalException(String message) {
  10 + super(message);
  11 + }
  12 +
  13 + public InvalidIntervalException(Throwable throwable) {
  14 + super(throwable);
  15 + }
  16 +
  17 + public InvalidIntervalException(String message, Throwable throwable) {
  18 + super(message, throwable);
  19 + }
4 } 20 }
src/kernel/function/Average.java
@@ -10,12 +10,13 @@ public class Average extends Function { @@ -10,12 +10,13 @@ public class Average extends Function {
10 10
11 public Average(List<Cell> listCells) { 11 public Average(List<Cell> listCells) {
12 super(listCells); 12 super(listCells);
13 - this.names.put(LanguageEnum.FR, "MOYENNE");  
14 - this.names.put(LanguageEnum.EN, "AVERAGE"); 13 + this.getNames().put(LanguageEnum.FR, "MOYENNE");
  14 + this.getNames().put(LanguageEnum.EN, "AVERAGE");
15 } 15 }
16 16
  17 + @Override
17 public double eval() { 18 public double eval() {
18 - OptionalDouble average = this.listCells.stream().mapToDouble(Cell::getValue).average(); 19 + OptionalDouble average = this.getUtilisedCells().stream().mapToDouble(Cell::getValue).average();
19 20
20 return average.isPresent() ? average.getAsDouble() : 0.; 21 return average.isPresent() ? average.getAsDouble() : 0.;
21 } 22 }
src/kernel/function/Function.java
@@ -14,8 +14,8 @@ import java.util.stream.Collectors; @@ -14,8 +14,8 @@ import java.util.stream.Collectors;
14 abstract public class Function implements Formula, Serializable { 14 abstract public class Function implements Formula, Serializable {
15 15
16 private static final long serialVersionUID = 1L; 16 private static final long serialVersionUID = 1L;
17 - public Map<LanguageEnum, String> names = new HashMap<>();  
18 - public List<Cell> listCells; 17 + private Map<LanguageEnum, String> names = new HashMap<>();
  18 + private List<Cell> listCells;
19 19
20 public Function(List<Cell> listCells) { 20 public Function(List<Cell> listCells) {
21 this.listCells = listCells; 21 this.listCells = listCells;
@@ -23,6 +23,11 @@ abstract public class Function implements Formula, Serializable { @@ -23,6 +23,11 @@ abstract public class Function implements Formula, Serializable {
23 23
24 abstract public double eval(); 24 abstract public double eval();
25 25
  26 + public Map<LanguageEnum, String> getNames() {
  27 + return this.names;
  28 + }
  29 +
  30 + @Override
26 public String getDevelopedFormula() { 31 public String getDevelopedFormula() {
27 return names.get(Grid.language) + "(" 32 return names.get(Grid.language) + "("
28 + this.listCells.stream() 33 + this.listCells.stream()
@@ -30,6 +35,7 @@ abstract public class Function implements Formula, Serializable { @@ -30,6 +35,7 @@ abstract public class Function implements Formula, Serializable {
30 .collect(Collectors.joining(",")) + ")"; 35 .collect(Collectors.joining(",")) + ")";
31 } 36 }
32 37
  38 + @Override
33 public String toString() { 39 public String toString() {
34 return names.get(Grid.language) + "(" 40 return names.get(Grid.language) + "("
35 + this.listCells.stream() 41 + this.listCells.stream()
@@ -37,18 +43,21 @@ abstract public class Function implements Formula, Serializable { @@ -37,18 +43,21 @@ abstract public class Function implements Formula, Serializable {
37 .collect(Collectors.joining(",")) + ")"; 43 .collect(Collectors.joining(",")) + ")";
38 } 44 }
39 45
  46 + @Override
40 public boolean createCycle(Cell cell) { 47 public boolean createCycle(Cell cell) {
41 - if (!this.listCells.contains(cell)) {  
42 - for (Cell currentCell : this.listCells)  
43 - if (currentCell.containFormula() && currentCell.getFormula().createCycle(cell))  
44 - return true;  
45 - } else  
46 - return true;  
47 -  
48 - return false; 48 + return this.listCells.contains(cell) || this.generateIndirectCycle(cell);
49 } 49 }
50 50
  51 + @Override
51 public List<Cell> getUtilisedCells() { 52 public List<Cell> getUtilisedCells() {
52 return this.listCells; 53 return this.listCells;
53 } 54 }
  55 +
  56 + private boolean generateIndirectCycle(Cell cell) {
  57 + for (Cell currentCell : this.listCells)
  58 + if (currentCell.containFormula() && currentCell.getFormula().createCycle(cell))
  59 + return true;
  60 +
  61 + return false;
  62 + }
54 } 63 }
src/kernel/function/Sum.java
@@ -9,11 +9,12 @@ public class Sum extends Function { @@ -9,11 +9,12 @@ public class Sum extends Function {
9 9
10 public Sum(List<Cell> listCells) { 10 public Sum(List<Cell> listCells) {
11 super(listCells); 11 super(listCells);
12 - this.names.put(LanguageEnum.FR, "SOMME");  
13 - this.names.put(LanguageEnum.EN, "SUM"); 12 + this.getNames().put(LanguageEnum.FR, "SOMME");
  13 + this.getNames().put(LanguageEnum.EN, "SUM");
14 } 14 }
15 15
  16 + @Override
16 public double eval() { 17 public double eval() {
17 - return this.listCells.stream().mapToDouble(Cell::getValue).sum(); 18 + return this.getUtilisedCells().stream().mapToDouble(Cell::getValue).sum();
18 } 19 }
19 } 20 }
src/kernel/operation/Addition.java
@@ -8,11 +8,13 @@ public class Addition extends BinaryOperation { @@ -8,11 +8,13 @@ public class Addition extends BinaryOperation {
8 super(leftCell, rightCell); 8 super(leftCell, rightCell);
9 } 9 }
10 10
  11 + @Override
11 public String getOperator() { 12 public String getOperator() {
12 return "+"; 13 return "+";
13 } 14 }
14 15
  16 + @Override
15 public double eval() { 17 public double eval() {
16 - return this.leftCell.getValue() + this.rightCell.getValue(); 18 + return this.getLeftCell().getValue() + this.getRightCell().getValue();
17 } 19 }
18 } 20 }
src/kernel/operation/BinaryOperation.java
@@ -10,8 +10,8 @@ import java.util.List; @@ -10,8 +10,8 @@ import java.util.List;
10 abstract public class BinaryOperation implements Formula, Serializable { 10 abstract public class BinaryOperation implements Formula, Serializable {
11 11
12 private static final long serialVersionUID = 1L; 12 private static final long serialVersionUID = 1L;
13 - protected Cell leftCell;  
14 - protected Cell rightCell; 13 + private Cell leftCell;
  14 + private Cell rightCell;
15 15
16 public BinaryOperation(Cell leftCell, Cell rightCell) { 16 public BinaryOperation(Cell leftCell, Cell rightCell) {
17 this.leftCell = leftCell; 17 this.leftCell = leftCell;
@@ -22,14 +22,25 @@ abstract public class BinaryOperation implements Formula, Serializable { @@ -22,14 +22,25 @@ abstract public class BinaryOperation implements Formula, Serializable {
22 22
23 abstract public String getOperator(); 23 abstract public String getOperator();
24 24
  25 + public Cell getLeftCell() {
  26 + return this.leftCell;
  27 + }
  28 +
  29 + public Cell getRightCell() {
  30 + return this.rightCell;
  31 + }
  32 +
  33 + @Override
25 public String getDevelopedFormula() { 34 public String getDevelopedFormula() {
26 return "(" + this.leftCell.getDevelopedFormula() + this.getOperator() + this.rightCell.getDevelopedFormula() + ")"; 35 return "(" + this.leftCell.getDevelopedFormula() + this.getOperator() + this.rightCell.getDevelopedFormula() + ")";
27 } 36 }
28 37
  38 + @Override
29 public String toString() { 39 public String toString() {
30 return "(" + this.leftCell.getId() + this.getOperator() + this.rightCell.getId() + ")"; 40 return "(" + this.leftCell.getId() + this.getOperator() + this.rightCell.getId() + ")";
31 } 41 }
32 42
  43 + @Override
33 public boolean createCycle(Cell cell) { 44 public boolean createCycle(Cell cell) {
34 if (this.leftCell.containFormula() && !this.rightCell.containFormula()) 45 if (this.leftCell.containFormula() && !this.rightCell.containFormula())
35 return this.leftCell.getFormula().createCycle(cell); 46 return this.leftCell.getFormula().createCycle(cell);
@@ -43,6 +54,7 @@ abstract public class BinaryOperation implements Formula, Serializable { @@ -43,6 +54,7 @@ abstract public class BinaryOperation implements Formula, Serializable {
43 return (cell.getId().equals(this.rightCell.getId()) || cell.getId().equals(this.leftCell.getId())); 54 return (cell.getId().equals(this.rightCell.getId()) || cell.getId().equals(this.leftCell.getId()));
44 } 55 }
45 56
  57 + @Override
46 public List<Cell> getUtilisedCells() { 58 public List<Cell> getUtilisedCells() {
47 List<Cell> cells = new ArrayList<>(); 59 List<Cell> cells = new ArrayList<>();
48 cells.add(this.leftCell); 60 cells.add(this.leftCell);
src/kernel/operation/Division.java
@@ -8,11 +8,13 @@ public class Division extends BinaryOperation { @@ -8,11 +8,13 @@ public class Division extends BinaryOperation {
8 super(leftCell, rightCell); 8 super(leftCell, rightCell);
9 } 9 }
10 10
  11 + @Override
11 public String getOperator() { 12 public String getOperator() {
12 return "/"; 13 return "/";
13 } 14 }
14 15
  16 + @Override
15 public double eval() { 17 public double eval() {
16 - return this.leftCell.getValue() / this.rightCell.getValue(); 18 + return this.getLeftCell().getValue() / this.getRightCell().getValue();
17 } 19 }
18 } 20 }
src/kernel/operation/Multiplication.java
@@ -8,11 +8,13 @@ public class Multiplication extends BinaryOperation { @@ -8,11 +8,13 @@ public class Multiplication extends BinaryOperation {
8 super(leftCell, rightCell); 8 super(leftCell, rightCell);
9 } 9 }
10 10
  11 + @Override
11 public String getOperator() { 12 public String getOperator() {
12 return "*"; 13 return "*";
13 } 14 }
14 15
  16 + @Override
15 public double eval() { 17 public double eval() {
16 - return this.leftCell.getValue() * this.rightCell.getValue(); 18 + return this.getLeftCell().getValue() * this.getRightCell().getValue();
17 } 19 }
18 } 20 }
src/kernel/operation/Subtraction.java
@@ -8,11 +8,13 @@ public class Subtraction extends BinaryOperation { @@ -8,11 +8,13 @@ public class Subtraction extends BinaryOperation {
8 super(leftCell, rightCell); 8 super(leftCell, rightCell);
9 } 9 }
10 10
  11 + @Override
11 public String getOperator() { 12 public String getOperator() {
12 return "-"; 13 return "-";
13 } 14 }
14 15
  16 + @Override
15 public double eval() { 17 public double eval() {
16 - return this.leftCell.getValue() - this.rightCell.getValue(); 18 + return this.getLeftCell().getValue() - this.getRightCell().getValue();
17 } 19 }
18 } 20 }
src/kernel/test/GridTest.java
@@ -213,9 +213,9 @@ public class GridTest { @@ -213,9 +213,9 @@ public class GridTest {
213 CreateCycleException { 213 CreateCycleException {
214 this.createCellsWithFormula(); 214 this.createCellsWithFormula();
215 215
216 - this.grid.save(); 216 + this.grid.save("test.data");
217 217
218 - Grid g = Grid.load(); 218 + Grid g = Grid.load("test.data");
219 219
220 Cell cell = g.getCell("A", 1); 220 Cell cell = g.getCell("A", 1);
221 221