def test_constructor_text(qtbot):
    widget = UnitEdit(text='text')
    show(locals())
    assert bool(widget.getError()) is False
    assert getCurrentColor(
        widget, 'Background').names[0] == widget.defaultColors['default'][0]
    assert set(widget.getSymbols().keys()) == {'text'}
def test_constructor(qtbot):
    widget = UnitEdit()
    show(locals())
    assert widget.getError() is None
    assert getCurrentColor(
        widget, 'Background').names[0] == widget.defaultColors['blank'][0]
    assert dict() == widget.getSymbols()
def test_conversion_with_symbols(qtbot):
    widget = UnitEdit(text='1*b*mm')
    show(locals())
    syms = widget.getSymbols()
    assert set(syms.keys()) == {'b'}

    expr = widget.getExpr()
    conv = units.convert_to(expr, units.meter)
    assert conv == units.meter * Symbol('b') / 1000
    assert widget.convertTo('meter') == conv
    assert widget.convertTo(units.meter) == conv
def test_constructor_units(qtbot):
    widget = UnitEdit(text='2.0*mm')
    show(locals())
    assert widget.getError() is False
    assert getCurrentColor(
        widget, 'Background').names[0] == widget.defaultColors['default'][0]
    assert widget.getSymbols() == dict()
    assert widget.getExpr().atoms(units.Unit) == {units.mm}
    assert widget.getDimension() == units.Dimension('length')
    assert widget.getMagnitude() == 2
    assert widget.getUnits() == units.millimeter
    assert widget.getValue() == widget.getUnits() * widget.getMagnitude()
def test_invalid_conversion(qtbot):
    widget = UnitEdit(text='(1*mm)*b')
    show(locals())
    syms = widget.getSymbols()
    assert set(syms.keys()) == {'b'}

    assert (widget.convertTo(units.inch) -
            parseUnits('b*5*inch/127')).simplify() == 0
    assert (widget.convertTo('kg') - parseUnits('b*mm')).simplify() == 0
    assert (widget.convertTo(units.m * units.m) -
            parseUnits('b*m/1000')).simplify() == 0
    assert (widget.convertTo(units.m) - parseUnits('b*m/1000')).simplify() == 0

    widget = UnitEdit(text='2*mm')
    show(locals())
    assert widget.getSymbols() == dict()
    widget.convertTo(units.inch)

    assert (widget.convertTo('kg') - parseUnits('2*mm')).simplify() == 0
    assert (widget.convertTo(units.m * units.m) -
            parseUnits('1*m/500')).simplify() == 0
    assert (widget.convertTo(units.m) - parseUnits('1*m/500')).simplify() == 0