mirror of
https://github.com/cgrates/cgrates.git
synced 2026-02-11 18:16:24 +05:00
fix on sorting methods for rankings
This commit is contained in:
committed by
Dan Christian Bogos
parent
8926e1bfc7
commit
56207ad5b7
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user