(t *testing.T)
| 3307 | } |
| 3308 | |
| 3309 | func TestCalculateUnreadInRanges(t *testing.T) { |
| 3310 | tests := []struct { |
| 3311 | name string |
| 3312 | readID int |
| 3313 | lastID int |
| 3314 | ranges []types.Range |
| 3315 | expected int |
| 3316 | }{ |
| 3317 | { |
| 3318 | name: "no unread messages", |
| 3319 | readID: 10, |
| 3320 | lastID: 10, |
| 3321 | ranges: []types.Range{{Low: 5, Hi: 15}}, |
| 3322 | expected: 0, |
| 3323 | }, |
| 3324 | { |
| 3325 | name: "no deleted messages in unread range", |
| 3326 | readID: 5, |
| 3327 | lastID: 10, |
| 3328 | ranges: []types.Range{{Low: 1, Hi: 5}}, |
| 3329 | expected: 0, |
| 3330 | }, |
| 3331 | { |
| 3332 | name: "all unread messages deleted", |
| 3333 | readID: 5, |
| 3334 | lastID: 10, |
| 3335 | ranges: []types.Range{{Low: 6, Hi: 11}}, |
| 3336 | expected: 5, |
| 3337 | }, |
| 3338 | { |
| 3339 | name: "partial unread messages deleted", |
| 3340 | readID: 5, |
| 3341 | lastID: 10, |
| 3342 | ranges: []types.Range{{Low: 7, Hi: 9}}, |
| 3343 | expected: 2, |
| 3344 | }, |
| 3345 | { |
| 3346 | name: "single message deleted", |
| 3347 | readID: 5, |
| 3348 | lastID: 10, |
| 3349 | ranges: []types.Range{{Low: 7, Hi: 0}}, // Hi: 0 means single message |
| 3350 | expected: 1, |
| 3351 | }, |
| 3352 | { |
| 3353 | name: "multiple ranges", |
| 3354 | readID: 5, |
| 3355 | lastID: 15, |
| 3356 | ranges: []types.Range{{Low: 7, Hi: 9}, {Low: 12, Hi: 14}}, |
| 3357 | expected: 4, // 2 messages in range [7,9) + 2 messages in range [12,14) |
| 3358 | }, |
| 3359 | { |
| 3360 | name: "overlapping with unread boundaries", |
| 3361 | readID: 5, |
| 3362 | lastID: 10, |
| 3363 | ranges: []types.Range{{Low: 4, Hi: 8}, {Low: 9, Hi: 12}}, |
| 3364 | expected: 4, // [6,8) + [9,11) = 2 + 2 = 4 unread messages deleted |
| 3365 | }, |
| 3366 | } |
nothing calls this directly
no test coverage detected
searching dependent graphs…