package game import ( "errors" "testing" ) func TestParseXEffect(t *testing.T) { e, err := parseXEffect("+1 armor") if err != nil { t.Fatal("unexpected", err) } if e.set { t.Fatal("+ xEffect reports as setting") } if e.x != 1 { t.Fatal("expected x == 1") } e, err = parseXEffect("-1 armor") if err != nil { t.Fatal("unexpected", err) } if e.set { t.Fatal("- xEffect reports as setting") } if e.x != -1 { t.Fatal("expected x == -1") } _, err = parseXEffect("1: +1 armor") if err == nil { t.Fatal("parsed free action as X effect") } e, err = parseXEffect("crew 3") if err != nil { t.Fatal("unexpected", err) } if !e.set { t.Fatal("xEffect reports not as setting") } if e.x != 3 { t.Fatal("expected x == 3") } e, err = parseXEffect("foobar") if err == nil || !errors.Is(err, ErrXEffectFormat) { t.Fatal("expected format error") } sailor := NewCard("nautics/sailor") e, err = parseXEffect(sailor.getEffects()[0]) if err == nil || !errors.Is(err, ErrXEffectFormat) { t.Fatal("expected format error") } var err2 ErrXEffectError e, err = parseXEffect("9999999989899999999 armor") if err == nil || !errors.As(err, &err2) { t.Fatal("expected format error") } e, err = parseXEffect("crew 9999999989899999999") if err == nil || !errors.As(err, &err2) { t.Fatal("expected format error") } }