Improved the ComparisonValue to act more like BoolValue

This commit is contained in:
Lukasz Baldyga committed 2020-11-29 12:04:37 +00:00
1 parent fe53dab235
commit 3ba3c24b50
1 file changed
+13 -9
@@ -31,42 +31,46 @@ namespace Advanced_Software_Engineering.Verbs.Value.ValueTypes {
} }
public string GetOriginalType() { public string GetOriginalType() {
return "comparison"; return Evaluate().GetOriginalType();
} }
public bool isInitialised() { public bool isInitialised() {
return true; return true;
} }
public bool ToBool() { private IValue Evaluate() {
switch (op) { switch (op) {
case "=": case "=":
return value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt(); return new BoolValue(value1.ToBool() == value2.ToBool() && value1.ToDouble() == value2.ToDouble() && value1.ToInt() == value2.ToInt());
case "!": case "!":
return value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt(); return new BoolValue(value1.ToBool() != value2.ToBool() && value1.ToDouble() != value2.ToDouble() && value1.ToInt() != value2.ToInt());
case ">": case ">":
return value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt(); return new BoolValue(value1.ToDouble() > value2.ToDouble() && value1.ToInt() > value2.ToInt());
case "<": case "<":
return value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt(); return new BoolValue(value1.ToDouble() < value2.ToDouble() && value1.ToInt() < value2.ToInt());
default: default:
throw new Exception("Bad operator"); throw new Exception("Bad operator");
} }
} }
public bool ToBool() {
return Evaluate().ToBool();
}
public Color ToColor() { public Color ToColor() {
throw new Exception("Cannot convert comparison to color"); return Evaluate().ToColor();
} }
public double ToDouble() { public double ToDouble() {
throw new Exception("Cannot convert comparison to double"); return Evaluate().ToDouble();
} }
public int ToInt() { public int ToInt() {
throw new Exception("Cannot convert comparison to int"); return Evaluate().ToInt();
} }
} }
} }