Files
horse/mdb/skill_test.go

702 lines
17 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 mdb_test
import (
_ "embed"
"testing"
"git.sunturtle.xyz/zephyr/horse"
"git.sunturtle.xyz/zephyr/horse/mdb"
"github.com/google/go-cmp/cmp"
)
//go:embed testdata/skill.sql
var skillSQL string
func TestSkillGroups(t *testing.T) {
db := testdb(t.Context(), "file:TestSkillGroups?mode=memory&cache=shared", skillSQL)
got, err := mdb.SkillGroups(t.Context(), db)
if err != nil {
t.Error(err)
}
want := []horse.SkillGroup{
{ID: 1035, Skill1: 10351},
{ID: 10001, Skill1: 100011, Skill2: 900011},
{ID: 10035, Skill1: 100351, Skill2: 900351},
{ID: 11024, Skill1: 110241, Skill2: 910241},
{ID: 20001, Skill1: 200012, Skill2: 200011, Skill3: 200014, SkillBad: 200013},
{ID: 20002, Skill1: 200022, Skill2: 200021, SkillBad: 200023},
{ID: 20036, Skill1: 200362, Skill2: 200361},
{ID: 20083, Skill1: 200831},
{ID: 20180, SkillBad: 201801},
{ID: 30001, Skill1: 300011},
{ID: 90001, Skill1: 100011, Skill2: 900011},
{ID: 90035, Skill1: 100351, Skill2: 900351},
{ID: 91024, Skill1: 110241, Skill2: 910241},
}
if diff := cmp.Diff(want, got); diff != "" {
t.Errorf("wrong skill groups (+got/-want):\n%s", diff)
}
}
func TestSkills(t *testing.T) {
db := testdb(t.Context(), "file:TestSkills?mode=memory&cache=shared", skillSQL)
got, err := mdb.Skills(t.Context(), db)
if err != nil {
t.Error(err)
}
want := []horse.Skill{
{
ID: 10351,
Name: "V Is for Victory!",
Description: "Moderately increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
Group: 1035,
Rarity: 3,
GroupRate: 1,
GradeValue: 240,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
Condition: "is_finalcorner==1&corner==0&order<=5",
Duration: 50000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 2500,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Get to Winning!] Winning Ticket",
Tags: []uint16{401},
SPCost: 0,
IconID: 20013,
},
{
ID: 100011,
Name: "Shooting Star",
Description: "Ride the momentum to increase velocity and very slightly increase acceleration after passing another runner toward the front late-race.",
Group: 10001,
Rarity: 5,
GroupRate: 1,
GradeValue: 340,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "phase>=2&order>=1&order_rate<=50&change_order_onetime<0",
Duration: 50000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 3500,
Target: 1,
TargetValue: 0,
},
{
Type: 31,
ValueUsage: 1,
Value: 1000,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Special Dreamer] Special Week",
Tags: []uint16{401, 403},
SPCost: 0,
IconID: 20013,
},
{
ID: 100351,
Name: "Our Ticket to Win!",
Description: "Increase velocity with winning ambition when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
Group: 10035,
Rarity: 4,
GroupRate: 1,
GradeValue: 340,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
Condition: "is_finalcorner==1&corner==0&order<=5",
Duration: 50000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 3500,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Get to Winning!] Winning Ticket",
Tags: []uint16{401},
SPCost: 0,
IconID: 20013,
},
{
ID: 110241,
Name: "Flowery☆Maneuver",
Description: "Increase velocity when passing another runner toward the front on the final corner. If passing toward the back, increase acceleration instead.",
Group: 11024,
Rarity: 5,
GroupRate: 1,
GradeValue: 340,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0",
Duration: 50000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 3500,
Target: 1,
TargetValue: 0,
},
},
},
{
Precondition: "",
Condition: "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0",
Duration: 40000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 31,
ValueUsage: 1,
Value: 4000,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Sunlight Bouquet] Mayano Top Gun",
Tags: []uint16{401, 403},
SPCost: 0,
IconID: 20013,
},
{
ID: 200011,
Name: "Right-Handed ◎",
Description: "Increase performance on right-handed tracks.",
Group: 20001,
Rarity: 1,
GroupRate: 2,
GradeValue: 174,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==1",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: 600000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 110,
IconID: 10011,
},
{
ID: 200012,
Name: "Right-Handed ○",
Description: "Moderately increase performance on right-handed tracks.",
Group: 20001,
Rarity: 1,
GroupRate: 1,
GradeValue: 129,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==1",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: 400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 90,
IconID: 10011,
},
{
ID: 200013,
Name: "Right-Handed ×",
Description: "Moderately decrease performance on right-handed tracks.",
Group: 20001,
Rarity: 1,
GroupRate: -1,
GradeValue: -129,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==1",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: -400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 50,
IconID: 10014,
},
{
ID: 200014,
Name: "Right-Handed Demon",
Description: "Increase proficiency in right-handed tracks, increasing Speed and Power.",
Group: 20001,
Rarity: 2,
GroupRate: 3,
GradeValue: 461,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==1",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: 600000,
Target: 1,
TargetValue: 0,
},
{
Type: 3,
ValueUsage: 1,
Value: 600000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401, 403},
SPCost: 130,
IconID: 10012,
},
{
ID: 200021,
Name: "Left-Handed ◎",
Description: "Increase performance on left-handed tracks.",
Group: 20002,
Rarity: 1,
GroupRate: 2,
GradeValue: 174,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==2",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: 600000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 110,
IconID: 10011,
},
{
ID: 200022,
Name: "Left-Handed ○",
Description: "Moderately increase performance on left-handed tracks.",
Group: 20002,
Rarity: 1,
GroupRate: 1,
GradeValue: 129,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==2",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: 400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 90,
IconID: 10011,
},
{
ID: 200023,
Name: "Left-Handed ×",
Description: "Moderately decrease performance on left-handed tracks.",
Group: 20002,
Rarity: 1,
GroupRate: -1,
GradeValue: -129,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "rotation==2",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: -400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 50,
IconID: 10014,
},
{
ID: 200361,
Name: "Beeline Burst",
Description: "Increase velocity on a straight.",
Group: 20036,
Rarity: 2,
GroupRate: 2,
GradeValue: 508,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "straight_random==1",
Duration: 24000,
DurScale: 1,
Cooldown: 300000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 3500,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 170,
IconID: 20012,
},
{
ID: 200362,
Name: "Straightaway Adept",
Description: "Slightly increase velocity on a straight.",
Group: 20036,
Rarity: 1,
GroupRate: 1,
GradeValue: 217,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "straight_random==1",
Duration: 24000,
DurScale: 1,
Cooldown: 300000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 1500,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 170,
IconID: 20011,
},
{
ID: 200831,
Name: "Subdued Front Runners",
Description: "Slightly increase fatigue for front runners early-race.",
Group: 20083,
Rarity: 1,
GroupRate: 1,
GradeValue: 217,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "running_style_count_nige_otherself>=1&phase_random==0&accumulatetime>=5",
Duration: 0,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 9,
ValueUsage: 1,
Value: -100,
Target: 18,
TargetValue: 1,
},
},
},
},
Tags: []uint16{301, 406},
SPCost: 130,
IconID: 30051,
},
{
ID: 201801,
Name: "♡ 3D Nail Art",
Description: "Moderately decrease performance on firm ground.",
Group: 20180,
Rarity: 1,
GroupRate: -1,
GradeValue: -129,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "ground_condition==1",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 1,
ValueUsage: 1,
Value: -400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{401},
SPCost: 50,
IconID: 10014,
},
{
ID: 300011,
Name: "Unquenched Thirst",
Description: "Moderately increase performance with the desire to race.",
Group: 30001,
Rarity: 1,
GroupRate: 1,
GradeValue: 0,
WitCheck: false,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "track_id==10008",
Duration: -1,
DurScale: 1,
Cooldown: 0,
Abilities: []horse.Ability{
{
Type: 2,
ValueUsage: 1,
Value: 400000,
Target: 1,
TargetValue: 0,
},
},
},
},
Tags: []uint16{402},
SPCost: 0,
IconID: 10021,
},
{
ID: 900011,
Name: "Shooting Star",
Description: "Slightly increase velocity and very minimally increase acceleration after passing another runner toward the front late-race.",
Group: 10001,
Rarity: 1,
GroupRate: 2,
GradeValue: 180,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "phase>=2&order>=1&order_rate<=50&change_order_onetime<0",
Duration: 30000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 1500,
Target: 1,
TargetValue: 0,
},
{
Type: 31,
ValueUsage: 1,
Value: 500,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Special Dreamer] Special Week",
Tags: []uint16{401, 403},
SPCost: 200,
IconID: 20011,
},
{
ID: 900351,
Name: "Our Ticket to Win!",
Description: "Slightly increase velocity when positioned toward the front on the final straight after engaging in a challenge on the final corner or later.",
Group: 10035,
Rarity: 1,
GroupRate: 2,
GradeValue: 180,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "is_finalcorner==1&blocked_side_continuetime>=2",
Condition: "is_finalcorner==1&corner==0&order<=5",
Duration: 30000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 1500,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Get to Winning!] Winning Ticket",
Tags: []uint16{401},
SPCost: 200,
IconID: 20011,
},
{
ID: 910241,
Name: "Flowery☆Maneuver",
Description: "Slightly increase velocity when passing another runner toward the front on the final corner. If passing toward the back, slightly increase acceleration instead.",
Group: 11024,
Rarity: 1,
GroupRate: 2,
GradeValue: 180,
WitCheck: true,
Activations: []horse.Activation{
{
Precondition: "",
Condition: "is_finalcorner==1&corner!=0&order_rate<=40&change_order_onetime<0",
Duration: 30000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 27,
ValueUsage: 1,
Value: 1500,
Target: 1,
TargetValue: 0,
},
},
},
{
Precondition: "",
Condition: "is_finalcorner==1&corner!=0&order_rate>=50&order_rate<=80&change_order_onetime<0",
Duration: 24000,
DurScale: 1,
Cooldown: 5000000,
Abilities: []horse.Ability{
{
Type: 31,
ValueUsage: 1,
Value: 2000,
Target: 1,
TargetValue: 0,
},
},
},
},
UniqueOwner: "[Sunlight Bouquet] Mayano Top Gun",
Tags: []uint16{401, 403},
SPCost: 200,
IconID: 20011,
},
}
if diff := cmp.Diff(want, got); diff != "" {
t.Errorf("wrong skills (+got/-want):\n%s", diff)
}
}