]> git.rkrishnan.org Git - functorrent.git/blob - test/MetainfoTests.hs
86aa0ff14b5632dece355c52a2f72be23c666a2d
[functorrent.git] / test / MetainfoTests.hs
1 -- | Tests for Metainfo module
2
3 {-
4  - Copyright (C) 2015-2016 Ramakrishnan Muthukrishnan <ram@rkrishnan.org>
5  -
6  - This file is part of FuncTorrent.
7  -
8  - FuncTorrent is free software; you can redistribute it and/or modify
9  - it under the terms of the GNU General Public License as published by
10  - the Free Software Foundation; either version 3 of the License, or
11  - (at your option) any later version.
12  -
13  - FuncTorrent is distributed in the hope that it will be useful,
14  - but WITHOUT ANY WARRANTY; without even the implied warranty of
15  - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  - GNU General Public License for more details.
17  -
18  - You should have received a copy of the GNU General Public License
19  - along with FuncTorrent; if not,  see <http://www.gnu.org/licenses/>
20  -}
21
22 module MetainfoTests where
23
24 import Prelude hiding (readFile)
25
26 import FuncTorrent.Metainfo
27 import Test.Hspec
28 import Data.ByteString (readFile)
29
30 tests :: IO ()
31 tests = hspec $ do
32   describe "read and interpret a torrent file 1" $ do
33     it "valid torrent file" $ do
34       fc <- readFile "data/debian-7.8.0-amd64-CD-1.iso.torrent"
35       (torrentToMetainfo fc) `shouldNotBe` (Left "parse error")
36     it "valid announce list" $ do
37       fc <- readFile "data/debian-7.8.0-amd64-CD-1.iso.torrent"
38       case torrentToMetainfo fc of
39         Left _ -> pending
40         Right metainfo -> do
41           announceList metainfo `shouldSatisfy` (not . null)
42     it "valid piece length" $ do
43       fc <- readFile "data/debian-7.8.0-amd64-CD-1.iso.torrent"
44       case torrentToMetainfo fc of
45         Left _ -> pending
46         Right metainfo -> do
47           let (Just info') = info metainfo
48           pieceLength info' `shouldBe` (524288 :: Integer)
49