X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=test%2FTest.hs;h=71b9f1c6ef5c0991c2a507387c29555f27349fc9;hb=1001ed08048be077081aa6829186e0b35bd69193;hp=0f93e8ace0c2a81625fdd17d80f06ccc14980523;hpb=56904b7b9799590e5dc4899246157961ae02c543;p=functorrent.git diff --git a/test/Test.hs b/test/Test.hs index 0f93e8a..71b9f1c 100644 --- a/test/Test.hs +++ b/test/Test.hs @@ -2,49 +2,56 @@ module Main where import Prelude hiding (readFile) -import Data.ByteString.Char8 (ByteString, readFile) + +import Data.ByteString (ByteString, readFile) import Data.Map.Strict (fromList) -import Test.Tasty -import Test.Tasty.HUnit +import Test.Tasty (TestTree, testGroup, defaultMain) +import Test.Tasty.HUnit (testCase, (@?=)) -import FuncTorrent.Bencode (decode, BVal(..)) +import FuncTorrent.Bencode (encode, decode, BVal(..)) import FuncTorrent.Metainfo (Info(..), Metainfo(..), mkMetaInfo) import FuncTorrent.Peer (Peer(..)) -import FuncTorrent.Tracker (TrackerResponse(..), peers, mkTrackerResponse) +import FuncTorrent.Tracker + +import qualified BencodeTests -- Parsed .torrent file file :: BVal file = Bdict (fromList [ - ("announce", Bstr "http://carrot.cs.swarthmore.edu:6969"), - ("created by", Bstr "Enhanced-CTorrent/dnh3.3.2"), - ("creation date", Bint 1352142460), - ("info", Bdict (fromList [ - ("length", Bint 31690), - ("name", Bstr "moby_dick.txt"), - ("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 - } + ("announce",Bstr "http://9.rarbg.com:2710/announce"), + ("comment",Bstr "hello world"), + ("created by",Bstr "Jaseem Abid"), + ("creation date",Bint 1428717851), + ("encoding",Bstr "UTF-8"), + ("info",Bdict (fromList [ + ("length",Bint 12), + ("name",Bstr "hello.txt"), + ("piece length",Bint 32768), + ("pieces",Bstr "\"Ycc\179\222@\176o\152\US\184]\130\&1.\140\SO\213\DC1"), + ("private",Bint 0)]))]) + +hello :: Metainfo +hello = Metainfo { + info = Info { + pieceLength = 32768, + pieces = "\"Ycc\179\222@\176o\152\US\184]\130\&1.\140\SO\213\DC1", + private = Nothing, + name = "hello.txt", + lengthInBytes = 12, + md5sum = Nothing + }, + announceList = ["http://9.rarbg.com:2710/announce"], + creationDate = Just 1428717851, + comment = Just "hello world", + createdBy = Just "Jaseem Abid", + encoding = Just "UTF-8", + infoHash = "\205CX(;\163 expected @?= file Left _ -> error "Failed parsing test file" @@ -52,12 +59,11 @@ testFile = testCase "Should parse valid torrent files" $ do testMkMetaInfo :: TestTree testMkMetaInfo = testCase "Should mkInfo valid torrent files" $ do - str <- readFile "./data/moby_dick.txt.torrent" + str <- readFile "./data/hello.txt.torrent" case decode str of - Right expected -> mkMetaInfo expected @?= Just moby + Right expected -> mkMetaInfo expected @?= Just hello 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" @@ -68,7 +74,7 @@ testResponse1 = testCase "Should parse valid tracker response" $ do expectation :: Either a TrackerResponse expectation = Right TrackerResponse { interval = Just 900, - peers = [Peer "85.25.201.101" 51413, Peer "37.59.28.236" 22222, Peer "76.21.149.43" 51866, Peer "31.183.33.205" 43467, Peer "213.210.120.86" 27480, Peer "213.239.216.205" 6914, Peer "91.192.163.152" 11834, Peer "62.210.240.65" 6999, Peer "84.250.103.161" 6949, Peer "88.195.241.192" 51413, Peer "88.165.61.223" 6881, Peer "86.157.234.243" 59583, Peer "213.41.137.242" 51413, Peer "91.10.84.195" 46941, Peer "64.56.249.183" 7023, Peer "202.62.16.71" 59929, Peer "31.43.126.122" 57816, Peer "68.169.133.72" 50222, Peer "223.135.97.177" 58813, Peer "5.166.93.118" 64459, Peer "200.148.109.141" 51413, Peer "109.226.236.160" 44444, Peer "78.58.139.154" 22818, Peer "188.244.47.186" 39643, Peer "203.86.204.111" 52411, Peer "80.110.40.98" 6918, Peer "68.187.142.217" 58352, Peer "71.115.139.180" 63065, Peer "70.169.35.173" 51413, Peer "185.3.135.186" 10889, Peer "88.198.224.202" 51413, Peer "183.157.65.217" 9179, Peer "87.251.189.150" 46680, Peer "87.114.202.174" 12393, Peer "93.58.5.16" 51411, Peer "89.102.9.69" 10044, Peer "94.159.19.222" 15783, Peer "95.28.49.176" 58794, Peer "217.114.58.135" 6881, Peer "79.141.162.38" 35806, Peer "136.169.50.72" 54927, Peer "187.67.188.151" 51413, Peer "79.111.218.50" 53636, Peer "62.75.137.129" 51413, Peer "14.204.20.156" 11600, Peer "79.141.162.34" 24531, Peer "82.144.192.7" 63208, Peer "212.34.231.10" 20684, Peer "95.225.246.221" 51413, Peer "124.41.237.102" 24874], + peers = [Peer "" "85.25.201.101" 51413, Peer "" "37.59.28.236" 22222, Peer "" "76.21.149.43" 51866, Peer "" "31.183.33.205" 43467, Peer "" "213.210.120.86" 27480, Peer "" "213.239.216.205" 6914, Peer "" "91.192.163.152" 11834, Peer "" "62.210.240.65" 6999, Peer "" "84.250.103.161" 6949, Peer "" "88.195.241.192" 51413, Peer "" "88.165.61.223" 6881, Peer "" "86.157.234.243" 59583, Peer "" "213.41.137.242" 51413, Peer "" "91.10.84.195" 46941, Peer "" "64.56.249.183" 7023, Peer "" "202.62.16.71" 59929, Peer "" "31.43.126.122" 57816, Peer "" "68.169.133.72" 50222, Peer "" "223.135.97.177" 58813, Peer "" "5.166.93.118" 64459, Peer "" "200.148.109.141" 51413, Peer "" "109.226.236.160" 44444, Peer "" "78.58.139.154" 22818, Peer "" "188.244.47.186" 39643, Peer "" "203.86.204.111" 52411, Peer "" "80.110.40.98" 6918, Peer "" "68.187.142.217" 58352, Peer "" "71.115.139.180" 63065, Peer "" "70.169.35.173" 51413, Peer "" "185.3.135.186" 10889, Peer "" "88.198.224.202" 51413, Peer "" "183.157.65.217" 9179, Peer "" "87.251.189.150" 46680, Peer "" "87.114.202.174" 12393, Peer "" "93.58.5.16" 51411, Peer "" "89.102.9.69" 10044, Peer "" "94.159.19.222" 15783, Peer "" "95.28.49.176" 58794, Peer "" "217.114.58.135" 6881, Peer "" "79.141.162.38" 35806, Peer "" "136.169.50.72" 54927, Peer "" "187.67.188.151" 51413, Peer "" "79.111.218.50" 53636, Peer "" "62.75.137.129" 51413, Peer "" "14.204.20.156" 11600, Peer "" "79.141.162.34" 24531, Peer "" "82.144.192.7" 63208, Peer "" "212.34.231.10" 20684, Peer "" "95.225.246.221" 51413, Peer "" "124.41.237.102" 24874], complete = Nothing, incomplete = Nothing } @@ -89,7 +95,7 @@ unitTests = testGroup "Unit tests" [testFile, testMkMetaInfo, testResponse1, testResponse2] tests :: TestTree -tests = testGroup "Tests" [unitTests] +tests = testGroup "Tests" [unitTests, BencodeTests.tests] main :: IO () main = defaultMain tests