From: Jaseem Abid Date: Tue, 7 Apr 2015 02:02:42 +0000 (+0530) Subject: Meta info tests X-Git-Url: https://git.rkrishnan.org/?p=functorrent.git;a=commitdiff_plain;h=5c31236826ca18453f785019e472e775d80ff258 Meta info tests --- diff --git a/test/Test.hs b/test/Test.hs index 5205d1c..07408db 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -9,6 +9,7 @@ import Test.Tasty import Test.Tasty.HUnit import FuncTorrent.Bencode (decode, BVal(..)) +import FuncTorrent.Metainfo (Info(..), Metainfo(..), mkMetaInfo) import FuncTorrent.Peer (Peer(..), PeerResp(..), mkPeerResp) -- Parsed .torrent file @@ -23,13 +24,39 @@ file = Bdict (fromList [ ("piece length", Bint 262144), ("pieces", Bstr "\bW\196\168g\178\198=\156\204\221M\242\207\DC1\159\ETB~\241H")]))]) +moby :: Metainfo +moby = Metainfo { + info = Info { + pieceLength = 262144, + pieces = "\bW\196\168g\178\198=\156\204\221M\242\207\DC1\159\ETB~\241H", + private = Nothing, + name = "moby_dick.txt", + lengthInBytes = 31690, + md5sum = Nothing + }, + announceList = ["http://carrot.cs.swarthmore.edu:6969"], + creationDate = Nothing, + comment = Nothing, + createdBy = Just "Enhanced-CTorrent/dnh3.3.2", + encoding = Nothing + } + testFile :: TestTree -testFile = testCase "Should parse regular torrent files" $ do +testFile = testCase "Should parse valid torrent files" $ do str <- readFile "./data/moby_dick.txt.torrent" case decode str of Right expected -> expected @?= file Left _ -> error "Failed parsing test file" + +testMkMetaInfo :: TestTree +testMkMetaInfo = testCase "Should mkInfo valid torrent files" $ do + str <- readFile "./data/moby_dick.txt.torrent" + case decode str of + Right expected -> mkMetaInfo expected @?= Just moby + Left _ -> error "Failed parsing test file" + + testResponse1 :: TestTree testResponse1 = testCase "Should parse valid tracker response" $ do str <- readFile "./data/debian-7.8.0-amd64-CD-1.iso.cache" @@ -57,7 +84,8 @@ testResponse2 = testCase "Should parse invalid tracker response" $ do unitTests :: TestTree -unitTests = testGroup "Unit tests" [testFile, testResponse1, testResponse2] +unitTests = testGroup "Unit tests" [testFile, testMkMetaInfo, testResponse1, + testResponse2] tests :: TestTree tests = testGroup "Tests" [unitTests]