diff --git a/docs/greater_than_or_equals.md b/docs/greater_than_or_equals.md new file mode 100644 index 0000000..1af3225 --- /dev/null +++ b/docs/greater_than_or_equals.md @@ -0,0 +1,34 @@ +# greater_than_or_equals + +Returns true if the first argument is greater than or equal to the second argument. + +## Parameters + +* a (`integer`, `float`, `double`, `instruction`) - The first number. +* b (`integer`, `float`, `double`, `instruction`) - The second number. + +## Return + +(`boolean`) - True if the first argument is greater than or equal to the second argument. + +## Exceptions + +* `EvaluationException` - If there was an error while evaluating one or more parameters. +* `TypeException` - If one or more parameters are not of the expected type. + +## Instruction Example + +```json +{ + "type": "greater_than_or_equals", + "_": { + "a": 10, + "b": 2 + } +} +``` + +### Last Updated + +Monday, December 29th, 2022. +Written by [Netkas](https://git.n64.cc/netkas) \ No newline at end of file diff --git a/src/RTEX/Objects/Program/Instructions/GreaterThanOrEquals.php b/src/RTEX/Objects/Program/Instructions/GreaterThanOrEquals.php index 898cd8c..cfa9bd8 100644 --- a/src/RTEX/Objects/Program/Instructions/GreaterThanOrEquals.php +++ b/src/RTEX/Objects/Program/Instructions/GreaterThanOrEquals.php @@ -8,8 +8,9 @@ use RTEX\Classes\InstructionBuilder; use RTEX\Classes\Utilities; use RTEX\Engine; - use RTEX\Exceptions\Core\MalformedInstructionException; - use RTEX\Exceptions\Core\UnsupportedVariableType; + use RTEX\Exceptions\EvaluationException; + use RTEX\Exceptions\InstructionException; + use RTEX\Exceptions\Runtime\TypeException; use RTEX\Interfaces\InstructionInterface; class GreaterThanOrEquals implements InstructionInterface @@ -38,7 +39,6 @@ * Returns an array representation of the instruction * * @return array - * @throws UnsupportedVariableType */ public function toArray(): array { @@ -53,8 +53,7 @@ * * @param array $data * @return InstructionInterface - * @throws MalformedInstructionException - * @throws UnsupportedVariableType + * @throws InstructionException */ public static function fromArray(array $data): InstructionInterface { @@ -67,10 +66,19 @@ /** * @param Engine $engine * @return int - * @throws UnsupportedVariableType + * @throws TypeException + * @throws EvaluationException */ public function eval(Engine $engine): int { + $a = $engine->eval($this->A); + $b = $engine->eval($this->B); + + if (!is_numeric($a)) + throw new TypeException(sprintf('Parameter "a" must be numeric, %s given', Utilities::getType($a))); + if (!is_numeric($b)) + throw new TypeException(sprintf('Parameter "b" must be numeric, %s given', Utilities::getType($b))); + return (intval($engine->eval($this->A)) >= intval($engine->eval($this->B))); } @@ -78,7 +86,6 @@ * Returns the string representation of the instruction * * @return string - * @throws UnsupportedVariableType */ public function __toString(): string { @@ -103,8 +110,7 @@ * Sets the value of A * * @param mixed $A - * @throws UnsupportedVariableType - * @throws MalformedInstructionException + * @throws InstructionException */ public function setA(mixed $A): void { @@ -125,8 +131,7 @@ * Sets the value of B * * @param mixed $B - * @throws MalformedInstructionException - * @throws UnsupportedVariableType + * @throws InstructionException */ public function setB(mixed $B): void {