github.com/twelsh-aw/go/src@v0.0.0-20230516233729-a56fe86a7c81/html/entity_test.go (about) 1 // Copyright 2010 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package html 6 7 import ( 8 "testing" 9 "unicode/utf8" 10 ) 11 12 func init() { 13 UnescapeString("") // force load of entity maps 14 } 15 16 func TestEntityLength(t *testing.T) { 17 if len(entity) == 0 || len(entity2) == 0 { 18 t.Fatal("maps not loaded") 19 } 20 21 // We verify that the length of UTF-8 encoding of each value is <= 1 + len(key). 22 // The +1 comes from the leading "&". This property implies that the length of 23 // unescaped text is <= the length of escaped text. 24 for k, v := range entity { 25 if 1+len(k) < utf8.RuneLen(v) { 26 t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v)) 27 } 28 if len(k) > longestEntityWithoutSemicolon && k[len(k)-1] != ';' { 29 t.Errorf("entity name %s is %d characters, but longestEntityWithoutSemicolon=%d", k, len(k), longestEntityWithoutSemicolon) 30 } 31 } 32 for k, v := range entity2 { 33 if 1+len(k) < utf8.RuneLen(v[0])+utf8.RuneLen(v[1]) { 34 t.Error("escaped entity &" + k + " is shorter than its UTF-8 encoding " + string(v[0]) + string(v[1])) 35 } 36 } 37 }