コード例 #1
0
ファイル: test_basedreal.py プロジェクト: legau/kanon
def test_truncations():
    s = Sexagesimal("1, 2, 30; 18, 52, 23")
    assert round(s).equals(s)
    assert round(s, 1).equals(Sexagesimal("1,2,30;19"))
    assert s.truncate(1).equals(Sexagesimal("1,2,30;18"))
    assert s.truncate(100).equals(s)
    assert m.trunc(s) == 3750
    assert m.floor(s) == 3750
    assert m.ceil(s) == 3751
    assert m.floor(-s) == -3749
    assert m.ceil(-s) == -3750
    assert Sexagesimal(1, 2,
                       3).minimize_precision().equals(Sexagesimal(1, 2, 3))
    assert (Sexagesimal("1, 2, 3; 0, 0").minimize_precision().equals(
        Sexagesimal(1, 2, 3)))
コード例 #2
0
ファイル: test_quantity.py プロジェクト: legau/kanon
    def test_attribute_forwarding(self):
        q = Sexagesimal("1;0,1,31") * degree

        with pytest.raises(AttributeError):
            q._from_string()
        with pytest.raises(AttributeError):
            q.does_not_exist()

        assert q.truncate(2).value.equals(q.value.truncate(2))
        assert q.left == (1, )

        assert round(q, 2).value.equals(round(q.value, 2))
コード例 #3
0
ファイル: test_precision.py プロジェクト: legau/kanon
    def test_precision_modes(self):
        s1 = Sexagesimal("0;30,0,0,6")
        s2 = Sexagesimal(2)
        with set_precision(pmode=PrecisionMode.MAX):
            self.equality(s1 + s2, Sexagesimal("2;30,0,0,6"))
            self.equality(s1 * s2, Sexagesimal("1;0,0,0,12"))
            self.equality(s1 / s2, Sexagesimal("0;15,0,0,3"))

        with set_precision(pmode=PrecisionMode.SCI):
            s1_ = s1.truncate(3)
            self.equality(s1_ + s2, Sexagesimal(2, remainder=Decimal("0.5")))
            self.equality(s1_ * s2, Sexagesimal(1))
            self.equality(s1_ / s2, Sexagesimal(0, remainder=Decimal("0.25")))

        with set_precision(pmode=3):
            self.equality(
                s1 + s2,
                Sexagesimal((2, ), (30, 0, 0), remainder=Decimal("0.1")))
            self.equality(
                s1 * s2, Sexagesimal((1, ), (0, 0, 0),
                                     remainder=Decimal("0.2")))
            self.equality(
                s1 / s2,
                Sexagesimal((0, ), (15, 0, 0), remainder=Decimal("0.05")))

            assert round(Sexagesimal(2, remainder=Decimal("0.5"))) == 3

        with pytest.raises(NotImplementedError):
            with set_precision(pmode=PrecisionMode.FULL):
                s1 + s2

        with pytest.raises(ValueError):
            with set_precision(pmode=-1):
                pass

        with pytest.raises(TypeError):
            with set_precision(pmode="a"):
                pass