from __future__ import unicode_literals

import pytest


@pytest.fixture
def open_puncts():
    return ['(', '[', '{', '*']


def test_open(open_puncts, en_tokenizer):
    word_str = 'Hello'
    for p in open_puncts:
        string = p + word_str
        tokens = en_tokenizer(string)
        assert len(tokens) == 2
        assert tokens[0].orth_ == p
        assert tokens[1].orth_ == word_str


def test_two_different_open(open_puncts, en_tokenizer):
    word_str = 'Hello'
    for p in open_puncts:
        string = p + "`" + word_str
        tokens = en_tokenizer(string)
        assert len(tokens) == 3
        assert tokens[0].orth_ == p
        assert tokens[1].orth_ == "`"
        assert tokens[2].orth_ == word_str


def test_three_same_open(open_puncts, en_tokenizer):
    word_str = 'Hello'
    for p in open_puncts:
        string = p + p + p + word_str
        tokens = en_tokenizer(string)
        assert len(tokens) == 4
        assert tokens[0].orth_ == p
        assert tokens[3].orth_ == word_str


def test_open_appostrophe(en_tokenizer):
    string = "'The"
    tokens = en_tokenizer(string)
    assert len(tokens) == 2
    assert tokens[0].orth_ == "'"