ref: 17bc29d342073a9cf32c2b684009d18ef4eb1864
parent: 96e08ec043ae59e7eec6707c9d410caa7fd114a5
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Wed Apr 30 23:40:57 EDT 2025
test all number constructors allowing no arguments; no-argument (rune) will return invalid rune
--- a/src/builtins.c
+++ b/src/builtins.c
@@ -291,6 +291,8 @@
BUILTIN("fixnum", fixnum)
{
+ if(nargs == 0)
+ return fixnum(0);
argcount(nargs, 1);
sl_v v = args[0];
if(isfixnum(v))
--- a/src/cvalues.c
+++ b/src/cvalues.c
@@ -255,7 +255,7 @@
BUILTIN("rune", rune)
{
if(nargs == 0){
- PUSH(fixnum(0));
+ PUSH(fixnum(Runeerror));
args = sl.sp-1;
}else
argcount(nargs, 1);
--- a/test/unittest.sl
+++ b/test/unittest.sl
@@ -22,9 +22,9 @@
(assert (= 3 unbound-var))
(assert (equal? (cons 1 0) (f)))
-(def (every-int n)
- (list (fixnum n) (s8 n) (u8 n) (s16 n) (u16 n) (s32 n) (u32 n)
- (p32 n) (s64 n) (u64 n) (p64 n) (f32 n) (f64 n) (bignum n)))
+(defmacro (every-int . n)
+ `(list (fixnum ,@n) (s8 ,@n) (u8 ,@n) (s16 ,@n) (u16 ,@n) (s32 ,@n) (u32 ,@n)
+ (p32 ,@n) (s64 ,@n) (u64 ,@n) (p64 ,@n) (f32 ,@n) (f64 ,@n) (bignum ,@n)))
(def (every-sint n)
(list (fixnum n) (s8 n) (s16 n) (s32 n) (s64 n) (f32 n) (f64 n) (bignum n)))
@@ -58,6 +58,7 @@
(test-lt (every-int 0) (every-int 1))
(test-eq (every-int 88) (every-int 88))
(test-eq (every-sint -88) (every-sint -88))
+(assert (every (λ (x) (= x 0)) (every-int)))
(def (test-square a)
(each (λ (i) (eval `(assert (>= (* ,i ,i) 0))))
@@ -789,6 +790,8 @@
(assert (rune-title-case? #\Dž))
(assert-fail (rune ""))
+(assert-fail (rune 'a))
+(assert (rune))
(def s "hello й goodbye")
(assert (= 4 (str-find s #\o)))