github.com/XiaoMi/Gaea@v1.2.5/proxy/router/list_test.go (about) 1 // Copyright 2016 The kingshard Authors. All rights reserved. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"): you may 4 // not use this file except in compliance with the License. You may obtain 5 // a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11 // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12 // License for the specific language governing permissions and limitations 13 // under the License. 14 15 // Copyright 2019 The Gaea Authors. All Rights Reserved. 16 // 17 // Licensed under the Apache License, Version 2.0 (the "License"); 18 // you may not use this file except in compliance with the License. 19 // You may obtain a copy of the License at 20 // 21 // http://www.apache.org/licenses/LICENSE-2.0 22 // 23 // Unless required by applicable law or agreed to in writing, software 24 // distributed under the License is distributed on an "AS IS" BASIS, 25 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 26 // See the License for the specific language governing permissions and 27 // limitations under the License. 28 29 package router 30 31 import ( 32 "testing" 33 34 "github.com/XiaoMi/Gaea/core/errors" 35 ) 36 37 func testCheckList(t *testing.T, l []int, checkList ...int) { 38 if len(l) != len(checkList) { 39 t.Fatal("invalid list len", len(l), len(checkList)) 40 } 41 42 for i := 0; i < len(l); i++ { 43 if l[i] != checkList[i] { 44 t.Fatal("invalid list item", l[i], i) 45 } 46 } 47 } 48 49 func TestParseYearRange(t *testing.T) { 50 dateRange := "2014-2017" 51 years, err := ParseYearRange(dateRange) 52 if err != nil { 53 t.Fatal(err) 54 } 55 testCheckList(t, years, 2014, 2015, 2016, 2017) 56 57 dateRange = "2017-2013" 58 years, err = ParseYearRange(dateRange) 59 if err != nil { 60 t.Fatal(err) 61 } 62 testCheckList(t, years, 2013, 2014, 2015, 2016, 2017) 63 64 dateRange = "20120" 65 years, err = ParseYearRange(dateRange) 66 if err != errors.ErrDateRangeIllegal || years != nil { 67 t.Fatal(err) 68 } 69 70 dateRange = "2o12" 71 years, err = ParseYearRange(dateRange) 72 if err == nil || years != nil { 73 t.Failed() 74 } 75 76 dateRange = "2012" 77 years, err = ParseYearRange(dateRange) 78 if err != nil { 79 t.Fatal(err) 80 } 81 testCheckList(t, years, 2012) 82 } 83 84 func TestParseMonthRange(t *testing.T) { 85 dateRange := "201602-201610" 86 months, err := ParseMonthRange(dateRange) 87 if err != nil { 88 t.Fatal(err) 89 } 90 91 testCheckList(t, months, 92 201602, 93 201603, 94 201604, 95 201605, 96 201606, 97 201607, 98 201608, 99 201609, 100 201610, 101 ) 102 103 dateRange = "201603-201511" 104 months, err = ParseMonthRange(dateRange) 105 if err != nil { 106 t.Fatal(err) 107 } 108 109 testCheckList(t, months, 110 201511, 111 201512, 112 201601, 113 201602, 114 201603, 115 ) 116 117 dateRange = "20120" 118 months, err = ParseMonthRange(dateRange) 119 if err != errors.ErrDateRangeIllegal || months != nil { 120 t.Fatal(err) 121 } 122 123 dateRange = "2012o1" 124 months, err = ParseMonthRange(dateRange) 125 if err == nil || months != nil { 126 t.Failed() 127 } 128 129 dateRange = "201201" 130 months, err = ParseMonthRange(dateRange) 131 if err != nil { 132 t.Fatal(err) 133 } 134 testCheckList(t, months, 201201) 135 } 136 137 func TestParseDayRange(t *testing.T) { 138 dateRange := "20160227-20160304" 139 days, err := ParseDayRange(dateRange) 140 if err != nil { 141 t.Fatal(err) 142 } 143 144 testCheckList(t, days, 145 20160227, 146 20160228, 147 20160229, 148 20160301, 149 20160302, 150 20160303, 151 20160304, 152 ) 153 154 dateRange = "20160304-20160301" 155 days, err = ParseDayRange(dateRange) 156 if err != nil { 157 t.Fatal(err) 158 } 159 160 testCheckList(t, days, 161 20160301, 162 20160302, 163 20160303, 164 20160304, 165 ) 166 167 dateRange = "2016034" 168 days, err = ParseDayRange(dateRange) 169 if err != errors.ErrDateRangeIllegal || days != nil { 170 t.Fatal(err) 171 } 172 173 dateRange = "201603o4" 174 days, err = ParseDayRange(dateRange) 175 if err == nil { 176 t.Failed() 177 } 178 179 dateRange = "20160304" 180 days, err = ParseDayRange(dateRange) 181 if err != nil { 182 t.Fatal(err) 183 } 184 testCheckList(t, days, 20160304) 185 }