Browse Source

common: IsHex should be able to handle 0X prefixed strings

IsHex should also successfully decode strings prefixed with
0X instead of only 0x strings.

Also add tests generally for IsHex.
pull/1842/head
Emmanuel Odeke 7 years ago
parent
commit
951333ecb0
No known key found for this signature in database GPG Key ID: 1CA47A292F89DD40
2 changed files with 19 additions and 1 deletions
  1. +1
    -1
      common/string.go
  2. +18
    -0
      common/string_test.go

+ 1
- 1
common/string.go View File

@ -29,7 +29,7 @@ func LeftPadString(s string, totalLength int) string {
// IsHex returns true for non-empty hex-string prefixed with "0x"
func IsHex(s string) bool {
if len(s) > 2 && s[:2] == "0x" {
if len(s) > 2 && strings.EqualFold(s[:2], "0x") {
_, err := hex.DecodeString(s[2:])
return err == nil
}


+ 18
- 0
common/string_test.go View File

@ -12,3 +12,21 @@ func TestStringInSlice(t *testing.T) {
assert.True(t, StringInSlice("", []string{""}))
assert.False(t, StringInSlice("", []string{}))
}
func TestIsHex(t *testing.T) {
notHex := []string{
"", " ", "a", "x", "0", "0x", "0X", "0x ", "0X ", "0X a",
"0xf ", "0x f", "0xp", "0x-",
"0xf", "0XBED", "0xF", "0xbed", // Odd lengths
}
for _, v := range notHex {
assert.False(t, IsHex(v), "%q is not hex", v)
}
hex := []string{
"0x00", "0x0a", "0x0F", "0xFFFFFF", "0Xdeadbeef", "0x0BED",
"0X12", "0X0A",
}
for _, v := range hex {
assert.True(t, IsHex(v), "%q is hex", v)
}
}

Loading…
Cancel
Save