--- a
+++ b/tests/pipelines/qualifiers/test_hypothesis.py
@@ -0,0 +1,102 @@
+from typing import List
+
+from pytest import fixture, mark
+
+from edsnlp.pipelines.qualifiers.hypothesis import Hypothesis
+from edsnlp.utils.examples import parse_example
+
+examples: List[str] = [
+    "Possible <ent hypothesis_=HYP>covid-19</ent>",
+    (
+        "Plusieurs <ent hypothesis_=HYP>diagnostics</ent> sont envisagés. "
+        "Le patient est informé."
+    ),
+    "même si <ent hypothesis=False>le patient est jeune</ent>.",
+    "Suspicion de <ent hypothesis_=HYP>diabète</ent>.",
+    "Le ligament est <ent hypothesis_=CERT>rompu</ent>.",
+    "Probablement du diabète mais pas de <ent hypothesis_=CERT>cécité</ent>.",
+]
+
+
+@fixture
+def hypothesis_factory(blank_nlp):
+
+    default_config = dict(
+        pseudo=None,
+        preceding=None,
+        following=None,
+        termination=None,
+        verbs_hyp=None,
+        verbs_eds=None,
+        attr="NORM",
+        within_ents=False,
+        explain=True,
+    )
+
+    def factory(on_ents_only, **kwargs):
+
+        config = dict(**default_config)
+        config.update(kwargs)
+
+        return Hypothesis(
+            nlp=blank_nlp,
+            on_ents_only=on_ents_only,
+            **config,
+        )
+
+    return factory
+
+
+@mark.parametrize("on_ents_only", [True, False])
+def test_hypothesis(blank_nlp, hypothesis_factory, on_ents_only):
+
+    hypothesis = hypothesis_factory(on_ents_only)
+
+    for example in examples:
+        text, entities = parse_example(example=example)
+
+        doc = blank_nlp(text)
+        doc.ents = [
+            doc.char_span(ent.start_char, ent.end_char, label="ent") for ent in entities
+        ]
+
+        doc = hypothesis(doc)
+
+        for entity, ent in zip(entities, doc.ents):
+
+            for modifier in entity.modifiers:
+
+                assert bool(ent._.hypothesis_cues) == (modifier.value in {"HYP", True})
+
+                assert getattr(ent._, modifier.key) == modifier.value
+
+                if not on_ents_only:
+                    for token in ent:
+                        assert (
+                            getattr(token._, modifier.key) == modifier.value
+                        ), f"{modifier.key} labels don't match."
+
+
+def test_hypothesis_within_ents(blank_nlp, hypothesis_factory):
+
+    hypothesis = hypothesis_factory(True, within_ents=True)
+
+    examples = [
+        "<ent hypothesis_=HYP>Diabète, probablement de type 2</ent>.",
+    ]
+
+    for example in examples:
+        text, entities = parse_example(example=example)
+
+        doc = blank_nlp(text)
+        doc.ents = [
+            doc.char_span(ent.start_char, ent.end_char, label="ent") for ent in entities
+        ]
+
+        doc = hypothesis(doc)
+
+        for entity, ent in zip(entities, doc.ents):
+
+            for modifier in entity.modifiers:
+
+                assert bool(ent._.hypothesis_cues) == (modifier.value in {"HYP", True})