file/object_test.go

67 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package file
import (
"os"
"path/filepath"
"testing"
)
type TestStruct struct {
Name string `json:"name" yaml:"name"`
Age int `json:"age" yaml:"age"`
}
type SnakeStruct struct {
UserName string `json:"user_name" yaml:"user_name"`
}
func TestUnmarshalFile(t *testing.T) {
tmpDir, _ := os.MkdirTemp("", "test_object")
defer os.RemoveAll(tmpDir)
jsonFile := filepath.Join(tmpDir, "test.json")
// 测试智能映射:输入 user_name目标 UserName
jsonData := `{"user_name": "Alice"}`
os.WriteFile(jsonFile, []byte(jsonData), 0644)
t.Run("SmartMapping", func(t *testing.T) {
var ts SnakeStruct
err := UnmarshalFile(jsonFile, &ts)
if err != nil {
t.Errorf("UnmarshalFile failed: %v", err)
}
if ts.UserName != "Alice" {
t.Errorf("Expected Alice, got %s", ts.UserName)
}
})
}
func TestMarshalFile(t *testing.T) {
tmpDir, _ := os.MkdirTemp("", "test_marshal")
defer os.RemoveAll(tmpDir)
data := TestStruct{Name: "Bob", Age: 25}
t.Run("Pretty", func(t *testing.T) {
filename := filepath.Join(tmpDir, "pretty.json")
err := MarshalFilePretty(filename, data)
if err != nil {
t.Fatalf("MarshalFilePretty failed: %v", err)
}
})
}
func TestPatchFile(t *testing.T) {
tmpDir, _ := os.MkdirTemp("", "test_patch")
defer os.RemoveAll(tmpDir)
filename := filepath.Join(tmpDir, "config.json")
t.Run("Update", func(t *testing.T) {
patch := map[string]any{"name": "Initial"}
err := PatchFile(filename, patch)
if err != nil {
t.Fatalf("PatchFile failed: %v", err)
}
})
}