// Copyright 2015 PingCAP, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // See the License for the specific language governing permissions and // limitations under the License. package stringutil import ( "testing" . "github.com/pingcap/check" "github.com/pingcap/tidb/util/testleak" ) func TestT(t *testing.T) { CustomVerboseFlag = true TestingT(t) } var _ = Suite(&testStringUtilSuite{}) type testStringUtilSuite struct { } func (s *testStringUtilSuite) TestReverse(c *C) { defer testleak.AfterTest(c)() table := []struct { str string expect string }{ {"zxcf", "fcxz"}, {"abc", "cba"}, {"Hello, 世界", "界世 ,olleH"}, {"", ""}, } for _, t := range table { x := Reverse(t.str) c.Assert(x, Equals, t.expect) } } func (s *testStringUtilSuite) TestUnquote(c *C) { defer testleak.AfterTest(c)() table := []struct { str string expect string ok bool }{ {``, ``, false}, {`'`, ``, false}, {`'abc"`, ``, false}, {`abcdea`, ``, false}, {`'abc'def'`, ``, false}, {`"abc\"`, ``, false}, {`"abcdef"`, `abcdef`, true}, {`"abc'def"`, `abc'def`, true}, {`"\a汉字测试"`, `a汉字测试`, true}, {`"☺"`, "☺", true}, {`"\xFF"`, "xFF", true}, {`"\U00010111"`, "U00010111", true}, {`"\U0001011111"`, "U0001011111", true}, {`"\a\b\f\n\r\t\v\\\""`, "a\bf\n\r\tv\\\"", true}, {`"\Z\%\_"`, "\032\\%\\_", true}, {`"abc\0"`, "abc\000", true}, {`"abc\"abc"`, `abc"abc`, true}, {`'abcdef'`, `abcdef`, true}, {`'"'`, "\"", true}, {`'\a\b\f\n\r\t\v\\\''`, "a\bf\n\r\tv\\'", true}, {`' '`, " ", true}, {"'\\a汉字'", "a汉字", true}, {"'\\a\x90'", "a\x90", true}, {`"\aèàø»"`, `aèàø»`, true}, } for _, t := range table { x, err := Unquote(t.str) c.Assert(x, Equals, t.expect) comment := Commentf("source %v", t.str) if t.ok { c.Assert(err, IsNil, comment) } else { c.Assert(err, NotNil, comment) } } }