import pytest from spacy.morphology import Morphology from spacy.strings import StringStore, get_string_id from spacy.lemmatizer import Lemmatizer from spacy.lookups import Lookups @pytest.fixture def morphology(): lemmatizer = Lemmatizer(Lookups()) return Morphology(StringStore(), {}, lemmatizer) def test_init(morphology): pass def test_add_morphology_with_string_names(morphology): morphology.add({"Case": "gen", "Number": "sing"}) def test_add_morphology_with_int_ids(morphology): morphology.strings.add("Case") morphology.strings.add("gen") morphology.strings.add("Number") morphology.strings.add("sing") morphology.add( { get_string_id("Case"): get_string_id("gen"), get_string_id("Number"): get_string_id("sing"), } ) def test_add_morphology_with_mix_strings_and_ints(morphology): morphology.strings.add("PunctSide") morphology.strings.add("ini") morphology.add( {get_string_id("PunctSide"): get_string_id("ini"), "VerbType": "aux"} ) def test_morphology_tags_hash_distinctly(morphology): tag1 = morphology.add({"PunctSide": "ini", "VerbType": "aux"}) tag2 = morphology.add({"Case": "gen", "Number": "sing"}) assert tag1 != tag2 def test_morphology_tags_hash_independent_of_order(morphology): tag1 = morphology.add({"Case": "gen", "Number": "sing"}) tag2 = morphology.add({"Number": "sing", "Case": "gen"}) assert tag1 == tag2