def test_itertext_single_element():
    func = css('#iter_text') | itemgetter(0) | itertext | list
    assert func(etree) == ['This is ', 'some ', 'text.']
def test_itertext_nbsp():
    func = css('#nbsp') | itertext | list
    assert func(etree) == [u'\xa0']
def test_iterhref_empty():
    f = css('#nosuch') | iterhref | list
    assert f(etree) == []
def test_itertext():
    select_elem = css('#iter_text')
    extract_text = select_elem | itertext
    chunks = list(extract_text(etree))
    assert chunks == ['This is ', 'some ', 'text.']
def test_iterhref():
    f = css('#div1 a') | iterhref | list
    assert f(etree) == ['http://some.where/1', 'http://some.where/2']
def test_iterattr_missing_default():
    f = css('#div1 a') | iterattr('nosuch') | list
    assert f(etree) == []
def test_iterattr_default():
    f = css('#div1 a') | iterattr('nosuch', '') | list
    assert f(etree) == ['', '']
def test_iterattr():
    f = css('#div1 a') | iterattr('href') | list
    assert f(etree) == ['/1', '/2']
def test_css():
    f = css('h1')
    assert [e.tag for e in f(etree)] == ['h1']