From da7e2580b7b4f2619fbfeba68b71fc236ddb9bf2 Mon Sep 17 00:00:00 2001 From: Radu Ioan Fericean Date: Tue, 19 May 2015 13:59:04 +0300 Subject: [PATCH] added holiday rating plan test --- engine/calldesc_test.go | 32 ++++++++++++++++++++++++++++++++ engine/rateinterval.go | 3 +++ engine/timespans.go | 4 ++-- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/engine/calldesc_test.go b/engine/calldesc_test.go index c34e95505..610236409 100644 --- a/engine/calldesc_test.go +++ b/engine/calldesc_test.go @@ -218,6 +218,38 @@ func TestSplitSpansRoundToIncrements(t *testing.T) { } } +func TestCalldescHolliday(t *testing.T) { + cd := &CallDescriptor{ + TimeStart: time.Date(2015, time.May, 1, 13, 30, 0, 0, time.UTC), + TimeEnd: time.Date(2015, time.May, 1, 13, 35, 26, 0, time.UTC), + RatingInfos: RatingInfos{ + &RatingInfo{ + RateIntervals: RateIntervalList{ + &RateInterval{ + Timing: &RITiming{WeekDays: utils.WeekDays{1, 2, 3, 4, 5}, StartTime: "00:00:00"}, + Weight: 10, + }, + &RateInterval{ + Timing: &RITiming{WeekDays: utils.WeekDays{6, 7}, StartTime: "00:00:00"}, + Weight: 10, + }, + &RateInterval{ + Timing: &RITiming{Months: utils.Months{time.May}, MonthDays: utils.MonthDays{1}, StartTime: "00:00:00"}, + Weight: 5, + }, + }, + }, + }, + } + timespans := cd.splitInTimeSpans() + if len(timespans) != 1 { + t.Error("Error assiging holidy rate interval: ", timespans) + } + if timespans[0].RateInterval.Timing.MonthDays == nil { + t.Errorf("Error setting holiday rate interval: %+v", timespans[0].RateInterval.Timing) + } +} + func TestGetCost(t *testing.T) { t1 := time.Date(2012, time.February, 2, 17, 30, 0, 0, time.UTC) t2 := time.Date(2012, time.February, 2, 18, 30, 0, 0, time.UTC) diff --git a/engine/rateinterval.go b/engine/rateinterval.go index 5a2f8e273..19f6149ea 100644 --- a/engine/rateinterval.go +++ b/engine/rateinterval.go @@ -327,6 +327,9 @@ func (i *RateInterval) GetCost(duration, startSecond time.Duration) float64 { // Gets the price for a the provided start second func (i *RateInterval) GetRateParameters(startSecond time.Duration) (rate float64, rateIncrement, rateUnit time.Duration) { + if i.Rating == nil { + return -1, -1, -1 + } i.Rating.Rates.Sort() for index, price := range i.Rating.Rates { if price.GroupIntervalStart <= startSecond && (index == len(i.Rating.Rates)-1 || diff --git a/engine/timespans.go b/engine/timespans.go index 23a74b477..c923f98f3 100644 --- a/engine/timespans.go +++ b/engine/timespans.go @@ -546,8 +546,8 @@ func (ts *TimeSpan) hasBetterRateIntervalThan(interval *RateInterval) bool { return false } //log.Print("StartTime: ", ts.TimeStart) - //log.Printf("OWN: %+v", ts.RateInterval.Timing) - //log.Printf("OTHER: %+v", interval.Timing) + //log.Printf("OWN: %+v", ts.RateInterval) + //log.Printf("OTHER: %+v", interval) // the lower the weight the better if ts.RateInterval != nil && ts.RateInterval.Weight < interval.Weight {