test fill

main
Bel LaPointe 2024-12-15 10:23:13 -07:00
parent eb3a30ec8a
commit 94d3d97645
2 changed files with 27 additions and 21 deletions

View File

@ -471,14 +471,18 @@ var wordsHoliday string
func (m AllKillWords) FillKillWords() AllKillWords {
return m.fillKillWords(
strings.Fields(wordsHoliday),
1,
strings.Fields(wordsHoliday), // TODO medium difficulty
2,
strings.Fields(wordsHoliday), // TODO hard difficulty
)
}
func (m AllKillWords) fillKillWords(
poolGlobal,
poolPublic,
poolGlobal []string,
nPublic int,
poolPublic []string,
nPrivate int,
poolPrivate []string,
) AllKillWords {
result := maps.Clone(m)
@ -490,14 +494,14 @@ func (m AllKillWords) fillKillWords(
}
if len(v.Assignment.Public) == 0 {
v.Assignment.Public = []KillWord{}
for i := 0; i < 2; i++ {
for i := 0; i < nPublic; i++ {
v.Assignment.Public = append(v.Assignment.Public, KillWord{Word: m.unusedPublic(poolPublic), Points: 50})
m[k] = v
}
}
if len(v.Assignment.Private) == 0 {
v.Assignment.Private = []KillWord{}
for i := 0; i < 2; i++ {
for i := 0; i < nPrivate; i++ {
v.Assignment.Private = append(v.Assignment.Private, KillWord{Word: m.unusedPrivate(poolPrivate), Points: 100})
m[k] = v
}

View File

@ -216,19 +216,19 @@ func TestParseEvent(t *testing.T) {
}
func TestAllKillWordsFill(t *testing.T) {
kw := func(w string) KillWord {
return KillWord{Word: w}
kw := func(p int, w string) KillWord {
return KillWord{Word: w, Points: p}
}
kws := func(w string) []KillWord {
kws := func(points int, w string) []KillWord {
if w == "" {
return nil
}
return []KillWord{kw(w)}
return []KillWord{kw(points, w)}
}
ass := func(pub, pri string) Assignment {
return Assignment{
Public: kws(pub),
Private: kws(pri),
Public: kws(50, pub),
Private: kws(100, pri),
}
}
@ -238,48 +238,48 @@ func TestAllKillWordsFill(t *testing.T) {
}{
"full": {
given: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("pub", "pri"),
},
expect: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("pub", "pri"),
},
},
"no ass": {
given: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: Assignment{},
},
expect: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("filled-public", "filled-private"),
},
},
"no pub": {
given: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("", "pri"),
},
expect: KillWords{
Global: kw("global"),
Assignment: ass("filled-public", "filled-private"),
Global: kw(-1, "global"),
Assignment: ass("filled-public", "pri"),
},
},
"no pri": {
given: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("pub", ""),
},
expect: KillWords{
Global: kw("global"),
Global: kw(-1, "global"),
Assignment: ass("pub", "filled-private"),
},
},
"empty": {
given: KillWords{},
expect: KillWords{
Global: kw("filled-global"),
Global: kw(-1, "filled-global"),
Assignment: ass("filled-public", "filled-private"),
},
},
@ -288,7 +288,7 @@ func TestAllKillWordsFill(t *testing.T) {
Assignment: ass("pub", "pri"),
},
expect: KillWords{
Global: kw("filled-global"),
Global: kw(-1, "filled-global"),
Assignment: ass("pub", "pri"),
},
},
@ -307,7 +307,9 @@ func TestAllKillWordsFill(t *testing.T) {
akw[name] = c.given
akw = akw.fillKillWords(
[]string{"filled-global"},
1,
[]string{"filled-public"},
1,
[]string{"filled-private"},
)
got := akw[name]