From fe0138440f6df9e33aea29e62bb67042ba63a8c4 Mon Sep 17 00:00:00 2001 From: liwei Date: Thu, 12 Sep 2019 18:58:24 +0800 Subject: [PATCH] Upgrade go 1.13 --- down/bt/metainfo/metainfo_test.go | 14 ++ down/bt/peer/message/msg_bitfield_test.go | 162 ++++++++++++++++++++++ 2 files changed, 176 insertions(+) create mode 100644 down/bt/metainfo/metainfo_test.go create mode 100644 down/bt/peer/message/msg_bitfield_test.go diff --git a/down/bt/metainfo/metainfo_test.go b/down/bt/metainfo/metainfo_test.go new file mode 100644 index 00000000..64f73b6c --- /dev/null +++ b/down/bt/metainfo/metainfo_test.go @@ -0,0 +1,14 @@ +package metainfo + +import ( + "fmt" + "testing" +) + +func TestParseFromFile(t *testing.T) { + metaInfo, err := ParseFromFile("../testdata/Game.of.Thrones.S08E05.720p.WEB.H264-MEMENTO.torrent") + if err != nil { + panic(err) + } + fmt.Println(metaInfo) +} diff --git a/down/bt/peer/message/msg_bitfield_test.go b/down/bt/peer/message/msg_bitfield_test.go new file mode 100644 index 00000000..bf6a901f --- /dev/null +++ b/down/bt/peer/message/msg_bitfield_test.go @@ -0,0 +1,162 @@ +package message + +import ( + "reflect" + "testing" +) + +func TestBitfield_IsComplete(t *testing.T) { + type fields struct { + Message Message + payload []byte + } + type args struct { + i int + } + tests := []struct { + name string + fields fields + args args + want bool + }{ + { + "case-0", + fields{ + payload: []byte{0b10000000}, + }, + args{ + 0, + }, + true, + }, + { + "case-1", + fields{ + payload: []byte{0b01000000}, + }, + args{ + 1, + }, + true, + }, + { + "case-2", + fields{ + payload: []byte{0b00000000, 0b00100000}, + }, + args{ + 2, + }, + false, + }, + { + "case-10", + fields{ + payload: []byte{0b00000000, 0b00100000}, + }, + args{ + 10, + }, + true, + }, + { + "case-11", + fields{ + payload: []byte{0b00000000, 0b00100000}, + }, + args{ + 11, + }, + false, + }, + { + "case-20", + fields{ + payload: []byte{0b00000000, 0b00100000}, + }, + args{ + 20, + }, + false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + b := &Bitfield{ + Message: tt.fields.Message, + payload: tt.fields.payload, + } + if got := b.IsComplete(tt.args.i); got != tt.want { + t.Errorf("Bitfield.IsComplete() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestBitfield_Have(t *testing.T) { + type fields struct { + Message Message + payload []byte + } + type args struct { + pieces []bool + } + tests := []struct { + name string + fields fields + args args + want []int + }{ + { + "case-1", + fields{ + payload: []byte{0b11111111, 0b00000000}, + }, + args{ + []bool{false, false, false, false, false, false, false, false}, + }, + []int{0, 1, 2, 3, 4, 5, 6, 7}, + }, + { + "case-2", + fields{ + payload: []byte{0b01010101, 0b01000000}, + }, + args{ + []bool{false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + }, + []int{1, 3, 5, 7, 9}, + }, + { + "case-3", + fields{ + payload: []byte{0b11010101, 0b01000000}, + }, + args{ + []bool{false, true, false}, + }, + []int{0}, + }, + { + "case-4", + fields{ + payload: []byte{0b11010101}, + }, + args{ + []bool{false, true, false, false, true, false, false, true, false}, + }, + []int{0, 3, 5}, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + b := &Bitfield{ + Message: tt.fields.Message, + payload: tt.fields.payload, + } + if got := b.Have(tt.args.pieces); !reflect.DeepEqual(got, tt.want) { + t.Errorf("Bitfield.Have() = %v, want %v", got, tt.want) + } + }) + } +}