planner/item/recur_test.go

418 lines
9.2 KiB
Go
Raw Normal View History

2024-12-01 10:22:47 +01:00
package item_test
2024-12-22 08:37:12 +01:00
// func TestDaily(t *testing.T) {
// daily := task.Daily{
// Start: task.NewDate(2021, 1, 31), // a sunday
// }
// dailyStr := "2021-01-31 (sunday), daily"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, daily, task.NewRecurrer(dailyStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, dailyStr, daily.String())
// })
// t.Run("recurs_on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before",
// date: task.NewDate(2021, 1, 30),
// },
// {
// name: "on",
// date: daily.Start,
// exp: true,
// },
// {
// name: "after",
// date: task.NewDate(2021, 2, 1),
// exp: true,
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, daily.RecursOn(tc.date))
// })
// }
// })
// }
// func TestEveryNDays(t *testing.T) {
// every := task.EveryNDays{
// Start: task.NewDate(2022, 6, 8),
// N: 5,
// }
// everyStr := "2022-06-08 (wednesday), every 5 days"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, every, task.NewRecurrer(everyStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, everyStr, every.String())
// })
// t.Run("recurs on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before",
// date: task.NewDate(2022, 1, 1),
// },
// {
// name: "start",
// date: every.Start,
// exp: true,
// },
// {
// name: "after true",
// date: every.Start.Add(15),
// exp: true,
// },
// {
// name: "after false",
// date: every.Start.Add(16),
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, every.RecursOn(tc.date))
// })
// }
// })
// }
// func TestParseWeekly(t *testing.T) {
// start := task.NewDate(2021, 2, 7)
// for _, tc := range []struct {
// name string
// input []string
// expOk bool
// expWeekly task.Weekly
// }{
// {
// name: "empty",
// },
// {
// name: "wrong type",
// input: []string{"daily"},
// },
// {
// name: "wrong count",
// input: []string{"weeekly"},
// },
// {
// name: "unknown day",
// input: []string{"weekly", "festivus"},
// },
// {
// name: "one day",
// input: []string{"weekly", "monday"},
// expOk: true,
// expWeekly: task.Weekly{
// Start: start,
// Weekdays: task.Weekdays{
// time.Monday,
// },
// },
// },
// {
// name: "multiple days",
// input: []string{"weekly", "monday & thursday & saturday"},
// expOk: true,
// expWeekly: task.Weekly{
// Start: start,
// Weekdays: task.Weekdays{
// time.Monday,
// time.Thursday,
// time.Saturday,
// },
// },
// },
// {
// name: "wrong order",
// input: []string{"weekly", "sunday & thursday & wednesday"},
// expOk: true,
// expWeekly: task.Weekly{
// Start: start,
// Weekdays: task.Weekdays{
// time.Wednesday,
// time.Thursday,
// time.Sunday,
// },
// },
// },
// {
// name: "doubles",
// input: []string{"weekly", "sunday & sunday & monday"},
// expOk: true,
// expWeekly: task.Weekly{
// Start: start,
// Weekdays: task.Weekdays{
// time.Monday,
// time.Sunday,
// },
// },
// },
// {
// name: "one unknown",
// input: []string{"weekly", "sunday & someday"},
// expOk: true,
// expWeekly: task.Weekly{
// Start: start,
// Weekdays: task.Weekdays{
// time.Sunday,
// },
// },
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// weekly, ok := task.ParseWeekly(start, tc.input)
// test.Equals(t, tc.expOk, ok)
// if tc.expOk {
// test.Equals(t, tc.expWeekly, weekly)
// }
// })
// }
// }
// func TestWeekly(t *testing.T) {
// weekly := task.Weekly{
// Start: task.NewDate(2021, 1, 31), // a sunday
// Weekdays: task.Weekdays{
// time.Monday,
// time.Wednesday,
// time.Thursday,
// },
// }
// weeklyStr := "2021-01-31 (sunday), weekly, monday & wednesday & thursday"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, weekly, task.NewRecurrer(weeklyStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, weeklyStr, weekly.String())
// })
// t.Run("recurs_on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before start",
// date: task.NewDate(2021, 1, 27), // a wednesday
// },
// {
// name: "right weekday",
// date: task.NewDate(2021, 2, 1), // a monday
// exp: true,
// },
// {
// name: "another right day",
// date: task.NewDate(2021, 2, 3), // a wednesday
// exp: true,
// },
// {
// name: "wrong weekday",
// date: task.NewDate(2021, 2, 5), // a friday
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, weekly.RecursOn(tc.date))
// })
// }
// })
// }
// func TestBiweekly(t *testing.T) {
// biweekly := task.Biweekly{
// Start: task.NewDate(2021, 1, 31), // a sunday
// Weekday: time.Wednesday,
// }
// biweeklyStr := "2021-01-31 (sunday), biweekly, wednesday"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, biweekly, task.NewRecurrer(biweeklyStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, biweeklyStr, biweekly.String())
// })
// t.Run("recurs_on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before start",
// date: task.NewDate(2021, 1, 27), // a wednesday
// },
// {
// name: "wrong weekday",
// date: task.NewDate(2021, 2, 1), // a monday
// },
// {
// name: "odd week count",
// date: task.NewDate(2021, 2, 10), // a wednesday
// },
// {
// name: "right",
// date: task.NewDate(2021, 2, 17), // a wednesday
// exp: true,
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, biweekly.RecursOn(tc.date))
// })
// }
// })
// }
// func TestEveryNWeeks(t *testing.T) {
// everyNWeeks := task.EveryNWeeks{
// Start: task.NewDate(2021, 2, 3),
// N: 3,
// }
// everyNWeeksStr := "2021-02-03 (wednesday), every 3 weeks"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, everyNWeeks, task.NewRecurrer(everyNWeeksStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, everyNWeeksStr, everyNWeeks.String())
// })
// t.Run("recurs on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before start",
// date: task.NewDate(2021, 1, 27),
// },
// {
// name: "on start",
// date: task.NewDate(2021, 2, 3),
// exp: true,
// },
// {
// name: "wrong day",
// date: task.NewDate(2021, 2, 4),
// },
// {
// name: "one week after",
// date: task.NewDate(2021, 2, 10),
// },
// {
// name: "first interval",
// date: task.NewDate(2021, 2, 24),
// exp: true,
// },
// {
// name: "second interval",
// date: task.NewDate(2021, 3, 17),
// exp: true,
// },
// {
// name: "second interval plus one week",
// date: task.NewDate(2021, 3, 24),
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, everyNWeeks.RecursOn(tc.date))
// })
// }
// })
// }
// func TestEveryNMonths(t *testing.T) {
// everyNMonths := task.EveryNMonths{
// Start: task.NewDate(2021, 2, 3),
// N: 3,
// }
// everyNMonthsStr := "2021-02-03 (wednesday), every 3 months"
// t.Run("parse", func(t *testing.T) {
// test.Equals(t, everyNMonths, task.NewRecurrer(everyNMonthsStr))
// })
// t.Run("string", func(t *testing.T) {
// test.Equals(t, everyNMonthsStr, everyNMonths.String())
// })
// t.Run("recurs on", func(t *testing.T) {
// for _, tc := range []struct {
// name string
// date task.Date
// exp bool
// }{
// {
// name: "before start",
// date: task.NewDate(2021, 1, 27),
// },
// {
// name: "on start",
// date: task.NewDate(2021, 2, 3),
// exp: true,
// },
// {
// name: "8 weeks after",
// date: task.NewDate(2021, 3, 31),
// },
// {
// name: "one month",
// date: task.NewDate(2021, 3, 3),
// },
// {
// name: "3 months",
// date: task.NewDate(2021, 5, 3),
// exp: true,
// },
// {
// name: "4 months",
// date: task.NewDate(2021, 6, 3),
// },
// {
// name: "6 months",
// date: task.NewDate(2021, 8, 3),
// exp: true,
// },
// } {
// t.Run(tc.name, func(t *testing.T) {
// test.Equals(t, tc.exp, everyNMonths.RecursOn(tc.date))
// })
// }
// })
// t.Run("recurs every year", func(t *testing.T) {
// recur := task.EveryNMonths{
// Start: task.NewDate(2021, 3, 1),
// N: 12,
// }
// test.Equals(t, false, recur.RecursOn(task.NewDate(2021, 3, 9)))
// })
// t.Run("bug", func(t *testing.T) {
// recur := task.EveryNMonths{
// Start: task.NewDate(2021, 3, 1),
// N: 1,
// }
// test.Equals(t, false, recur.RecursOn(task.NewDate(2021, 11, 3)))
// })
// }