Commit 52e5d061 authored by Rob Pike's avatar Rob Pike

bytes.Copy

R=rsc
DELTA=38  (38 added, 0 deleted, 0 changed)
OCL=29895
CL=29895
parent 78933226
bignum.install: fmt.install bignum.install: fmt.install
bufio.install: io.install os.install utf8.install bufio.install: io.install os.install utf8.install
bytes.install: utf8.install
container/list.install: container/list.install:
container/vector.install: container/vector.install:
crypto/aes.install: os.install crypto/aes.install: os.install
......
...@@ -16,6 +16,7 @@ GC=6g ...@@ -16,6 +16,7 @@ GC=6g
DIRS=\ DIRS=\
bignum\ bignum\
bufio\ bufio\
bytes\
container/list\ container/list\
container/vector\ container/vector\
crypto/aes\ crypto/aes\
......
...@@ -41,6 +41,15 @@ func Equal(a, b []byte) bool { ...@@ -41,6 +41,15 @@ func Equal(a, b []byte) bool {
return true return true
} }
// Copy copies the source to the destination, stopping when the source
// is all transferred. The caller must guarantee that there is enough
// room in the destination.
func Copy(dst, src []byte) {
for i, x := range src {
dst[i] = x
}
}
// Explode splits s into an array of UTF-8 sequences, one per Unicode character (still arrays of bytes). // Explode splits s into an array of UTF-8 sequences, one per Unicode character (still arrays of bytes).
// Invalid UTF-8 sequences become correct encodings of U+FFF8. // Invalid UTF-8 sequences become correct encodings of U+FFF8.
func Explode(s []byte) [][]byte { func Explode(s []byte) [][]byte {
......
...@@ -128,3 +128,30 @@ func TestSplit(t *testing.T) { ...@@ -128,3 +128,30 @@ func TestSplit(t *testing.T) {
} }
} }
} }
type CopyTest struct {
a string;
b string;
res string;
}
var copytests = []CopyTest {
CopyTest{ "", "", "" },
CopyTest{ "a", "", "a" },
CopyTest{ "a", "a", "a" },
CopyTest{ "a", "b", "b" },
CopyTest{ "xyz", "abc", "abc" },
CopyTest{ "wxyz", "abc", "abcz" },
}
func TestCopy(t *testing.T) {
for i := 0; i < len(copytests); i++ {
tt := copytests[i];
dst := io.StringBytes(tt.a);
Copy(dst, io.StringBytes(tt.b));
result := string(dst);
if result != tt.res {
t.Errorf(`Copy("%s", "%s") = "%s"; want "%s"`, tt.a, tt.b, result, tt.res);
continue;
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment