import pytest

import dingguo

@pytest.mark.parametrize(('params', 'kwargs', 'expected_value', 'expected_unit'), [
    [[1, u'cm'], {}, 1, u'cm'],
    [[1], {'unit': u'cm'}, 1, u'cm'],
    [[], {'unit': u'cm'}, None, u'cm'],
    [[], {'value': 1.0, 'unit': u'cm'}, 1.0, u'cm'],
    [[], {'value': (3, -1), 'unit': u'cm'}, (3, -1), u'cm'],
    [[(-1, 3), u'cm'], {}, (-1, 3), u'cm'],
    ])
def test_init(params, kwargs, expected_value, expected_unit):
    f = dingguo.Figure(*params, **kwargs)
    assert type(f.value) == type(expected_value)
    assert type(f.unit) == type(expected_unit)
    assert f.value == expected_value
    assert f.unit == expected_unit

@pytest.mark.parametrize(('params', 'kwargs'), [
    [[], {}],
    [[1, 'cm'], {}],
    [[1], {'unit': 'cm'}],
    ])
def test_init_fail(params, kwargs):
    with pytest.raises(Exception):
        dingguo.Figure(*params, **kwargs)