def test_various_methods(self): self.assertEqual(Fixed8.FD(), Fixed8(100000000)) self.assertEqual(Fixed8.FD(), Fixed8.One()) sat = Fixed8.Satoshi() self.assertEqual(sat, Fixed8(1)) self.assertEqual(sat.value, 1) negsat = Fixed8.NegativeSatoshi() self.assertEqual(negsat, Fixed8(-1)) self.assertEqual(negsat.value, -1) zero = Fixed8.Zero() self.assertEqual(zero, Fixed8(0)) self.assertEqual(zero.value, 0) decimal = 1.2 f8 = Fixed8.FromDecimal(decimal) self.assertEqual(f8.value, f8.GetData()) f8 = Fixed8.TryParse(123.123) f8 = Fixed8.TryParse(123) self.assertEqual(f8.Size(), 8) zero = Fixed8.TryParse(0) self.assertEqual(zero, Fixed8(0)) self.assertEqual(Fixed8.TryParse("foo"), None) self.assertEqual(Fixed8.TryParse(-1, require_positive=True), None)
def split_to_vouts(asset, addr, input_val, divisions): divisor = Fixed8(divisions) new_amounts = input_val / divisor outputs = [] total = Fixed8.Zero() if asset == Blockchain.Default().SystemShare().Hash: if new_amounts % Fixed8.FD() > Fixed8.Zero(): new_amounts = new_amounts.Ceil() while total < input_val: if total + new_amounts < input_val: outputs.append(TransactionOutput(asset, new_amounts, addr)) total += new_amounts else: diff = input_val - total outputs.append(TransactionOutput(asset, diff, addr)) total += diff return outputs