40 lines
924 B
BQN
40 lines
924 B
BQN
### WHOLE-FILE-TEST
|
||
# tests bit_cpy
|
||
r ← (⊑•args).GetRand@
|
||
⟨Temp, Type, Unshare, Squeeze, Info, Variation⟩ ← •internal
|
||
|
||
Do ← { 𝕊:
|
||
al ← 1+r.Range 500
|
||
a ← al r.Range 2
|
||
aT ← "Ai32" Variation a
|
||
! a ≡ aT
|
||
! "bitarr" ≡ Type a
|
||
b ← al r.Range 2
|
||
! "bitarr" ≡ Type b
|
||
{ 𝕊:
|
||
bl ← r.Range 1+al
|
||
as ← r.Range 1+al-bl
|
||
bs ← r.Range 1+al-bl
|
||
i ← ↕bl
|
||
exp ← ((bs+i)⊏b)⌾((as+i)⊸⊏) a
|
||
aC ← Unshare a
|
||
202 Temp ⟨aC, as, b, bs, bl⟩
|
||
aC ≢ exp?
|
||
•Out "Fail:"
|
||
F ← {(¬ ·∧`⌾⌽ ' '⊸=)⊸/ ⥊' '∾˘˜ ↑‿64⥊ '0'+𝕩}
|
||
•Out "Exp: "∾F exp
|
||
•Out "Got: "∾F aC
|
||
•Out "Inputs:"
|
||
•Out "r: "∾F a
|
||
•Out "rs: "∾•Repr as
|
||
•Out "x: "∾F b
|
||
•Out "xs: "∾•Repr bs
|
||
•Out "l: "∾•Repr bl
|
||
!0
|
||
;0
|
||
}∘@⍟500 @
|
||
! a ≡ aT
|
||
}
|
||
|
||
@∘Do⍟2000 @
|