@@ -4,21 +4,23 @@ module Test.Properties.TypedArray where
4
4
import Prelude
5
5
6
6
import Control.Monad.Gen (suchThat )
7
- import Data.Array as Array
7
+ import Data.Array (all , cons , drop , length , reverse , slice , snoc , sort , take , unsafeIndex ) as Array
8
+ import Data.Array.Partial (head ) as Array
8
9
import Data.ArrayBuffer.Typed (class TypedArray )
9
10
import Data.ArrayBuffer.Typed as TA
10
11
import Data.ArrayBuffer.Typed.Gen (WithIndices (..), genFloat32 , genFloat64 , genInt16 , genInt32 , genInt8 , genTypedArray , genUint16 , genUint32 , genUint8 , genWithIndices )
11
12
import Data.ArrayBuffer.Types (ArrayView , Float32Array , Float64Array , Int16Array , Int32Array , Int8Array , Uint16Array , Uint8Array , Uint8ClampedArray , Uint32Array )
12
13
import Data.ArrayBuffer.ValueMapping (class BytesPerValue )
13
14
import Data.Maybe (Maybe (..), fromMaybe , isJust )
14
15
import Data.Traversable (traverse )
15
- import Data.Typelevel.Num (class Nat , D0 , D1 , D2 , D5 , d0 , d1 , toInt' )
16
- import Data.Vec (head , index ) as Vec
16
+ import Data.Typelevel.Num (class Nat , D0 , D1 , D2 , D5 , toInt' )
17
+ -- import Data.Vec (head, index) as Vec
17
18
import Effect (Effect )
18
19
import Effect.Console (log )
19
20
import Effect.Ref (Ref )
20
21
import Effect.Ref as Ref
21
22
import Effect.Unsafe (unsafePerformEffect )
23
+ import Partial.Unsafe (unsafePartial )
22
24
import Test.QuickCheck (class Testable , Result (..), quickCheckGen , (/==), (<?>), (===))
23
25
import Test.QuickCheck.Combinators ((==>), (|=|))
24
26
import Test.QuickCheck.Gen (Gen )
@@ -155,8 +157,8 @@ subarrayBehavesLikeArraySliceTests count = overAll count f
155
157
where
156
158
f :: forall a b t . TestableArrayF a b D2 t Result
157
159
f (WithIndices os xs) = do
158
- let s = os `Vec.index` d0
159
- e = os `Vec.index` d1
160
+ let s = unsafePartial $ os `Array.unsafeIndex` 0
161
+ e = unsafePartial $ os `Array.unsafeIndex` 1
160
162
axs <- TA .toArray xs
161
163
let sxs = TA .subArray s e xs
162
164
a <- TA .toArray sxs
@@ -167,8 +169,8 @@ sliceBehavesLikeArraySliceTests count = overAll count f
167
169
where
168
170
f :: forall a b t . TestableArrayF a b D2 t Result
169
171
f (WithIndices os xs) = do
170
- let s = os `Vec.index` d0
171
- e = os `Vec.index` d1
172
+ let s = unsafePartial $ os `Array.unsafeIndex` 0
173
+ e = unsafePartial $ os `Array.unsafeIndex` 1
172
174
axs <- TA .toArray xs
173
175
sxs <- TA .slice s e xs
174
176
a <- TA .toArray sxs
@@ -224,12 +226,12 @@ setSingletonIsEqTests count = overAll count setSingletonIsEq
224
226
setSingletonIsEq (WithIndices os xs) = do
225
227
e <- TA .at xs 0
226
228
case e of
227
- Nothing -> pure Success
228
- Just x -> do
229
- let o = Vec .head os
230
- _ <- TA .set xs (Just o) [x]
231
- e' <- TA .at xs o
232
- pure $ e' === Just x
229
+ Nothing -> pure Success
230
+ Just x -> do
231
+ let o = unsafePartial $ Array .head os
232
+ _ <- TA .set xs (Just o) [x]
233
+ e' <- TA .at xs o
234
+ pure $ e' === Just x
233
235
234
236
235
237
-- | Should work with any arbitrary predicate, but we can't generate them
@@ -592,7 +594,7 @@ modifyingOriginalMutatesSubArrayPartTests count = overAll count modifyingOrigina
592
594
where
593
595
modifyingOriginalMutatesSubArrayPart :: forall a b t . TestableArrayF a b D1 t Result
594
596
modifyingOriginalMutatesSubArrayPart (WithIndices os xs) = do
595
- let o = Vec .head os
597
+ let o = unsafePartial $ Array .head os
596
598
l = TA .length xs
597
599
zsSub = TA .subArray 0 l xs
598
600
zs <- TA .toArray zsSub
@@ -628,7 +630,7 @@ modifyingOriginalDoesntMutateSlicePartTests count = overAll count modifyingOrigi
628
630
modifyingOriginalDoesntMutateSlicePart (WithIndices os xs) = do
629
631
let l = TA .length xs
630
632
axs <- TA .toArray =<< TA .slice 0 l xs
631
- let o = Vec .head os
633
+ let o = unsafePartial $ Array .head os
632
634
e <- TA .at xs o
633
635
if Array .all (eq zero) axs || e == Just zero
634
636
then pure Success
@@ -645,7 +647,7 @@ modifyingOriginalDoesntMutateSlicePart2Tests count = overAll count modifyingOrig
645
647
where
646
648
modifyingOriginalDoesntMutateSlicePart2 :: forall a b t . TestableArrayF a b D1 t Result
647
649
modifyingOriginalDoesntMutateSlicePart2 (WithIndices os xs) = do
648
- let o = Vec .head os
650
+ let o = unsafePartial $ Array .head os
649
651
l = TA .length xs
650
652
axs <- TA .toArray =<< TA .slice o l xs
651
653
e <- TA .at xs o
@@ -675,7 +677,7 @@ copyWithinIsSliceTests count = overAll count copyWithinIsSlice
675
677
where
676
678
copyWithinIsSlice :: forall a b t . TestableArrayF a b D1 t Result
677
679
copyWithinIsSlice (WithIndices os xs) = do
678
- let o = Vec .head os
680
+ let o = unsafePartial $ Array .head os
679
681
l = TA .length xs
680
682
ys <- TA .toArray =<< TA .slice o l xs
681
683
TA .copyWithin xs 0 o Nothing
@@ -689,7 +691,7 @@ copyWithinViaSetTypedTests count = overAll count copyWithinViaSetTyped
689
691
where
690
692
copyWithinViaSetTyped :: forall a b t . TestableArrayF a b D1 t Result
691
693
copyWithinViaSetTyped (WithIndices os xs) = do
692
- let o = Vec .head os
694
+ let o = unsafePartial $ Array .head os
693
695
txs <- TA .toArray xs
694
696
xs' <- TA .fromArray txs :: Effect (ArrayView a )
695
697
let l = TA .length xs'
0 commit comments