fix on sorting methods for rankings

This commit is contained in:
gezimbll
2024-12-10 16:12:04 +01:00
committed by Dan Christian Bogos
parent 8926e1bfc7
commit 56207ad5b7
2 changed files with 30 additions and 12 deletions

View File

@@ -204,10 +204,13 @@ func (rkDsrtr *rankingDescSorter) sortStatIDs() []string {
sort.Slice(rkDsrtr.statIDs, func(i, j int) bool {
for _, metricID := range rkDsrtr.sMetricIDs {
val1, hasMetric1 := rkDsrtr.Metrics[rkDsrtr.statIDs[i]][metricID]
val2, hasMetric2 := rkDsrtr.Metrics[rkDsrtr.statIDs[j]][metricID]
if !hasMetric1 && !hasMetric2 {
continue
}
if !hasMetric1 {
return false
}
val2, hasMetric2 := rkDsrtr.Metrics[rkDsrtr.statIDs[j]][metricID]
if !hasMetric2 {
return true
}
@@ -267,10 +270,13 @@ func (rkASrtr *rankingAscSorter) sortStatIDs() []string {
sort.Slice(rkASrtr.statIDs, func(i, j int) bool {
for _, metricID := range rkASrtr.sMetricIDs {
val1, hasMetric1 := rkASrtr.Metrics[rkASrtr.statIDs[i]][metricID]
val2, hasMetric2 := rkASrtr.Metrics[rkASrtr.statIDs[j]][metricID]
if !hasMetric1 && !hasMetric2 {
continue
}
if !hasMetric1 {
return false
}
val2, hasMetric2 := rkASrtr.Metrics[rkASrtr.statIDs[j]][metricID]
if !hasMetric2 {
return true
}

View File

@@ -94,12 +94,12 @@ func TestRankingAscSorterSortStatIDs(t *testing.T) {
func TestRankingMixedOrder(t *testing.T) {
statmetrics := map[string]map[string]float64{
"Stat1": {"*acc": 13},
"Stat2": {"*acc": 14},
"Stat3": {"*acc": 12.1, "*pdd": 900},
"Stat4": {"*acc": 12.1, "*pdd": 1000},
"Stat5": {"*acc": 10, "*pdd": 700, "*tcc": 120},
"Stat6": {"*acc": 10, "*pdd": 700, "*tcc": 121},
"Stat2": {"*acc": 14},
"Stat5": {"*acc": 10, "*pdd": 700, "*tcc": 120},
"Stat3": {"*acc": 12.1, "*pdd": 900},
"Stat7": {"*acc": 10, "*pdd": 600, "*tcc": 123},
"Stat4": {"*acc": 12.1, "*pdd": 1000},
}
testCases := []struct {
@@ -115,12 +115,24 @@ func TestRankingMixedOrder(t *testing.T) {
sorter: "*asc",
statIDs: []string{"Stat5", "Stat6", "Stat7", "Stat4", "Stat3", "Stat1", "Stat2"},
},
// {
// name: "TestSortStatsDesc",
// sortMetric: []string{"*tcc", "*pdd:false", "*acc"},
// sorter: "*desc",
// statIDs: []string{"Stat7", "Stat6", "Stat5", "Stat3", "Stat4", "Stat2", "Stat1"},
// },
{
name: "TestSortStatsDesc",
sortMetric: []string{"*tcc", "*pdd:false", "*acc"},
sorter: "*desc",
statIDs: []string{"Stat7", "Stat6", "Stat5", "Stat3", "Stat4", "Stat2", "Stat1"},
},
{
name: "TestSortStatsDesc2",
sortMetric: []string{"*acc", "*tcc", "*pdd:false"},
sorter: "*desc",
statIDs: []string{"Stat2", "Stat1", "Stat3", "Stat4", "Stat7", "Stat6", "Stat5"},
},
{
name: "TestSortStatsAsc2",
sortMetric: []string{"*tcc", "*pdd:false", "*acc"},
sorter: "*asc",
statIDs: []string{"Stat5", "Stat6", "Stat7", "Stat4", "Stat3", "Stat1", "Stat2"},
},
}
for _, tc := range testCases {