from nose.tools import eq_, ok_

from flask.ext.admin import tools


def test_encode_decode():
    eq_(tools.iterdecode(tools.iterencode([1, 2, 3])), (u'1', u'2', u'3'))

    eq_(tools.iterdecode(tools.iterencode([',', ',', ','])), (u',', u',', u','))

    eq_(tools.iterdecode(tools.iterencode(['.hello.,', ',', ','])), (u'.hello.,', u',', u','))

    eq_(tools.iterdecode(tools.iterencode(['.....,,,.,,..,.,,.,'])), (u'.....,,,.,,..,.,,.,',))

    eq_(tools.iterdecode(tools.iterencode([])), tuple())

    # Malformed inputs should not crash
    ok_(tools.iterdecode('.'))
    eq_(tools.iterdecode(','), (u'', u''))
