@@ -142,6 +142,16 @@ main = defaultMain $ testGroup "opencv"
142
142
, HU. testCase " eye_m33 Double" $ testVecMatVec (eye_m33 :: M33 Double )
143
143
, HU. testCase " 1..9 Int16" $ testVecMatVec (V3 (V3 1 2 3 ) (V3 4 5 6 ) (V3 7 8 9 ) :: M33 Int16 )
144
144
]
145
+ , testGroup " unsafe mat -> vec -> mat"
146
+ [ HU. testCase " eye_m33 Word8" $ testUnsafeMatVecMat (eye_m33 :: M33 Word8 )
147
+ , HU. testCase " eye_m33 Double" $ testUnsafeMatVecMat (eye_m33 :: M33 Double )
148
+ , HU. testCase " 1..9 Int16" $ testUnsafeMatVecMat (V3 (V3 1 2 3 ) (V3 4 5 6 ) (V3 7 8 9 ) :: M33 Int16 )
149
+ ]
150
+ , testGroup " unsafe vec -> mat -> vec"
151
+ [ HU. testCase " eye_m33 Word8" $ testUnsafeVecMatVec (eye_m33 :: M33 Word8 )
152
+ , HU. testCase " eye_m33 Double" $ testUnsafeVecMatVec (eye_m33 :: M33 Double )
153
+ , HU. testCase " 1..9 Int16" $ testUnsafeVecMatVec (V3 (V3 1 2 3 ) (V3 4 5 6 ) (V3 7 8 9 ) :: M33 Int16 )
154
+ ]
145
155
]
146
156
]
147
157
]
@@ -591,10 +601,34 @@ testUnsafeWithMatAsVec m33 = do
591
601
assertEqual " " (concatMap toList $ toList m33) xs
592
602
593
603
testMatVecMat
604
+ :: forall a
605
+ . (Eq a , Show a , ToDepth (Proxy a ), Storable a , ToMat (M33 a ))
606
+ => M33 a -> HU. Assertion
607
+ testMatVecMat m33In = assertEqual " " m33In m33Out
608
+ where
609
+ m33Out :: M33 a
610
+ m33Out = fromMat $ exceptError $ vecToMat (Proxy @ [3 , 3 ]) (Proxy @ 1 ) $ matToVec $ toMat m33In
611
+
612
+ testVecMatVec
613
+ :: forall a
614
+ . (Eq a , Show a , NFData a , ToDepth (Proxy a ), Storable a )
615
+ => M33 a -> HU. Assertion
616
+ testVecMatVec m33In = assertEqual " " elemsIn elemsOut
617
+ where
618
+ elemsOut :: [a ]
619
+ elemsOut = VS. toList $ matToVec $ exceptError $ vecToMat (Proxy @ [3 , 3 ]) (Proxy @ 1 ) vecIn
620
+
621
+ vecIn :: VS. Vector a
622
+ vecIn = VS. fromList elemsIn
623
+
624
+ elemsIn :: [a ]
625
+ elemsIn = concatMap toList $ toList m33In
626
+
627
+ testUnsafeMatVecMat
594
628
:: forall a
595
629
. (Eq a , Show a , NFData a , ToDepth (Proxy a ), Storable a , ToMat (M33 a ))
596
630
=> M33 a -> HU. Assertion
597
- testMatVecMat m33In = do
631
+ testUnsafeMatVecMat m33In = do
598
632
m33Out <-
599
633
unsafeWithMatAsVec matIn $ \ (vec :: VS. Vector a ) ->
600
634
exceptErrorIO $
@@ -605,11 +639,11 @@ testMatVecMat m33In = do
605
639
matIn :: Mat ('S '[ 'S 3 , 'S 3 ]) ('S 1 ) ('S a )
606
640
matIn = toMat m33In
607
641
608
- testVecMatVec
642
+ testUnsafeVecMatVec
609
643
:: forall a
610
644
. (Eq a , Show a , NFData a , ToDepth (Proxy a ), Storable a )
611
645
=> M33 a -> HU. Assertion
612
- testVecMatVec m33In = do
646
+ testUnsafeVecMatVec m33In = do
613
647
elemsOut <- exceptErrorIO $
614
648
unsafeWithVecAsMat (Proxy @ [3 , 3 ]) (Proxy @ 1 ) vecIn $ \ mat ->
615
649
liftIO $ unsafeWithMatAsVec mat $ \ vecOut ->
0 commit comments