mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
102 lines
3.2 KiB
Go
102 lines
3.2 KiB
Go
package utils
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
)
|
|
|
|
func TestFormatArgsJSON_Defaults(t *testing.T) {
|
|
args := map[string]any{"path": "README.md", "line": 42}
|
|
got := FormatArgsJSON(args, false, false)
|
|
var gotVal, wantVal any
|
|
if err := json.Unmarshal([]byte(got), &gotVal); err != nil {
|
|
t.Fatalf("FormatArgsJSON() returned invalid JSON: %v", err)
|
|
}
|
|
want := `{"path":"README.md","line":42}`
|
|
if err := json.Unmarshal([]byte(want), &wantVal); err != nil {
|
|
t.Fatalf("invalid test want JSON: %v", err)
|
|
}
|
|
if !jsonValEq(gotVal, wantVal) {
|
|
t.Fatalf("FormatArgsJSON() = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFormatArgsJSON_PrettyPrint(t *testing.T) {
|
|
args := map[string]any{"path": "README.md", "line": 42}
|
|
got := FormatArgsJSON(args, true, false)
|
|
var gotVal any
|
|
if err := json.Unmarshal([]byte(got), &gotVal); err != nil {
|
|
t.Fatalf("FormatArgsJSON() returned invalid JSON: %v", err)
|
|
}
|
|
want := `{"path":"README.md","line":42}`
|
|
var wantVal any
|
|
if err := json.Unmarshal([]byte(want), &wantVal); err != nil {
|
|
t.Fatalf("invalid test want JSON: %v", err)
|
|
}
|
|
if !jsonValEq(gotVal, wantVal) {
|
|
t.Fatalf("FormatArgsJSON() prettyPrint = %q, want structure %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFormatArgsJSON_DisableEscapeHTML(t *testing.T) {
|
|
args := map[string]any{"msg": "a < b && c > d"}
|
|
got := FormatArgsJSON(args, false, true)
|
|
var gotVal, wantVal any
|
|
want := `{"msg":"a < b && c > d"}`
|
|
if err := json.Unmarshal([]byte(got), &gotVal); err != nil {
|
|
t.Fatalf("FormatArgsJSON() returned invalid JSON: %v", err)
|
|
}
|
|
if err := json.Unmarshal([]byte(want), &wantVal); err != nil {
|
|
t.Fatalf("invalid test want JSON: %v", err)
|
|
}
|
|
if !jsonValEq(gotVal, wantVal) {
|
|
t.Fatalf("FormatArgsJSON() disableEscapeHTML = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFormatArgsJSON_PrettyPrintAndDisableEscapeHTML(t *testing.T) {
|
|
args := map[string]any{"msg": "a < b && c > d"}
|
|
got := FormatArgsJSON(args, true, true)
|
|
var gotVal, wantVal any
|
|
want := `{"msg":"a < b && c > d"}`
|
|
if err := json.Unmarshal([]byte(got), &gotVal); err != nil {
|
|
t.Fatalf("FormatArgsJSON() returned invalid JSON: %v", err)
|
|
}
|
|
if err := json.Unmarshal([]byte(want), &wantVal); err != nil {
|
|
t.Fatalf("invalid test want JSON: %v", err)
|
|
}
|
|
if !jsonValEq(gotVal, wantVal) {
|
|
t.Fatalf("FormatArgsJSON() combined = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFormatArgsJSON_EscapeHTMLByDefault(t *testing.T) {
|
|
args := map[string]any{"msg": "a < b && c > d"}
|
|
got := FormatArgsJSON(args, false, false)
|
|
var gotVal, wantVal any
|
|
want := `{"msg":"a \u003c b \u0026\u0026 c \u003e d"}`
|
|
if err := json.Unmarshal([]byte(got), &gotVal); err != nil {
|
|
t.Fatalf("FormatArgsJSON() returned invalid JSON: %v", err)
|
|
}
|
|
if err := json.Unmarshal([]byte(want), &wantVal); err != nil {
|
|
t.Fatalf("invalid test want JSON: %v", err)
|
|
}
|
|
if !jsonValEq(gotVal, wantVal) {
|
|
t.Fatalf("FormatArgsJSON() default escape = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func TestFormatArgsJSON_NilArgs(t *testing.T) {
|
|
got := FormatArgsJSON(nil, false, false)
|
|
want := `null`
|
|
if got != want {
|
|
t.Fatalf("FormatArgsJSON() nil = %q, want %q", got, want)
|
|
}
|
|
}
|
|
|
|
func jsonValEq(a, b any) bool {
|
|
aJSON, _ := json.Marshal(a)
|
|
bJSON, _ := json.Marshal(b)
|
|
return string(aJSON) == string(bJSON)
|
|
}
|