def test_curve(): curve = PriceSupplyCurve(factor=0.0001, base_price=5) assert curve.supply(0) == 0 assert curve.price(0) == curve.b assert curve.supply_at_price(curve.b) == 0, curve.supply_at_price(curve.b) assert curve.reserve_at_price(curve.b) == 0 assert curve.reserve(0) == 0 supply = 1000000 price = curve.price(supply) assert curve.supply_at_price(price) == supply reserve = curve.reserve(supply) assert curve.reserve_at_price(price) == reserve num = 1000 value = curve.cost(supply, num) assert value > 0 xassert(num, curve.issued(supply, value)) num = -1000 value = curve.cost(supply, num) assert value < 0 assert num == curve.issued(supply, value) assert -curve.cost(supply, -1) < curve.cost(supply, 1) # bid < ask mktcap = supply * price supply2 = curve.supply_at_mktcap(mktcap) assert supply == supply2 # test mktcap p = 100 s = curve.supply_at_price(p) assert curve.price(s) == p m = p * s assert m == curve.mktcap(s) assert curve.supply_at_mktcap(m) == s
def test_auction_raw(): curve = PriceSupplyCurve(factor=0.0001, base_price=5) auction = Auction(factor=10**5, const=10**3) beneficiary = Beneficiary(issuance_fraction=0) ct = Mint(curve, beneficiary, auction) assert ct._notional_supply == 0 # buy tokens num = 1 tcost = curve.cost(ct._arithmetic_supply, num) cost = ct._sale_cost(num) assert cost == tcost sold = ct.create(cost) assert sold == num and num == ct.token.supply # sell tokens pcost = ct._purchase_cost(num) xassert(pcost, cost) received = ct.destroy(num) xassert(received, pcost)