module main import sources fn test_dedup_allows_first_event() { mut d := new_dedup(DedupConfig{ enabled: true ttl_seconds: 300 rate_limit: RateLimitConfig{ max_per_minute: 10 max_per_source: 30 } }) event := sources.Event{ source: 'generic' name: 'test' topic: 'test' message: 'hello' } assert d.allow(event) == true } fn test_dedup_blocks_duplicate() { mut d := new_dedup(DedupConfig{ enabled: true ttl_seconds: 300 rate_limit: RateLimitConfig{ max_per_minute: 10 max_per_source: 30 } }) event := sources.Event{ source: 'generic' name: 'test' topic: 'test' message: 'hello' } assert d.allow(event) == true assert d.allow(event) == false } fn test_dedup_disabled() { mut d := new_dedup(DedupConfig{ enabled: false ttl_seconds: 300 rate_limit: RateLimitConfig{ max_per_minute: 10 max_per_source: 30 } }) event := sources.Event{ source: 'generic' name: 'test' topic: 'test' message: 'hello' } assert d.allow(event) == true assert d.allow(event) == true }