]> Sergey Matveev's repositories - btrtrc.git/blob - metainfo/metainfo_test.go
Merge pull request #9 from gitter-badger/gitter-badge
[btrtrc.git] / metainfo / metainfo_test.go
1 package metainfo
2
3 import (
4         "bytes"
5         "path"
6         "testing"
7
8         "github.com/anacrolix/torrent/bencode"
9 )
10
11 func test_file(t *testing.T, filename string) {
12         mi, err := LoadFromFile(filename)
13         if err != nil {
14                 t.Fatal(err)
15         }
16
17         if len(mi.Info.Files) == 1 {
18                 t.Logf("Single file: %s (length: %d)\n", mi.Info.Name, mi.Info.Files[0].Length)
19         } else {
20                 t.Logf("Multiple files: %s\n", mi.Info.Name)
21                 for _, f := range mi.Info.Files {
22                         t.Logf(" - %s (length: %d)\n", path.Join(f.Path...), f.Length)
23                 }
24         }
25
26         for _, group := range mi.AnnounceList {
27                 for _, tracker := range group {
28                         t.Logf("Tracker: %s\n", tracker)
29                 }
30         }
31         // for _, url := range mi.WebSeedURLs {
32         //      t.Logf("URL: %s\n", url)
33         // }
34
35         b, err := bencode.Marshal(mi.Info)
36         if !bytes.Equal(b, mi.Info.Bytes) {
37                 t.Logf("\n%q\n%q", b[len(b)-20:], mi.Info.Bytes[len(mi.Info.Bytes)-20:])
38                 t.Fatal("encoded and decoded bytes don't match")
39         }
40 }
41
42 func TestFile(t *testing.T) {
43         test_file(t, "_testdata/archlinux-2011.08.19-netinstall-i686.iso.torrent")
44         test_file(t, "_testdata/continuum.torrent")
45         test_file(t, "_testdata/23516C72685E8DB0C8F15553382A927F185C4F01.torrent")
46         test_file(t, "_testdata/trackerless.torrent")
47 }