diff --git a/src/ikarus.boot b/src/ikarus.boot index 1693002..b47d436 100644 Binary files a/src/ikarus.boot and b/src/ikarus.boot differ diff --git a/src/ikarus.compiler.ss b/src/ikarus.compiler.ss index 54d7af0..2becfc1 100644 --- a/src/ikarus.compiler.ss +++ b/src/ikarus.compiler.ss @@ -126,6 +126,12 @@ [$string-length 1 value] [$string-ref 2 value] [$string-set! 3 effect] + ;;; bytevectors + [bytevector? 1 pred] + [$make-bytevector 1 value] + [$bytevector-length 1 value] + [$bytevector-ref 2 value] + [$bytevector-set! 3 effect] ;;; symbols [$make-symbol 1 value] [$symbol-value 1 value] diff --git a/src/makefile.ss b/src/makefile.ss index 0f03823..2d5a7a4 100755 --- a/src/makefile.ss +++ b/src/makefile.ss @@ -117,6 +117,7 @@ [$chars (ikarus system $chars) #f] [$strings (ikarus system $strings) #f] [$vectors (ikarus system $vectors) #f] + [$bytes (ikarus system $bytevectors) #f] [$fx (ikarus system $fx) #f] [$symbols (ikarus system $symbols) #f] [$records (ikarus system $records) #f] @@ -130,6 +131,7 @@ [$boot (ikarus system $bootstrap) #f] )) + (define bootstrap-collection (let ([ls (map (lambda (x) @@ -469,6 +471,14 @@ [$string-set! $strings] [$string-length $strings] + [bytevector? i] + + [$make-bytevector $bytes] + [$bytevector-length $bytes] + [$bytevector-ref $bytes] + [$bytevector-set! $bytes] + + [$make-vector $vectors] [$vector-length $vectors] [$vector-ref $vectors] diff --git a/src/tests/tests-1.1-req.scm b/src/old-tests/tests-1.1-req.scm similarity index 100% rename from src/tests/tests-1.1-req.scm rename to src/old-tests/tests-1.1-req.scm diff --git a/src/tests/tests-1.2-req.scm b/src/old-tests/tests-1.2-req.scm similarity index 100% rename from src/tests/tests-1.2-req.scm rename to src/old-tests/tests-1.2-req.scm diff --git a/src/tests/tests-1.3-req.scm b/src/old-tests/tests-1.3-req.scm similarity index 100% rename from src/tests/tests-1.3-req.scm rename to src/old-tests/tests-1.3-req.scm diff --git a/src/tests/tests-1.4-req.scm b/src/old-tests/tests-1.4-req.scm similarity index 100% rename from src/tests/tests-1.4-req.scm rename to src/old-tests/tests-1.4-req.scm diff --git a/src/tests/tests-1.5-req.scm b/src/old-tests/tests-1.5-req.scm similarity index 100% rename from src/tests/tests-1.5-req.scm rename to src/old-tests/tests-1.5-req.scm diff --git a/src/tests/tests-1.6-req.scm b/src/old-tests/tests-1.6-req.scm similarity index 100% rename from src/tests/tests-1.6-req.scm rename to src/old-tests/tests-1.6-req.scm diff --git a/src/tests/tests-1.7-req.scm b/src/old-tests/tests-1.7-req.scm similarity index 100% rename from src/tests/tests-1.7-req.scm rename to src/old-tests/tests-1.7-req.scm diff --git a/src/tests/tests-1.8-req.scm b/src/old-tests/tests-1.8-req.scm similarity index 100% rename from src/tests/tests-1.8-req.scm rename to src/old-tests/tests-1.8-req.scm diff --git a/src/tests/tests-1.9-req.scm b/src/old-tests/tests-1.9-req.scm similarity index 100% rename from src/tests/tests-1.9-req.scm rename to src/old-tests/tests-1.9-req.scm diff --git a/src/tests/tests-2.1-req.scm b/src/old-tests/tests-2.1-req.scm similarity index 100% rename from src/tests/tests-2.1-req.scm rename to src/old-tests/tests-2.1-req.scm diff --git a/src/tests/tests-2.2-req.scm b/src/old-tests/tests-2.2-req.scm similarity index 100% rename from src/tests/tests-2.2-req.scm rename to src/old-tests/tests-2.2-req.scm diff --git a/src/tests/tests-2.3-req.scm b/src/old-tests/tests-2.3-req.scm similarity index 100% rename from src/tests/tests-2.3-req.scm rename to src/old-tests/tests-2.3-req.scm diff --git a/src/tests/tests-2.4-req.scm b/src/old-tests/tests-2.4-req.scm similarity index 100% rename from src/tests/tests-2.4-req.scm rename to src/old-tests/tests-2.4-req.scm diff --git a/src/tests/tests-2.6-req.scm b/src/old-tests/tests-2.6-req.scm similarity index 100% rename from src/tests/tests-2.6-req.scm rename to src/old-tests/tests-2.6-req.scm diff --git a/src/tests/tests-2.8-req.scm b/src/old-tests/tests-2.8-req.scm similarity index 100% rename from src/tests/tests-2.8-req.scm rename to src/old-tests/tests-2.8-req.scm diff --git a/src/tests/tests-2.9-req.scm b/src/old-tests/tests-2.9-req.scm similarity index 100% rename from src/tests/tests-2.9-req.scm rename to src/old-tests/tests-2.9-req.scm diff --git a/src/tests/tests-3.1-req.scm b/src/old-tests/tests-3.1-req.scm similarity index 100% rename from src/tests/tests-3.1-req.scm rename to src/old-tests/tests-3.1-req.scm diff --git a/src/tests/tests-3.2-req.scm b/src/old-tests/tests-3.2-req.scm similarity index 100% rename from src/tests/tests-3.2-req.scm rename to src/old-tests/tests-3.2-req.scm diff --git a/src/tests/tests-3.3-req.scm b/src/old-tests/tests-3.3-req.scm similarity index 100% rename from src/tests/tests-3.3-req.scm rename to src/old-tests/tests-3.3-req.scm diff --git a/src/tests/tests-3.4-req.scm b/src/old-tests/tests-3.4-req.scm similarity index 100% rename from src/tests/tests-3.4-req.scm rename to src/old-tests/tests-3.4-req.scm diff --git a/src/tests/tests-4.1-req.scm b/src/old-tests/tests-4.1-req.scm similarity index 100% rename from src/tests/tests-4.1-req.scm rename to src/old-tests/tests-4.1-req.scm diff --git a/src/tests/tests-4.2-req.scm b/src/old-tests/tests-4.2-req.scm similarity index 100% rename from src/tests/tests-4.2-req.scm rename to src/old-tests/tests-4.2-req.scm diff --git a/src/tests/tests-4.3-req.scm b/src/old-tests/tests-4.3-req.scm similarity index 100% rename from src/tests/tests-4.3-req.scm rename to src/old-tests/tests-4.3-req.scm diff --git a/src/tests/tests-5.1-req.scm b/src/old-tests/tests-5.1-req.scm similarity index 100% rename from src/tests/tests-5.1-req.scm rename to src/old-tests/tests-5.1-req.scm diff --git a/src/tests/tests-5.2-req.scm b/src/old-tests/tests-5.2-req.scm similarity index 100% rename from src/tests/tests-5.2-req.scm rename to src/old-tests/tests-5.2-req.scm diff --git a/src/tests/tests-5.3-req.scm b/src/old-tests/tests-5.3-req.scm similarity index 100% rename from src/tests/tests-5.3-req.scm rename to src/old-tests/tests-5.3-req.scm diff --git a/src/tests/tests-5.6-req.scm b/src/old-tests/tests-5.6-req.scm similarity index 100% rename from src/tests/tests-5.6-req.scm rename to src/old-tests/tests-5.6-req.scm diff --git a/src/tests/tests-new.scm b/src/old-tests/tests-new.scm similarity index 100% rename from src/tests/tests-new.scm rename to src/old-tests/tests-new.scm diff --git a/src/run-tests.ss b/src/run-tests.ss new file mode 100755 index 0000000..b7b4d66 --- /dev/null +++ b/src/run-tests.ss @@ -0,0 +1,7 @@ +#!/usr/bin/env ikarus --r6rs-script + +(import (ikarus) + (tests bytevectors)) + +(test-bytevectors) +(printf "Happy Happy Joy Joy\n") diff --git a/src/tests/bytevectors.ss b/src/tests/bytevectors.ss new file mode 100644 index 0000000..06318e5 --- /dev/null +++ b/src/tests/bytevectors.ss @@ -0,0 +1,23 @@ + +(library (tests bytevectors) + (export test-bytevectors) + (import (ikarus) (tests framework)) + + (define (not-byte-vector? x) + (not (bytevector? x))) + + (define-tests test-bytevectors + [bytevector? (make-bytevector 1)] + [bytevector? (make-bytevector 1 17)] + [bytevector? (make-bytevector 10 -17)] + [not-bytevector? 'foo] + [not-bytevector? "hey"] + [not-bytevector? (current-output-port)] + [not-bytevector? (current-input-port)] + [not-bytevector? '#(2837 2398 239)] + )) + + + + + diff --git a/src/tests/framework.ss b/src/tests/framework.ss new file mode 100644 index 0000000..38b307f --- /dev/null +++ b/src/tests/framework.ss @@ -0,0 +1,15 @@ + +(library (tests framework) + (export define-tests) + (import (ikarus)) + (define-syntax define-tests + (syntax-rules () + [(_ test-all [p0 e0] ...) + (define test-all + (lambda () + (let ([p p0] [e e0]) + (unless (p e) + (error 'test-all "~s failed, got ~s" + '(p0 e0) e))) + ... + (printf "[~s] Happy Happy Joy Joy\n" 'test-all)))])))