]> gitweb.factorcode.org Git - factor.git/commitdiff
Fixes #35 - -1 <bit-array> should throw an error
authorSlava Pestov <slava@factorcode.org>
Sat, 27 Aug 2011 23:44:48 +0000 (16:44 -0700)
committerSlava Pestov <slava@factorcode.org>
Sat, 27 Aug 2011 23:44:48 +0000 (16:44 -0700)
basis/bit-arrays/bit-arrays-tests.factor
basis/bit-arrays/bit-arrays.factor

index 46089e3f7b97d90cfe089cfe36b6198b75e045bc..3e9daa291d8b368ff63f826dbdda4ce8b83177e6 100644 (file)
@@ -2,6 +2,8 @@ USING: alien sequences sequences.private arrays bit-arrays kernel
 tools.test math random ;
 IN: bit-arrays.tests
 
+[ -1 <bit-array> ] [ T{ bad-array-length f -1 } = ] must-fail-with
+
 [ 100 ] [ 100 <bit-array> length ] unit-test
 
 [
index ade7d8ddac0f399c765920b7c8349625a725a6fa..6097bed4f91f4907f2370e75b873f85657a8f815 100644 (file)
@@ -1,4 +1,4 @@
-! Copyright (C) 2007, 2010 Slava Pestov.
+! Copyright (C) 2007, 2011 Slava Pestov.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: alien alien.data accessors io.binary math math.bitwise
 alien.accessors kernel kernel.private sequences
@@ -41,8 +41,12 @@ TUPLE: bit-array
 
 PRIVATE>
 
+ERROR: bad-array-length n ;
+
 : <bit-array> ( n -- bit-array )
-    dup bits>bytes <byte-array> bit-array boa ; inline
+    dup 0 < [ bad-array-length ] when
+    dup bits>bytes <byte-array>
+    bit-array boa ; inline
 
 M: bit-array length length>> ; inline