Skip to content

Commit

Permalink
bit-arrays: fix equal?
Browse files Browse the repository at this point in the history
  • Loading branch information
mrjbq7 committed Nov 1, 2023
1 parent 53b82cd commit fd09fc2
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
10 changes: 10 additions & 0 deletions basis/bit-arrays/bit-arrays-tests.factor
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,13 @@ sequences.private tools.test ;
{ 0xa } [ ?{ f t f t } bit-array>integer ] unit-test

{ 0x100 } [ ?{ f f f f f f f f t } bit-array>integer ] unit-test

{ t } [
2 B{ 0b011 } bit-array boa
2 B{ 0b111 } bit-array boa =
] unit-test

{ f } [
3 B{ 0b0 } bit-array boa
2 B{ 0b0 } bit-array boa =
] unit-test
9 changes: 8 additions & 1 deletion basis/bit-arrays/bit-arrays.factor
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,14 @@ M: bit-array like drop dup bit-array? [ >bit-array ] unless ; inline
M: bit-array new-sequence drop <bit-array> ; inline

M: bit-array equal?
over bit-array? [ [ underlying>> ] bi@ sequence= ] [ 2drop f ] if ;
over bit-array? [
2dup 2length dupd = [
[ [ underlying>> ] bi@ ] dip 8 mod [ sequence= ] [
[ [ unclip-slice ] bi@ swapd ] dip
'[ _ bits ] bi@ = [ sequence= ] [ 2drop f ] if
] if-zero
] [ 3drop f ] if
] [ 2drop f ] if ;

M: bit-array resize
dupd [ bits>bytes ] [ underlying>> ] bi*
Expand Down

0 comments on commit fd09fc2

Please sign in to comment.