feat: add ceil, cos, sin, sqrt, isNan native methods and division-by-zero tests

Implement five new Num methods (ceil, cos, sin, sqrt, isNan) in wren_core.c and register them on the Num class. Add corresponding test files for ceil, floor, is_nan, and sqrt. Extend divide.wren with division-by-zero edge cases (inf, -inf, nan). Remove stale TODO comments from minus, multiply, and plus tests.
This commit is contained in:
Bob Nystrom
2014-01-08 15:47:14 +00:00
parent 693ab1c340
commit 193e4e30ab
9 changed files with 72 additions and 10 deletions
+30
View File
@@ -277,11 +277,36 @@ DEF_NATIVE(num_abs)
RETURN_NUM(fabs(AS_NUM(args[0])));
}
DEF_NATIVE(num_ceil)
{
RETURN_NUM(ceil(AS_NUM(args[0])));
}
DEF_NATIVE(num_cos)
{
RETURN_NUM(cos(AS_NUM(args[0])));
}
DEF_NATIVE(num_floor)
{
RETURN_NUM(floor(AS_NUM(args[0])));
}
DEF_NATIVE(num_isNan)
{
RETURN_BOOL(isnan(AS_NUM(args[0])));
}
DEF_NATIVE(num_sin)
{
RETURN_NUM(sin(AS_NUM(args[0])));
}
DEF_NATIVE(num_sqrt)
{
RETURN_NUM(sqrt(AS_NUM(args[0])));
}
DEF_NATIVE(num_toString)
{
// I think this should be large enough to hold any double converted to a
@@ -628,7 +653,12 @@ void wrenInitializeCore(WrenVM* vm)
vm->numClass = AS_CLASS(findGlobal(vm, "Num"));
NATIVE(vm->numClass, "abs", num_abs);
NATIVE(vm->numClass, "ceil", num_ceil);
NATIVE(vm->numClass, "cos", num_cos);
NATIVE(vm->numClass, "floor", num_floor);
NATIVE(vm->numClass, "isNan", num_isNan);
NATIVE(vm->numClass, "sin", num_sin);
NATIVE(vm->numClass, "sqrt", num_sqrt);
NATIVE(vm->numClass, "toString", num_toString)
NATIVE(vm->numClass, "-", num_negate);
NATIVE(vm->numClass, "- ", num_minus);