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  }