| 
									
										
										
										
											2010-05-03 22:38:50 -04:00
										 |  |  | USING: alien sequences sequences.private arrays bit-arrays kernel | 
					
						
							| 
									
										
										
										
											2008-07-02 03:03:30 -04:00
										 |  |  | tools.test math random ;
 | 
					
						
							| 
									
										
										
										
											2008-03-01 17:00:45 -05:00
										 |  |  | IN: bit-arrays.tests | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-08-27 19:44:48 -04:00
										 |  |  | [ -1 <bit-array> ] [ T{ bad-array-length f -1 } = ] must-fail-with | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 100 } [ 100 <bit-array> length ] unit-test | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t } | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     3 <bit-array> t 0 pick set-nth t 2 pick set-nth
 | 
					
						
							|  |  |  |     >array
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t } | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t } >bit-array >array
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t } { f t f } | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2009-10-27 23:32:56 -04:00
										 |  |  |     { t f t } >bit-array dup clone [ not ] map!
 | 
					
						
							| 
									
										
										
										
											2008-03-29 21:36:58 -04:00
										 |  |  |     [ >array ] bi@
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { f f f f f } | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t t f } >bit-array dup clear-bits >array
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t t t t t } | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     { t f t t f } >bit-array dup set-bits >array
 | 
					
						
							|  |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { t } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     100 [ | 
					
						
							| 
									
										
										
										
											2010-01-14 13:48:57 -05:00
										 |  |  |         drop 100 [ 2 random zero? ] replicate
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |         dup >bit-array >array =
 | 
					
						
							| 
									
										
										
										
											2010-01-14 10:10:13 -05:00
										 |  |  |     ] all-integers?
 | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { ?{ f } } [ | 
					
						
							| 
									
										
										
										
											2007-09-20 18:09:08 -04:00
										 |  |  |     1 2 { t f t f } <slice> >bit-array | 
					
						
							|  |  |  | ] unit-test | 
					
						
							| 
									
										
										
										
											2008-01-29 16:04:26 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { ?{ f t } } [ 0 2 ?{ f t f } subseq ] unit-test | 
					
						
							| 
									
										
										
										
											2008-01-29 16:04:26 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { ?{ t f t f f f } } [ 6 ?{ t f t } resize ] unit-test | 
					
						
							| 
									
										
										
										
											2008-01-29 16:04:26 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { ?{ t t } } [ 2 ?{ t t f t f t f t t t f t } resize ] unit-test | 
					
						
							| 
									
										
										
										
											2008-07-02 03:03:30 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ -10 ?{ } resize ] must-fail | 
					
						
							| 
									
										
										
										
											2008-06-05 23:06:38 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | [ -1 integer>bit-array ] must-fail | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { ?{ } } [ 0 integer>bit-array ] unit-test | 
					
						
							|  |  |  | { ?{ f t } } [ 2 integer>bit-array ] unit-test | 
					
						
							|  |  |  | { ?{ t t t t t t t t t } } [ 511 integer>bit-array ] unit-test | 
					
						
							|  |  |  | { ?{ | 
					
						
							| 
									
										
										
										
											2008-06-05 23:06:38 -04:00
										 |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | } } [ | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  |     0xffffffffffffffffffffffffffffffff integer>bit-array | 
					
						
							| 
									
										
										
										
											2008-06-05 23:06:38 -04:00
										 |  |  | ] unit-test | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 14 } [ ?{ f t t t } bit-array>integer ] unit-test | 
					
						
							|  |  |  | { 0 } [ ?{ } bit-array>integer ] unit-test | 
					
						
							|  |  |  | { 0xffffffffffffffffffffffffffffffff } [ ?{ | 
					
						
							| 
									
										
										
										
											2008-06-05 23:06:38 -04:00
										 |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  |     t t t t t t t t   t t t t t t t t   t t t t t t t t  t t t t t t t t
 | 
					
						
							|  |  |  | } bit-array>integer ] unit-test | 
					
						
							| 
									
										
										
										
											2008-12-26 14:58:45 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 49 } [ 49 <bit-array> dup set-bits [ ] count ] unit-test | 
					
						
							| 
									
										
										
										
											2009-01-07 17:16:27 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 1 } [ ?{ f t f t } byte-length ] unit-test | 
					
						
							| 
									
										
										
										
											2010-05-03 22:38:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 0xa } [ ?{ f t f t } bit-array>integer ] unit-test | 
					
						
							| 
									
										
										
										
											2010-05-03 22:38:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | { 0x100 } [ ?{ f f f f f f f f t } bit-array>integer ] unit-test |