package model import "testing" func TestBossConfigRunHookActionScript(t *testing.T) { boss := &BossConfig{ Script: ` function hookAction(hookaction) { return hookaction.hookaction === true; } `, } ctx := &BossHookActionContext{HookAction: true} ok, err := boss.RunHookActionScript(ctx) if err != nil { t.Fatalf("RunHookActionScript returned error: %v", err) } if !ok { t.Fatalf("RunHookActionScript = false, want true") } } func TestBossConfigRunHookActionScriptCallUseSkillFn(t *testing.T) { boss := &BossConfig{ Script: ` function hookAction(hookaction) { if (hookaction.round >= 2) { useSkill(5001); } return true; } `, } ctx := &BossHookActionContext{ HookAction: true, Round: 2, Action: "auto", } ctx.UseSkillFn = func(skillID uint32) { ctx.Action = "skill" ctx.SkillID = skillID } ok, err := boss.RunHookActionScript(ctx) if err != nil { t.Fatalf("RunHookActionScript returned error: %v", err) } if !ok { t.Fatalf("RunHookActionScript = false, want true") } if ctx.Action != "skill" || ctx.SkillID != 5001 { t.Fatalf("useSkill not applied, got action=%q skill_id=%d", ctx.Action, ctx.SkillID) } } func TestBossConfigRunHookActionScriptCallSwitchPetFn(t *testing.T) { boss := &BossConfig{ Script: ` function hookAction(hookaction) { switchPet(3); return true; } `, } ctx := &BossHookActionContext{ HookAction: true, Action: "auto", } ctx.SwitchPetFn = func(catchTime uint32) { ctx.Action = "switch" ctx.CatchTime = catchTime } ok, err := boss.RunHookActionScript(ctx) if err != nil { t.Fatalf("RunHookActionScript returned error: %v", err) } if !ok { t.Fatalf("RunHookActionScript = false, want true") } if ctx.Action != "switch" || ctx.CatchTime != 3 { t.Fatalf("switchPet not applied, got action=%q catch_time=%d", ctx.Action, ctx.CatchTime) } }