Modernise Doc array tests and don't depend on models
# coding: utf-8
from __future__ import unicode_literals
-import pytest
+from ...attrs import ORTH, SHAPE, POS, DEP
+from ..util import get_doc
-from spacy import attrs
+import pytest
-def test_attr_of_token(EN):
- text = u'An example sentence.'
- tokens = EN(text, tag=True, parse=False)
- example = EN.vocab[u'example']
+def test_array_attr_of_token(en_tokenizer, en_vocab):
+ text = "An example sentence"
+ tokens = en_tokenizer(text)
+ example = tokens.vocab["example"]
assert example.orth != example.shape
- feats_array = tokens.to_array((attrs.ORTH, attrs.SHAPE))
+ feats_array = tokens.to_array((ORTH, SHAPE))
+ assert feats_array[0][0] != feats_array[0][1]
assert feats_array[0][0] != feats_array[0][1]
-@pytest.mark.models
-def test_tag(EN):
- text = u'A nice sentence.'
- tokens = EN(text)
- assert tokens[0].tag != tokens[1].tag != tokens[2].tag != tokens[3].tag
- feats_array = tokens.to_array((attrs.ORTH, attrs.TAG))
- assert feats_array[0][1] == tokens[0].tag
- assert feats_array[1][1] == tokens[1].tag
- assert feats_array[2][1] == tokens[2].tag
- assert feats_array[3][1] == tokens[3].tag
-
-
-@pytest.mark.models
-def test_dep(EN):
- text = u'A nice sentence.'
- tokens = EN(text)
- feats_array = tokens.to_array((attrs.ORTH, attrs.DEP))
- assert feats_array[0][1] == tokens[0].dep
- assert feats_array[1][1] == tokens[1].dep
- assert feats_array[2][1] == tokens[2].dep
- assert feats_array[3][1] == tokens[3].dep
+def test_array_tag(en_tokenizer):
+ text = "A nice sentence."
+ tags = ['DET', 'ADJ', 'NOUN', 'PUNCT']
+ tokens = en_tokenizer(text)
+ doc = get_doc(tokens.vocab, [t.text for t in tokens], tags=tags)
+ assert doc[0].pos != doc[1].pos != doc[2].pos != doc[3].pos
+ feats_array = doc.to_array((ORTH, POS))
+ assert feats_array[0][1] == doc[0].pos
+ assert feats_array[1][1] == doc[1].pos
+ assert feats_array[2][1] == doc[2].pos
+ assert feats_array[3][1] == doc[3].pos
+
+
+def test_array_dep(en_tokenizer):
+ text = "A nice sentence."
+ deps = ['det', 'amod', 'ROOT', 'punct']
+ tokens = en_tokenizer(text)
+ doc = get_doc(tokens.vocab, [t.text for t in tokens], deps=deps)
+ feats_array = doc.to_array((ORTH, DEP))
+ assert feats_array[0][1] == doc[0].dep
+ assert feats_array[1][1] == doc[1].dep
+ assert feats_array[2][1] == doc[2].dep
+ assert feats_array[3][1] == doc[3].dep
