feat(verify): scalar arguments for -call invocations

This commit is contained in:
2026-08-29 14:03:45 +02:00
parent 6fb9629ab6
commit e44162a749
3 changed files with 136 additions and 6 deletions
+38
View File
@@ -156,3 +156,41 @@ func TestBufPoolBuildArgs(t *testing.T) {
t.Errorf("src.len = %d, want 128", args[32])
}
}
func TestParseScalarArgs(t *testing.T) {
m, err := ParseScalarArgs("n=57,base=0x1f,x= 12 ")
if err != nil {
t.Fatal(err)
}
if m["n"] != 57 || m["base"] != 0x1f || m["x"] != 12 {
t.Fatalf("parsed %+v", m)
}
if _, err := ParseScalarArgs("n"); err == nil {
t.Error("name-only spec must fail")
}
if _, err := ParseScalarArgs("n=zz"); err == nil {
t.Error("bad value must fail")
}
}
func TestApplyScalarArgs(t *testing.T) {
layout := []ArgOffset{
{Name: "text", Typ: "*byte", Offset: 0, Size: 8, IsPtr: true},
{Name: "n", Typ: "int", Offset: 8, Size: 8, IsPtr: false},
}
args := make([]byte, 16)
if err := ApplyScalarArgs(args, layout, map[string]uint64{"n": 0x1f}); err != nil {
t.Fatal(err)
}
if got := args[8]; got != 0x1f {
t.Fatalf("args[8] = %d, want 31", got)
}
// Pointer parameters reject scalar writes.
if err := ApplyScalarArgs(args, layout, map[string]uint64{"text": 5}); err == nil {
t.Fatal("pointer param must reject a scalar write")
}
// Unknown names reject.
if err := ApplyScalarArgs(args, layout, map[string]uint64{"nope": 1}); err == nil {
t.Fatal("unknown param must reject")
}
}