diff --git a/engine/timespans.go b/engine/timespans.go index e8f30c670..9c340b869 100644 --- a/engine/timespans.go +++ b/engine/timespans.go @@ -185,6 +185,7 @@ func (tss TimeSpans) Decompress() { incrs = append(incrs, cIncr.Clone()) } } + ts.Increments = incrs } } diff --git a/engine/timespans_test.go b/engine/timespans_test.go index f90a92ffc..d705a1b0b 100644 --- a/engine/timespans_test.go +++ b/engine/timespans_test.go @@ -1491,3 +1491,55 @@ func TestOverlapWithTimeSpansOne(t *testing.T) { t.Error("Error overlaping with timespans timespans: ", tss) } } + +func TestTSCompressDecompress(t *testing.T) { + tss := TimeSpans{ + &TimeSpan{ + Increments: Increments{ + &Increment{ + Duration: time.Minute, + Cost: 10.4, + BalanceInfo: &BalanceInfo{"1", "2", "3"}, + BalanceRateInterval: &RateInterval{Rating: &RIRate{Rates: RateGroups{&Rate{GroupIntervalStart: 0, Value: 100, RateIncrement: 10 * time.Second, RateUnit: time.Second}}}}, + MinuteInfo: &MinuteInfo{"1", 2.3}, + }, + &Increment{ + Duration: time.Minute, + Cost: 10.4, + BalanceInfo: &BalanceInfo{"1", "2", "3"}, + BalanceRateInterval: &RateInterval{Rating: &RIRate{Rates: RateGroups{&Rate{GroupIntervalStart: 0, Value: 100, RateIncrement: 10 * time.Second, RateUnit: time.Second}}}}, + MinuteInfo: &MinuteInfo{"1", 2.3}, + }, + &Increment{ + Duration: time.Minute, + Cost: 10.4, + BalanceInfo: &BalanceInfo{"1", "2", "3"}, + BalanceRateInterval: &RateInterval{Rating: &RIRate{Rates: RateGroups{&Rate{GroupIntervalStart: 0, Value: 100, RateIncrement: 10 * time.Second, RateUnit: time.Second}}}}, + MinuteInfo: &MinuteInfo{"1", 2.3}, + }, + &Increment{ + Duration: time.Minute, + Cost: 10.4, + BalanceInfo: &BalanceInfo{"1", "2", "3"}, + BalanceRateInterval: &RateInterval{Rating: &RIRate{Rates: RateGroups{&Rate{GroupIntervalStart: 0, Value: 100, RateIncrement: 1111 * time.Second, RateUnit: time.Second}}}}, + MinuteInfo: &MinuteInfo{"1", 2.3}, + }, + &Increment{ + Duration: time.Minute, + Cost: 10.4, + BalanceInfo: &BalanceInfo{"1", "2", "3"}, + BalanceRateInterval: &RateInterval{Rating: &RIRate{Rates: RateGroups{&Rate{GroupIntervalStart: 0, Value: 100, RateIncrement: 10 * time.Second, RateUnit: time.Second}}}}, + MinuteInfo: &MinuteInfo{"1", 2.3}, + }, + }, + }, + } + tss.Compress() + if len(tss[0].Increments) != 3 { + t.Error("Error compressing timespan: ", tss[0].Increments) + } + tss.Decompress() + if len(tss[0].Increments) != 5 { + t.Error("Error decompressing timespans: ", tss[0].Increments) + } +}