import meta_oxide
def test_extract_meta_with_none_base_url():
html = "<title>Test</title>"
meta = meta_oxide.extract_meta(html, None)
assert meta["title"] == "Test"
def test_extract_meta_empty_string():
meta = meta_oxide.extract_meta("")
assert isinstance(meta, dict)
def test_extract_opengraph_empty_string():
og = meta_oxide.extract_opengraph("")
assert isinstance(og, dict)
def test_extract_twitter_empty_string():
twitter = meta_oxide.extract_twitter("")
assert isinstance(twitter, dict)
def test_extract_all_empty_string():
data = meta_oxide.extract_all("")
assert isinstance(data, dict)
assert "meta" in data or "opengraph" in data or "twitter" in data
def test_extract_all_malformed_html():
html = "<div><span>Unclosed tags<p>More unclosed"
data = meta_oxide.extract_all(html)
assert isinstance(data, dict)
def test_extract_meta_with_invalid_utf8():
html = "<title>Test \udcff</title>" try:
meta = meta_oxide.extract_meta(html)
assert isinstance(meta, dict)
except Exception:
pass
def test_module_has_version():
assert hasattr(meta_oxide, "__version__")
assert isinstance(meta_oxide.__version__, str)
assert len(meta_oxide.__version__) > 0
def test_extract_microformats_empty():
html = "<html><body><p>No microformats here</p></body></html>"
result = meta_oxide.extract_microformats(html)
assert isinstance(result, dict)
def test_extract_hcard_none_values():
html = '<div class="h-card"><span class="p-name">Name Only</span></div>'
cards = meta_oxide.extract_hcard(html)
assert len(cards) == 1
assert cards[0]["name"] == "Name Only"
def test_extract_hentry_minimal():
html = '<article class="h-entry"><h1 class="p-name">Title</h1></article>'
entries = meta_oxide.extract_hentry(html)
assert len(entries) == 1
assert entries[0]["name"] == "Title"
def test_extract_hevent_minimal():
html = '<div class="h-event"><span class="p-name">Event</span></div>'
events = meta_oxide.extract_hevent(html)
assert len(events) == 1
assert events[0]["name"] == "Event"
def test_extract_all_with_invalid_base_url():
html = '<link rel="canonical" href="/page">'
data = meta_oxide.extract_all(html, "not-a-url")
assert isinstance(data, dict)
def test_extract_twitter_with_fallback_empty():
html = "<html><head></head></html>"
twitter = meta_oxide.extract_twitter(html)
assert isinstance(twitter, dict)
def test_large_html_document():
meta_tags = "\n".join([f'<meta name="tag{i}" content="value{i}">' for i in range(10000)])
html = f"<html><head>{meta_tags}</head></html>"
meta = meta_oxide.extract_meta(html)
assert isinstance(meta, dict)