From 8758309a4ac87879874e3332ba0043f4d43f8fb6 Mon Sep 17 00:00:00 2001 From: Moises Macia Date: Mon, 23 Mar 2026 23:44:42 +0000 Subject: [PATCH] add tests --- test/feed_reader/format_detection_test.exs | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/feed_reader/format_detection_test.exs b/test/feed_reader/format_detection_test.exs index 2e2e4d5..1248845 100644 --- a/test/feed_reader/format_detection_test.exs +++ b/test/feed_reader/format_detection_test.exs @@ -31,6 +31,32 @@ defmodule FeedReader.FormatDetectionTest do assert FeedReader.detect_format(content, max_detection_bytes: 40) == :rss end + test "detection fails closed for unsupported inputs and invalid limits" do + assert FeedReader.FormatDetector.detect(:not_binary, []) == :unknown + refute FeedReader.FormatDetector.validate(nil, :rss, []) + refute FeedReader.validate("", :rss, max_detection_bytes: 0) + + {format, _prefix, _replay} = FeedReader.FormatDetector.detect_and_replay([:not_binary], []) + assert format == :unknown + refute FeedReader.FormatDetector.validate("", "rss", []) + + source = [""] + + assert FeedReader.FormatDetector.detect_and_replay(source, max_detection_bytes: 0) == + {:unknown, "", source} + end + + test "enumerable detection finalizes when the source ends before its prefix limit" do + source = [""] + + {format, prefix, replay} = + FeedReader.FormatDetector.detect_and_replay(source, max_detection_bytes: 64) + + assert format == :rss + assert prefix == hd(source) + assert Enum.to_list(replay) == [prefix] + end + test "validation checks only the explicitly selected format" do rss = ""