MCPcopy
hub / github.com/tinode/chat / TestCalculateUnreadInRanges

Function TestCalculateUnreadInRanges

server/topic_test.go:3309–3377  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

3307}
3308
3309func 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 }

Callers

nothing calls this directly

Calls 1

calculateUnreadInRangesFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…