예제 #1
0
    def test_clamp(self, default_tax_policy, default_tax_rate):
        # Analogous test:
        # https://github.com/terra-project/core/blob/develop/x/treasury/internal/types/constraint_test.go#L10
        tax_policy = default_tax_policy
        prev_rate = default_tax_rate

        # Case 1: try to update delta > change_max
        new_rate = prev_rate + tax_policy.change_max * 2
        clamped_rate = tax_policy.clamp(prev_rate, new_rate)
        assert prev_rate + tax_policy.change_max == clamped_rate

        # Case 2: try to update delta > change_max (negative)
        new_rate = prev_rate - tax_policy.change_max * 2
        clamped_rate = tax_policy.clamp(prev_rate, new_rate)
        assert prev_rate - tax_policy.change_max == clamped_rate

        # Case 3: try to update the new rate > min_rate
        prev_rate = tax_policy.rate_max
        new_rate = prev_rate + Dec.with_prec(1, 3)
        clamped_rate = tax_policy.clamp(prev_rate, new_rate)
        assert tax_policy.rate_max == clamped_rate

        # Case 4: try to update the new rate < minRate
        prev_rate = tax_policy.rate_min
        new_rate = tax_policy.rate_min - Dec.with_prec(1, 3)
        clamped_rate = tax_policy.clamp(prev_rate, new_rate)
        assert tax_policy.rate_min == clamped_rate
예제 #2
0
def default_tax_policy():
    return PolicyConstraints(
        rate_min=Dec.with_prec(5, 4),
        rate_max=Dec.with_prec(1, 2),
        cap=Coin("usdr", 1),
        change_max=Dec.with_prec(25, 5),
    )
예제 #3
0
 def test_cosmos_mul(self):
     examples = [
         (Dec(-1), Dec(-1), Dec(1)),
         (Dec(3), Dec(7), Dec(21)),
         (Dec.with_prec(3333, 4), Dec.with_prec(333, 4), Dec.with_prec(1109889, 8),),
     ]
     for x in examples:
         assert x[0] * x[1] == x[2]
예제 #4
0
 def test_cosmos_quo(self):
     examples = [
         (Dec(-1), Dec(-1), Dec(1)),
         (Dec(3), Dec(7), Dec.with_prec(428571428571428571, 18)),
         (
             Dec.with_prec(3333, 4),
             Dec.with_prec(333, 4),
             Dec("10.009009009009009009"),
         ),
     ]
     for x in examples:
         assert x[0] / x[1] == x[2]
예제 #5
0
def default_tax_rate():
    return Dec.with_prec(1, 3)