def test___add__():
    assert kg + kg == si.Physical(2, si.Dimensions(1, 0, 0, 0, 0, 0, 0), 1)
    assert m + ft == si.Physical(1.3048, si.Dimensions(0, 1, 0, 0, 0, 0, 0), 1)
    assert ft + m == si.Physical(1.3048, si.Dimensions(0, 1, 0, 0, 0, 0, 0),
                                 1 / 0.3048)
    assert N + lb == si.Physical(5.4482216152605005,
                                 si.Dimensions(1, 1, -2, 0, 0, 0, 0), 1)
    assert lb + N == si.Physical(5.4482216152605005,
                                 si.Dimensions(1, 1, -2, 0, 0, 0, 0),
                                 0.22480894309971047)
    assert ft + 3 == si.Physical(1.2192, si.Dimensions(0, 1, 0, 0, 0, 0, 0),
                                 1 / 0.3048)
    with pytest.raises(ValueError):
        kg + m
        N + psf
def test__get_derived_unit():
    func = phf._get_derived_unit
    assert func(si.Dimensions(1, 1, -2, 0, 0, 0, 0), env_dims) == {
        "N": {
            "Dimension": si.Dimensions(kg=1, m=1, s=-2, A=0, cd=0, K=0, mol=0),
            "Factor": 1,
        }
    }
    assert func(si.Dimensions(1, 0, 0, 0, 0, 0, 0), env_dims) == {}
    assert func(si.Dimensions(1, 0, -2, 0, 0, 0, 0), env_dims) == {
        "N_m": {
            "Dimension": si.Dimensions(kg=1, m=0, s=-2, A=0, cd=0, K=0, mol=0),
            "Factor": 1,
            "Symbol": "N/m",
        }
    }
    assert func(si.Dimensions(1, 1, 1, 1, 1, 1, 1), env_dims) == {}
def test___pow__():
    assert N**2 == si.Physical(1, si.Dimensions(2, 2, -4, 0, 0, 0, 0), 1)
    assert ft**3 == si.Physical(0.3048**3, si.Dimensions(0, 3, 0, 0, 0, 0, 0),
                                (1 / 0.3048)**3)
def test___rsub__():
    assert 2 - ft == si.Physical(0.3048, si.Dimensions(0, 1, 0, 0, 0, 0, 0),
                                 1 / 0.3048)
    assert 10 - N == si.Physical(9, si.Dimensions(1, 1, -2, 0, 0, 0, 0), 1)
def test__check_dims_parallel():
    assert phf._check_dims_parallel((3, 2, 1, 0), (6, 4, 2, 0))
    assert phf._check_dims_parallel(si.Dimensions(1, 2, -2, 0, 0, 0, 0),
                                    si.Dimensions(-1, -2, 2, 0, 0, 0, 0))