]> Sergey Matveev's repositories - btrtrc.git/blob - util/copy_test.go
Merge remote-tracking branch 'libtorgo/master' into HEAD
[btrtrc.git] / util / copy_test.go
1 package util
2
3 import (
4         "bytes"
5         "strings"
6         "testing"
7 )
8
9 func TestCopyToArray(t *testing.T) {
10         var arr [3]byte
11         bb := []byte{1, 2, 3}
12         CopyExact(&arr, bb)
13         if !bytes.Equal(arr[:], bb) {
14                 t.FailNow()
15         }
16 }
17
18 func TestCopyToSlicedArray(t *testing.T) {
19         var arr [5]byte
20         CopyExact(arr[:], "hello")
21         if !bytes.Equal(arr[:], []byte("hello")) {
22                 t.FailNow()
23         }
24 }
25
26 func TestCopyDestNotAddr(t *testing.T) {
27         defer func() {
28                 r := recover()
29                 if r == nil {
30                         t.FailNow()
31                 }
32                 t.Log(r)
33         }()
34         var arr [3]byte
35         CopyExact(arr, "nope")
36 }
37
38 func TestCopyLenMismatch(t *testing.T) {
39         defer func() {
40                 r := recover()
41                 if r == nil {
42                         t.FailNow()
43                 }
44                 t.Log(r)
45         }()
46         CopyExact(make([]byte, 2), "abc")
47 }
48
49 func TestCopySrcString(t *testing.T) {
50         dest := make([]byte, 3)
51         CopyExact(dest, "lol")
52         if string(dest) != "lol" {
53                 t.FailNow()
54         }
55         func() {
56                 defer func() {
57                         r := recover()
58                         if r == nil {
59                                 t.FailNow()
60                         }
61                 }()
62                 CopyExact(dest, "rofl")
63         }()
64         var arr [5]byte
65         CopyExact(&arr, interface{}("hello"))
66         if string(arr[:]) != "hello" {
67                 t.FailNow()
68         }
69 }
70
71 func TestCopySrcNilInterface(t *testing.T) {
72         var arr [3]byte
73         defer func() {
74                 r := recover().(string)
75                 if !strings.Contains(r, "invalid source") {
76                         t.FailNow()
77                 }
78         }()
79         CopyExact(&arr, nil)
80 }
81
82 func TestCopySrcPtr(t *testing.T) {
83         var bigDst [1024]byte
84         var bigSrc [1024]byte = [1024]byte{'h', 'i'}
85         CopyExact(&bigDst, &bigSrc)
86         if !bytes.Equal(bigDst[:], bigSrc[:]) {
87                 t.FailNow()
88         }
89 }