73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package sprints
|
|
|
|
import (
|
|
"git.aiterp.net/stufflog3/stufflog3/models"
|
|
"github.com/go-playground/assert/v2"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestBurndownGenerator_Add(t *testing.T) {
|
|
bg := burndownGenerator{}
|
|
|
|
// This is too early on the second, and counts as the first.
|
|
bg.Add(td(3, 2, 20), 14)
|
|
assert.Equal(t, bg.Points, []BurndownDataPoint{
|
|
{Date: d(2), Value: 14},
|
|
})
|
|
|
|
// Add some more data points in order
|
|
bg.Add(td(3, 14, 11), 4)
|
|
bg.Add(td(4, 6, 44), 3)
|
|
bg.Add(td(21, 11, 24), 20)
|
|
assert.Equal(t, bg.Points, []BurndownDataPoint{
|
|
{Date: d(2), Value: 14},
|
|
{Date: d(3), Value: 18},
|
|
{Date: d(4), Value: 21},
|
|
{Date: d(21), Value: 41},
|
|
})
|
|
|
|
// Add ones out of order.
|
|
bg.Add(td(7, 21, 12), 2)
|
|
bg.Add(td(2, 15, 22), 1)
|
|
assert.Equal(t, bg.Points, []BurndownDataPoint{
|
|
{Date: d(2), Value: 15},
|
|
{Date: d(3), Value: 19},
|
|
{Date: d(4), Value: 22},
|
|
{Date: d(7), Value: 24},
|
|
{Date: d(21), Value: 44},
|
|
})
|
|
|
|
// Add one at the start
|
|
bg.Add(td(1, 11, 16), 1)
|
|
assert.Equal(t, bg.Points, []BurndownDataPoint{
|
|
{Date: d(1), Value: 1},
|
|
{Date: d(2), Value: 16},
|
|
{Date: d(3), Value: 20},
|
|
{Date: d(4), Value: 23},
|
|
{Date: d(7), Value: 25},
|
|
{Date: d(21), Value: 45},
|
|
})
|
|
|
|
// Add one more in the middle for good measure
|
|
bg.Add(td(5, 14, 33), 10)
|
|
assert.Equal(t, bg.Points, []BurndownDataPoint{
|
|
{Date: d(1), Value: 1},
|
|
{Date: d(2), Value: 16},
|
|
{Date: d(3), Value: 20},
|
|
{Date: d(4), Value: 23},
|
|
{Date: d(5), Value: 33},
|
|
{Date: d(7), Value: 35},
|
|
{Date: d(21), Value: 55},
|
|
})
|
|
|
|
}
|
|
|
|
func d(dd int) models.Date {
|
|
return models.Date{2022, 7, dd}
|
|
}
|
|
|
|
func td(dd, hh, mm int) time.Time {
|
|
return time.Date(2022, time.July, dd, hh, mm, 17, 0, time.UTC)
|
|
}
|