github.com/MaynardMiner/ethereumprogpow@v1.8.23/rpc/utils_test.go (about) 1 // Copyright 2016 The go-ethereum Authors 2 // This file is part of the go-ethereum library. 3 // 4 // The go-ethereum library is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU Lesser General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // The go-ethereum library is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU Lesser General Public License for more details. 13 // 14 // You should have received a copy of the GNU Lesser General Public License 15 // along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>. 16 17 package rpc 18 19 import ( 20 "strings" 21 "testing" 22 ) 23 24 func TestNewID(t *testing.T) { 25 hexchars := "0123456789ABCDEFabcdef" 26 for i := 0; i < 100; i++ { 27 id := string(NewID()) 28 if !strings.HasPrefix(id, "0x") { 29 t.Fatalf("invalid ID prefix, want '0x...', got %s", id) 30 } 31 32 id = id[2:] 33 if len(id) == 0 || len(id) > 32 { 34 t.Fatalf("invalid ID length, want len(id) > 0 && len(id) <= 32), got %d", len(id)) 35 } 36 37 for i := 0; i < len(id); i++ { 38 if strings.IndexByte(hexchars, id[i]) == -1 { 39 t.Fatalf("unexpected byte, want any valid hex char, got %c", id[i]) 40 } 41 } 42 } 43 }