Automated parts sorting
This commit is contained in:
@@ -882,6 +882,15 @@ func TestValidateLayoutAcceptsGeneratedTopData2DAConfig(t *testing.T) {
|
||||
Root: "part",
|
||||
Include: []string{"**/*.mdl"},
|
||||
Derive: AutogenDeriveConfig{Kind: "trailing_numeric_suffix", GroupFrom: "first_path_segment"},
|
||||
PartsRows: PartsRowsConfig{
|
||||
RowDefaults: map[string]string{"COSTMODIFIER": "0"},
|
||||
ACBonus: PartsRowsACBonusConfig{
|
||||
Default: PartsRowsACBonusPolicy{Strategy: "descending_row_id_sort_key", MaxRowID: 999, Divisor: 100, Format: "%.2f"},
|
||||
Datasets: map[string]PartsRowsACBonusPolicy{
|
||||
"chest": {Strategy: "fixed", Value: "0.00"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
@@ -934,6 +943,63 @@ func TestValidateLayoutRejectsEscapingGeneratedTopData2DAConfig(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLayoutRejectsInvalidGeneratedPartsRowsACBonusConfig(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "assets"))
|
||||
mkdirAll(t, filepath.Join(root, "build"))
|
||||
proj := Project{
|
||||
Root: root,
|
||||
Config: Config{
|
||||
Module: ModuleConfig{Name: "Test", ResRef: "testmod"},
|
||||
Paths: PathConfig{Assets: "assets"},
|
||||
Generated: GeneratedConfig{
|
||||
TopData2DA: []GeneratedTopData2DAConfig{
|
||||
{
|
||||
ID: "parts",
|
||||
Source: "topdata",
|
||||
Output: "{paths.cache}/generated-assets/parts-2da",
|
||||
IncludeDatasets: []string{"parts/**"},
|
||||
PackageRoot: "part",
|
||||
Autogen: AutogenConsumerConfig{
|
||||
ID: "parts",
|
||||
Mode: "parts_rows",
|
||||
Root: "part",
|
||||
Include: []string{"**/*.mdl"},
|
||||
Derive: AutogenDeriveConfig{Kind: "trailing_numeric_suffix", GroupFrom: "first_path_segment"},
|
||||
PartsRows: PartsRowsConfig{
|
||||
ACBonus: PartsRowsACBonusConfig{
|
||||
Default: PartsRowsACBonusPolicy{Strategy: "descending_row_id_sort_key", MaxRowID: 0, Divisor: -1, Format: "%d"},
|
||||
Datasets: map[string]PartsRowsACBonusPolicy{
|
||||
"chest": {Strategy: "fixed"},
|
||||
"robe": {Strategy: "unknown"},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err := proj.ValidateLayout()
|
||||
if err == nil {
|
||||
t.Fatal("expected invalid parts_rows acbonus config to fail")
|
||||
}
|
||||
text := err.Error()
|
||||
for _, want := range []string{
|
||||
"generated_assets.topdata_2da[0].autogen.parts_rows.acbonus.default.max_row_id",
|
||||
"generated_assets.topdata_2da[0].autogen.parts_rows.acbonus.default.divisor",
|
||||
"generated_assets.topdata_2da[0].autogen.parts_rows.acbonus.default.format",
|
||||
"generated_assets.topdata_2da[0].autogen.parts_rows.acbonus.datasets.chest.value",
|
||||
"generated_assets.topdata_2da[0].autogen.parts_rows.acbonus.datasets.robe.strategy",
|
||||
} {
|
||||
if !strings.Contains(text, want) {
|
||||
t.Fatalf("expected validation error containing %q, got %v", want, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestValidateLayoutRejectsDuplicateHAKNames(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
mkdirAll(t, filepath.Join(root, "src"))
|
||||
|
||||
Reference in New Issue
Block a user