Server : LiteSpeed System : Linux in-mum-web1333.main-hosting.eu 4.18.0-553.37.1.lve.el8.x86_64 #1 SMP Mon Feb 10 22:45:17 UTC 2025 x86_64 User : u141265441 ( 141265441) PHP Version : 8.4.3 Disable Function : system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, symlink, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail Directory : /proc/self/root/opt/golang/1.22.0/src/internal/coverage/slicereader/ |
// Copyright 2021 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package slicereader
import (
"encoding/binary"
"io"
"testing"
)
func TestSliceReader(t *testing.T) {
b := []byte{}
bt := make([]byte, 4)
e32 := uint32(1030507)
binary.LittleEndian.PutUint32(bt, e32)
b = append(b, bt...)
bt = make([]byte, 8)
e64 := uint64(907050301)
binary.LittleEndian.PutUint64(bt, e64)
b = append(b, bt...)
b = appendUleb128(b, uint(e32))
b = appendUleb128(b, uint(e64))
b = appendUleb128(b, 6)
s1 := "foobar"
s1b := []byte(s1)
b = append(b, s1b...)
b = appendUleb128(b, 9)
s2 := "bazbasher"
s2b := []byte(s2)
b = append(b, s2b...)
readStr := func(slr *Reader) string {
len := slr.ReadULEB128()
return slr.ReadString(int64(len))
}
for i := 0; i < 2; i++ {
slr := NewReader(b, i == 0)
g32 := slr.ReadUint32()
if g32 != e32 {
t.Fatalf("slr.ReadUint32() got %d want %d", g32, e32)
}
g64 := slr.ReadUint64()
if g64 != e64 {
t.Fatalf("slr.ReadUint64() got %d want %d", g64, e64)
}
g32 = uint32(slr.ReadULEB128())
if g32 != e32 {
t.Fatalf("slr.ReadULEB128() got %d want %d", g32, e32)
}
g64 = slr.ReadULEB128()
if g64 != e64 {
t.Fatalf("slr.ReadULEB128() got %d want %d", g64, e64)
}
gs1 := readStr(slr)
if gs1 != s1 {
t.Fatalf("readStr got %s want %s", gs1, s1)
}
gs2 := readStr(slr)
if gs2 != s2 {
t.Fatalf("readStr got %s want %s", gs2, s2)
}
if _, err := slr.Seek(4, io.SeekStart); err != nil {
t.Fatal(err)
}
off := slr.Offset()
if off != 4 {
t.Fatalf("Offset() returned %d wanted 4", off)
}
g64 = slr.ReadUint64()
if g64 != e64 {
t.Fatalf("post-seek slr.ReadUint64() got %d want %d", g64, e64)
}
}
}
func appendUleb128(b []byte, v uint) []byte {
for {
c := uint8(v & 0x7f)
v >>= 7
if v != 0 {
c |= 0x80
}
b = append(b, c)
if c&0x80 == 0 {
break
}
}
return b
}