github.com/m-lab/locate@v0.17.6/limits/cron_test.go (about) 1 package limits 2 3 import ( 4 "testing" 5 "time" 6 ) 7 8 func TestSchedule_IsLimited(t *testing.T) { 9 tests := []struct { 10 name string 11 schedule string 12 duration time.Duration 13 t time.Time 14 want bool 15 }{ 16 { 17 name: "within-limit", 18 schedule: "15,45 5-11 * * *", 19 duration: time.Minute, // At minute 15 and 45, every hour from 5 to 11. 20 t: time.Date(2023, time.November, 16, 10, 15, 0, 0, time.UTC), // At minute 15. 21 want: true, 22 }, 23 { 24 name: "always", 25 schedule: "* * * * *", // Every minute. 26 duration: time.Minute, 27 t: time.Now().UTC(), 28 want: true, 29 }, 30 { 31 name: "duration-zero", 32 schedule: "* * * * *", // Every minute. 33 duration: 0, 34 t: time.Now().UTC(), 35 want: false, 36 }, 37 { 38 name: "outside-limit", 39 schedule: "15,45 5-11 * * *", // At minute 15 and 45, every hour from 5 to 11. 40 duration: time.Minute, 41 t: time.Date(2023, time.November, 16, 10, 25, 0, 0, time.UTC), // At minute 25. 42 want: false, 43 }, 44 } 45 for _, tt := range tests { 46 t.Run(tt.name, func(t *testing.T) { 47 c := NewCron(tt.schedule, tt.duration) 48 if got := c.IsLimited(tt.t); got != tt.want { 49 t.Errorf("Cron.IsLimited() = %v, want %v", got, tt.want) 50 } 51 }) 52 } 53 }