github.com/Synthesix/Sia@v1.3.3-0.20180413141344-f863baeed3ca/cmd/siac/parse_test.go (about) 1 package main 2 3 import ( 4 "math/big" 5 "testing" 6 7 "github.com/Synthesix/Sia/types" 8 ) 9 10 func TestParseFilesize(t *testing.T) { 11 tests := []struct { 12 in, out string 13 err error 14 }{ 15 {"1b", "1", nil}, 16 {"1KB", "1000", nil}, 17 {"1MB", "1000000", nil}, 18 {"1GB", "1000000000", nil}, 19 {"1TB", "1000000000000", nil}, 20 {"1KiB", "1024", nil}, 21 {"1MiB", "1048576", nil}, 22 {"1GiB", "1073741824", nil}, 23 {"1TiB", "1099511627776", nil}, 24 {"", "", errUnableToParseSize}, 25 {"123", "", errUnableToParseSize}, 26 {"123b", "123", nil}, 27 {"123TB", "123000000000000", nil}, 28 {"123GiB", "132070244352", nil}, 29 {"123BiB", "", errUnableToParseSize}, 30 {"GB", "", errUnableToParseSize}, 31 {"123G", "", errUnableToParseSize}, 32 {"123B99", "", errUnableToParseSize}, 33 {"12A3456", "", errUnableToParseSize}, 34 {"1.23KB", "1230", nil}, 35 {"1.234KB", "1234", nil}, 36 {"1.2345KB", "1234", nil}, 37 } 38 for _, test := range tests { 39 res, err := parseFilesize(test.in) 40 if res != test.out || err != test.err { 41 t.Errorf("parseFilesize(%v): expected %v %v, got %v %v", test.in, test.out, test.err, res, err) 42 } 43 } 44 } 45 46 func TestParsePeriod(t *testing.T) { 47 tests := []struct { 48 in, out string 49 err error 50 }{ 51 {"x", "", errUnableToParseSize}, 52 {"1", "", errUnableToParseSize}, 53 {"b", "", errUnableToParseSize}, 54 {"1b", "1", nil}, 55 {"1 b", "1", nil}, 56 {"1block", "1", nil}, 57 {"1 block", "1", nil}, 58 {"1blocks", "1", nil}, 59 {"1 blocks", "1", nil}, 60 {"2b", "2", nil}, 61 {"2 b", "2", nil}, 62 {"2block", "2", nil}, 63 {"2 block", "2", nil}, 64 {"2blocks", "2", nil}, 65 {"2 blocks", "2", nil}, 66 {"2h", "12", nil}, 67 {"2 h", "12", nil}, 68 {"2hour", "12", nil}, 69 {"2 hour", "12", nil}, 70 {"2hours", "12", nil}, 71 {"2 hours", "12", nil}, 72 {"0.5d", "72", nil}, 73 {"0.5 d", "72", nil}, 74 {"0.5day", "72", nil}, 75 {"0.5 day", "72", nil}, 76 {"0.5days", "72", nil}, 77 {"0.5 days", "72", nil}, 78 {"10w", "10080", nil}, 79 {"10 w", "10080", nil}, 80 {"10week", "10080", nil}, 81 {"10 week", "10080", nil}, 82 {"10weeks", "10080", nil}, 83 {"10 weeks", "10080", nil}, 84 {"1 fortnight", "", errUnableToParseSize}, 85 {"three h", "", errUnableToParseSize}, 86 } 87 for _, test := range tests { 88 res, err := parsePeriod(test.in) 89 if res != test.out || err != test.err { 90 t.Errorf("parsePeriod(%v): expected %v %v, got %v %v", test.in, test.out, test.err, res, err) 91 } 92 } 93 } 94 95 func TestCurrencyUnits(t *testing.T) { 96 tests := []struct { 97 in, out string 98 }{ 99 {"1", "1 H"}, 100 {"1000", "1000 H"}, 101 {"100000000000", "100000000000 H"}, 102 {"1000000000000", "1 pS"}, 103 {"1234560000000", "1.235 pS"}, 104 {"12345600000000", "12.35 pS"}, 105 {"123456000000000", "123.5 pS"}, 106 {"1000000000000000", "1 nS"}, 107 {"1000000000000000000", "1 uS"}, 108 {"1000000000000000000000", "1 mS"}, 109 {"1000000000000000000000000", "1 SC"}, 110 {"1000000000000000000000000000", "1 KS"}, 111 {"1000000000000000000000000000000", "1 MS"}, 112 {"1000000000000000000000000000000000", "1 GS"}, 113 {"1000000000000000000000000000000000000", "1 TS"}, 114 {"1234560000000000000000000000000000000", "1.235 TS"}, 115 {"1234560000000000000000000000000000000000", "1235 TS"}, 116 } 117 for _, test := range tests { 118 i, _ := new(big.Int).SetString(test.in, 10) 119 out := currencyUnits(types.NewCurrency(i)) 120 if out != test.out { 121 t.Errorf("currencyUnits(%v): expected %v, got %v", test.in, test.out, out) 122 } 123 } 124 }