github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/pingcap/tidb/mysql/enum_test.go (about) 1 // Copyright 2015 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain 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, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package mysql 15 16 import ( 17 . "github.com/insionng/yougam/libraries/pingcap/check" 18 "github.com/insionng/yougam/libraries/pingcap/tidb/util/testleak" 19 ) 20 21 var _ = Suite(&testEnumSuite{}) 22 23 type testEnumSuite struct { 24 } 25 26 func (s *testEnumSuite) TestEnum(c *C) { 27 defer testleak.AfterTest(c)() 28 tbl := []struct { 29 Elems []string 30 Name string 31 Expected int 32 }{ 33 {[]string{"a", "b"}, "a", 1}, 34 {[]string{"a"}, "b", 0}, 35 {[]string{"a"}, "1", 1}, 36 } 37 38 for _, t := range tbl { 39 e, err := ParseEnumName(t.Elems, t.Name) 40 if t.Expected == 0 { 41 c.Assert(err, NotNil) 42 c.Assert(e.ToNumber(), Equals, float64(0)) 43 c.Assert(e.String(), Equals, "") 44 continue 45 } 46 47 c.Assert(err, IsNil) 48 c.Assert(e.String(), Equals, t.Elems[t.Expected-1]) 49 c.Assert(e.ToNumber(), Equals, float64(t.Expected)) 50 } 51 52 tblNumber := []struct { 53 Elems []string 54 Number uint64 55 Expected int 56 }{ 57 {[]string{"a"}, 1, 1}, 58 {[]string{"a"}, 0, 0}, 59 } 60 61 for _, t := range tblNumber { 62 e, err := ParseEnumValue(t.Elems, t.Number) 63 if t.Expected == 0 { 64 c.Assert(err, NotNil) 65 continue 66 } 67 68 c.Assert(err, IsNil) 69 c.Assert(e.ToNumber(), Equals, float64(t.Expected)) 70 } 71 }