Skip to content

Package: IfNode

IfNode

nameinstructionbranchcomplexitylinemethod
IfNode(AbstractNode, AbstractNode)
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
IfNode(AbstractNode, AbstractNode, AbstractNode)
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 2
100%
M: 0 C: 1
100%
equals(Object)
M: 0 C: 11
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
hashCode()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
interpret(CommunicationManager)
M: 0 C: 34
100%
M: 0 C: 4
100%
M: 0 C: 3
100%
M: 0 C: 7
100%
M: 0 C: 1
100%
toString()
M: 0 C: 12
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: package pruefskript.parser.nodes;
2:
3: import basic.PruefskriptConstants;
4: import pruefskript.CommunicationManager;
5: import pruefskript.parser.exceptions.CheckScriptException;
6: import pruefskript.parser.exceptions.WrongNodeException;
7: import pruefskript.parser.values.AbstractReturnValue;
8: import pruefskript.parser.values.VoidValue;
9:
10: /**
11: *
12: * @author group B5
13: *
14: */
15: public class IfNode extends AbstractTrinaryOperationNode {
16:         /**
17:          *
18:          * @param operand1
19:          * AbstractNode
20:          * @param operand2
21:          * AbstractNode
22:          */
23:         public IfNode(final AbstractNode operand1, final AbstractNode operand2) {
24:                 super(operand1, operand2, new StringNode("Nothing"));
25:         }
26:
27:         /**
28:          *
29:          * @param operand1
30:          * AbstractNode
31:          * @param operand2
32:          * AbstractNode
33:          * @param operand3
34:          * AbstractNode
35:          */
36:         public IfNode(final AbstractNode operand1, final AbstractNode operand2,
37:                         final AbstractNode operand3) {
38:                 super(operand1, operand2, operand3);
39:         }
40:
41:         @Override
42:         public String toString() {
43:                 return PruefskriptConstants.IFTITLE + PruefskriptConstants.BRACKET_OPEN + super.toString()
44:                                 + PruefskriptConstants.BRACKET_CLOSE;
45:         }
46:
47:         @Override
48:         public boolean equals(final Object obj) {
49:•                return super.equals(obj) && obj instanceof IfNode;
50:
51:         }
52:
53:         @Override
54:         public int hashCode() {
55:                 return super.hashCode() + PruefskriptConstants.IFNODE_HASHCODE;
56:         }
57:
58:         /**
59:          * Zunaechst wird Operant1 ausgewertet und in op1 gespeichert. Wenn op1 einen boolschen Wert
60:          * hat, wird dieser erfragt. Handelt es sich um true, wird Operant2 ausgewertet, bei false
61:          * operant 3. Der Nichts-Wert wird zurueckgegeben. Ansonsten wird eine Exception geworfen.
62:          */
63:         @Override
64:         public VoidValue interpret(final CommunicationManager mgr) throws CheckScriptException {
65:                 final AbstractReturnValue op1 = this.getOperand1().interpret(mgr);
66:•                if (op1.isBooleanValue()) {
67:•                        if (op1.toBooleanValue().getValue()) {
68:                                 this.getOperand2().interpret(mgr);
69:                         } else {
70:                                 this.getOperand3().interpret(mgr);
71:                         }
72:                         return new VoidValue();
73:                 } else {
74:                         throw new WrongNodeException(PruefskriptConstants.UNEXPECTED_BOOL_OPERATION);
75:                 }
76:         }
77: }