{-# LANGUAGE FlexibleContexts #-} import Data.List import qualified Data.Vector as V import qualified Data.Vector.Generic as VG import Data.RingBuffer as RB import Test.HUnit main :: IO () main = do runTestTT $ test [testConcat] return () testConcat :: Test testConcat = TestCase $ do rb <- RB.new 40 :: IO (RB.RingBuffer V.Vector Int) --mapM_ (flip RB.append rb) [0..44] RB.concat (V.fromList [0..4]) rb RB.concat (V.fromList [0..50]) rb checkLength rb 40 checkItems rb [50,49..11] withItems rb $ \items -> do let expected = [11..50] assertEqual "withItems: expected" expected (sort $ V.toList items) checkLength :: VG.Vector v a => RingBuffer v a -> Int -> Assertion checkLength rb expected = do len <- RB.length rb assertEqual ("Expected length "++show expected) expected len checkItems :: (Eq a, Show a, VG.Vector v a) => RingBuffer v a -> [a] -> Assertion checkItems rb expected = do items <- RB.toList rb assertEqual ("Expected items "++show expected) expected items