def remaining_sell_amount(self) -> Wad: unavailable_buy_amount = self._exchange.get_unavailable_buy_amount( self) if unavailable_buy_amount >= self.buy_amount: return Wad(0) else: return Wad.max( self.pay_amount - (unavailable_buy_amount * self.pay_amount / self.buy_amount), Wad(0))
def test_max_value_should_reject_comparison_with_ints(self): with pytest.raises(ArithmeticError): Wad.max(Wad(10), 20) with pytest.raises(ArithmeticError): Wad.max(15, Wad(25))
def test_max_value_should_reject_comparison_with_rays(self): with pytest.raises(ArithmeticError): Wad.max(Wad(10), Ray(20)) with pytest.raises(ArithmeticError): Wad.max(Wad(25), Ray(15))
def test_max_value(self): assert Wad.max(Wad(10), Wad(20)) == Wad(20) assert Wad.max(Wad(25), Wad(15)) == Wad(25) assert Wad.max(Wad(25), Wad(15), Wad(40)) == Wad(40)
def remaining_buy_amount(self) -> Wad: return Wad.max( self.buy_amount - self._exchange.get_unavailable_buy_amount(self), Wad(0))