@@ -142,6 +142,16 @@ main = defaultMain $ testGroup "opencv"
142142 , HU. testCase " eye_m33 Double" $ testVecMatVec (eye_m33 :: M33 Double )
143143 , HU. testCase " 1..9 Int16" $ testVecMatVec (V3 (V3 1 2 3 ) (V3 4 5 6 ) (V3 7 8 9 ) :: M33 Int16 )
144144 ]
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+ ]
145155 ]
146156 ]
147157 ]
@@ -591,10 +601,34 @@ testUnsafeWithMatAsVec m33 = do
591601 assertEqual " " (concatMap toList $ toList m33) xs
592602
593603testMatVecMat
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
594628 :: forall a
595629 . (Eq a , Show a , NFData a , ToDepth (Proxy a ), Storable a , ToMat (M33 a ))
596630 => M33 a -> HU. Assertion
597- testMatVecMat m33In = do
631+ testUnsafeMatVecMat m33In = do
598632 m33Out <-
599633 unsafeWithMatAsVec matIn $ \ (vec :: VS. Vector a ) ->
600634 exceptErrorIO $
@@ -605,11 +639,11 @@ testMatVecMat m33In = do
605639 matIn :: Mat ('S '[ 'S 3 , 'S 3 ]) ('S 1 ) ('S a )
606640 matIn = toMat m33In
607641
608- testVecMatVec
642+ testUnsafeVecMatVec
609643 :: forall a
610644 . (Eq a , Show a , NFData a , ToDepth (Proxy a ), Storable a )
611645 => M33 a -> HU. Assertion
612- testVecMatVec m33In = do
646+ testUnsafeVecMatVec m33In = do
613647 elemsOut <- exceptErrorIO $
614648 unsafeWithVecAsMat (Proxy @ [3 , 3 ]) (Proxy @ 1 ) vecIn $ \ mat ->
615649 liftIO $ unsafeWithMatAsVec mat $ \ vecOut ->
0 commit comments