change fdb string representation to common format
This commit is contained in:
parent
0401d04380
commit
4722fa0667
|
@ -34,6 +34,7 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"runtime"
|
||||
"strings"
|
||||
"sync"
|
||||
"unsafe"
|
||||
)
|
||||
|
@ -384,6 +385,23 @@ func (k Key) FDBKey() Key {
|
|||
return k
|
||||
}
|
||||
|
||||
// String describes the key as a hexadecimal encoded string.
|
||||
func (k Key) String() string {
|
||||
var sb strings.Builder
|
||||
for _, b := range k {
|
||||
if b >= 32 && b < 127 && b != '\\' {
|
||||
sb.WriteByte(b)
|
||||
continue
|
||||
}
|
||||
if b == '\\' {
|
||||
sb.WriteString("\\\\")
|
||||
continue
|
||||
}
|
||||
sb.WriteString(fmt.Sprintf("\\x%x", b))
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
func panicToError(e *error) {
|
||||
if r := recover(); r != nil {
|
||||
fe, ok := r.(Error)
|
||||
|
|
|
@ -24,8 +24,9 @@ package fdb_test
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/apple/foundationdb/bindings/go/src/fdb"
|
||||
"testing"
|
||||
|
||||
"github.com/apple/foundationdb/bindings/go/src/fdb"
|
||||
)
|
||||
|
||||
func ExampleOpenDefault() {
|
||||
|
@ -261,3 +262,19 @@ func ExampleRangeIterator() {
|
|||
// banana is bar
|
||||
// cherry is baz
|
||||
}
|
||||
|
||||
func TestKeyToString(t *testing.T) {
|
||||
cases := []struct {
|
||||
key fdb.Key
|
||||
expect string
|
||||
}{
|
||||
{fdb.Key("plain-text"), "plain-text"},
|
||||
{fdb.Key("\xbdascii☻☺"), "\\xbdascii\\xe2\\x98\\xbb\\xe2\\x98\\xba"},
|
||||
}
|
||||
|
||||
for i, c := range cases {
|
||||
if s := c.key.String(); s != c.expect {
|
||||
t.Errorf("got '%v', want '%v' at case %v", s, c.expect, i)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue