Files
delve/service/api/prettyprint_test.go
chainhelen b09aed17fd pkg,service: Optimized the display of examinemem command. (#1888)
1. Don't use intelligent '#' in fmt of go because it is not always satisfying
for diffrent version of golang. Always keep one leading zero for octal and
one leading '0x' for hex manually. Then keep alignment for every byte.

2. Always keep addr alignment when the lens of two adjacent address are
different.

Update #1814.
2020-02-26 22:53:09 -08:00

35 lines
1.0 KiB
Go

package api
import (
"fmt"
"strings"
"testing"
)
func TestPrettyExamineMemory(t *testing.T) {
// Test whether always use the last addr's len to format when the lens of two adjacent address are different
addr := uintptr(0xffff)
memArea := []byte("abcdefghijklmnopqrstuvwxyz")
format := byte('o')
display := []string{
"0x0ffff: 0141 0142 0143 0144 0145 0146 0147 0150",
"0x10007: 0151 0152 0153 0154 0155 0156 0157 0160",
"0x1000f: 0161 0162 0163 0164 0165 0166 0167 0170",
"0x10017: 0171 0172"}
res := strings.Split(strings.TrimSpace(PrettyExamineMemory(addr, memArea, format)), "\n")
if len(display) != len(res) {
t.Fatalf("wrong lines return, expected %d but got %d", len(display), len(res))
}
for i := 0; i < len(display); i++ {
if display[i] != res[i] {
errInfo := fmt.Sprintf("wrong display return at line %d\n", i+1)
errInfo += fmt.Sprintf("expected:\n %q\n", display[i])
errInfo += fmt.Sprintf("but got:\n %q\n", res[i])
t.Fatal(errInfo)
}
}
}