1package btcutil_test
2
3import (
4	"fmt"
5	"math"
6
7	"github.com/btcsuite/btcutil"
8)
9
10func ExampleAmount() {
11
12	a := btcutil.Amount(0)
13	fmt.Println("Zero Satoshi:", a)
14
15	a = btcutil.Amount(1e8)
16	fmt.Println("100,000,000 Satoshis:", a)
17
18	a = btcutil.Amount(1e5)
19	fmt.Println("100,000 Satoshis:", a)
20	// Output:
21	// Zero Satoshi: 0 BTC
22	// 100,000,000 Satoshis: 1 BTC
23	// 100,000 Satoshis: 0.001 BTC
24}
25
26func ExampleNewAmount() {
27	amountOne, err := btcutil.NewAmount(1)
28	if err != nil {
29		fmt.Println(err)
30		return
31	}
32	fmt.Println(amountOne) //Output 1
33
34	amountFraction, err := btcutil.NewAmount(0.01234567)
35	if err != nil {
36		fmt.Println(err)
37		return
38	}
39	fmt.Println(amountFraction) //Output 2
40
41	amountZero, err := btcutil.NewAmount(0)
42	if err != nil {
43		fmt.Println(err)
44		return
45	}
46	fmt.Println(amountZero) //Output 3
47
48	amountNaN, err := btcutil.NewAmount(math.NaN())
49	if err != nil {
50		fmt.Println(err)
51		return
52	}
53	fmt.Println(amountNaN) //Output 4
54
55	// Output: 1 BTC
56	// 0.01234567 BTC
57	// 0 BTC
58	// invalid bitcoin amount
59}
60
61func ExampleAmount_unitConversions() {
62	amount := btcutil.Amount(44433322211100)
63
64	fmt.Println("Satoshi to kBTC:", amount.Format(btcutil.AmountKiloBTC))
65	fmt.Println("Satoshi to BTC:", amount)
66	fmt.Println("Satoshi to MilliBTC:", amount.Format(btcutil.AmountMilliBTC))
67	fmt.Println("Satoshi to MicroBTC:", amount.Format(btcutil.AmountMicroBTC))
68	fmt.Println("Satoshi to Satoshi:", amount.Format(btcutil.AmountSatoshi))
69
70	// Output:
71	// Satoshi to kBTC: 444.333222111 kBTC
72	// Satoshi to BTC: 444333.222111 BTC
73	// Satoshi to MilliBTC: 444333222.111 mBTC
74	// Satoshi to MicroBTC: 444333222111 μBTC
75	// Satoshi to Satoshi: 44433322211100 Satoshi
76}
77