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) } }