(t *testing.T)
| 493 | } |
| 494 | |
| 495 | func TestIntervalContains(t *testing.T) { |
| 496 | te := &TemporalEvaluator{} |
| 497 | |
| 498 | jan1 := ast.Date(2024, 1, 1) |
| 499 | jan15 := ast.Date(2024, 1, 15) |
| 500 | jan10 := ast.Date(2024, 1, 10) |
| 501 | jan20 := ast.Date(2024, 1, 20) |
| 502 | jan31 := ast.Date(2024, 1, 31) |
| 503 | |
| 504 | tests := []struct { |
| 505 | name string |
| 506 | a ast.Interval // container |
| 507 | b ast.Interval // contained |
| 508 | want bool |
| 509 | }{ |
| 510 | { |
| 511 | name: "exact_match", |
| 512 | a: ast.TimeInterval(jan1, jan31), |
| 513 | b: ast.TimeInterval(jan1, jan31), |
| 514 | want: true, |
| 515 | }, |
| 516 | { |
| 517 | name: "a_contains_b", |
| 518 | a: ast.TimeInterval(jan1, jan31), |
| 519 | b: ast.TimeInterval(jan10, jan20), |
| 520 | want: true, |
| 521 | }, |
| 522 | { |
| 523 | name: "a_does_not_contain_b_start", |
| 524 | a: ast.TimeInterval(jan10, jan31), |
| 525 | b: ast.TimeInterval(jan1, jan20), |
| 526 | want: false, |
| 527 | }, |
| 528 | { |
| 529 | name: "a_does_not_contain_b_end", |
| 530 | a: ast.TimeInterval(jan1, jan15), |
| 531 | b: ast.TimeInterval(jan10, jan31), |
| 532 | want: false, |
| 533 | }, |
| 534 | { |
| 535 | name: "eternal_contains_any", |
| 536 | a: ast.EternalInterval(), |
| 537 | b: ast.TimeInterval(jan1, jan31), |
| 538 | want: true, |
| 539 | }, |
| 540 | } |
| 541 | |
| 542 | for _, tt := range tests { |
| 543 | t.Run(tt.name, func(t *testing.T) { |
| 544 | got := te.intervalContains(tt.a, tt.b) |
| 545 | if got != tt.want { |
| 546 | t.Errorf("intervalContains(%v, %v) = %v, want %v", tt.a, tt.b, got, tt.want) |
| 547 | } |
| 548 | }) |
| 549 | } |
| 550 | } |
| 551 | |
| 552 | // Benchmarks |
nothing calls this directly
no test coverage detected