@ -56,36 +56,48 @@ func TestToUTF8WithErr(t *testing.T) {
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
// "áéíóú"
// "áéíóú"
res , err = ToUTF8WithErr ( [ ] byte { 0xef , 0xbb , 0xbf , 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 ,
res , err = ToUTF8WithErr ( [ ] byte {
0xc3 , 0xba } )
0xef , 0xbb , 0xbf , 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 ,
0xc3 , 0xba ,
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
res , err = ToUTF8WithErr ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res , err = ToUTF8WithErr ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e } )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e ,
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
stringMustStartWith ( t , "Hola," , res )
stringMustStartWith ( t , "Hola," , res )
stringMustEndWith ( t , "AAA." , res )
stringMustEndWith ( t , "AAA." , res )
res , err = ToUTF8WithErr ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res , err = ToUTF8WithErr ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0x07 , 0xA4 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e } )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0x07 , 0xA4 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e ,
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
stringMustStartWith ( t , "Hola," , res )
stringMustStartWith ( t , "Hola," , res )
stringMustEndWith ( t , "AAA." , res )
stringMustEndWith ( t , "AAA." , res )
res , err = ToUTF8WithErr ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res , err = ToUTF8WithErr ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0x81 , 0xA4 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e } )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0x81 , 0xA4 , 0x6F , 0x73 , 0x41 , 0x41 , 0x41 , 0x2e ,
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
stringMustStartWith ( t , "Hola," , res )
stringMustStartWith ( t , "Hola," , res )
stringMustEndWith ( t , "AAA." , res )
stringMustEndWith ( t , "AAA." , res )
// Japanese (Shift-JIS)
// Japanese (Shift-JIS)
// 日属秘ぞしちゅ。
// 日属秘ぞしちゅ。
res , err = ToUTF8WithErr ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 ,
res , err = ToUTF8WithErr ( [ ] byte {
0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } )
0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 ,
0xBF , 0x82 , 0xE3 , 0x81 , 0x42 ,
} )
assert . NoError ( t , err )
assert . NoError ( t , err )
assert . Equal ( t , [ ] byte { 0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
assert . Equal ( t , [ ] byte {
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 } ,
0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 ,
} ,
[ ] byte ( res ) )
[ ] byte ( res ) )
res , err = ToUTF8WithErr ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
res , err = ToUTF8WithErr ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
@ -108,10 +120,14 @@ func TestToUTF8WithFallback(t *testing.T) {
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , res )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , res )
// "Hola, así cómo ños"
// "Hola, así cómo ños"
res = ToUTF8WithFallback ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res = ToUTF8WithFallback ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 } )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
assert . Equal ( t , [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xC3 , 0xAD , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 ,
0xC3 , 0xB3 , 0x6D , 0x6F , 0x20 , 0xC3 , 0xB1 , 0x6F , 0x73 } , res )
} )
assert . Equal ( t , [ ] byte {
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xC3 , 0xAD , 0x20 , 0x63 ,
0xC3 , 0xB3 , 0x6D , 0x6F , 0x20 , 0xC3 , 0xB1 , 0x6F , 0x73 ,
} , res )
// "Hola, así cómo "
// "Hola, así cómo "
minmatch := [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xC3 , 0xAD , 0x20 , 0x63 , 0xC3 , 0xB3 , 0x6D , 0x6F , 0x20 }
minmatch := [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xC3 , 0xAD , 0x20 , 0x63 , 0xC3 , 0xB3 , 0x6D , 0x6F , 0x20 }
@ -127,8 +143,10 @@ func TestToUTF8WithFallback(t *testing.T) {
// Japanese (Shift-JIS)
// Japanese (Shift-JIS)
// "日属秘ぞしちゅ。"
// "日属秘ぞしちゅ。"
res = ToUTF8WithFallback ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 , 0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } )
res = ToUTF8WithFallback ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 , 0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } )
assert . Equal ( t , [ ] byte { 0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
assert . Equal ( t , [ ] byte {
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 } , res )
0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 ,
} , res )
res = ToUTF8WithFallback ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
res = ToUTF8WithFallback ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
assert . Equal ( t , [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } , res )
assert . Equal ( t , [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } , res )
@ -148,21 +166,29 @@ func TestToUTF8(t *testing.T) {
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
// BOM + "áéíóú"
// BOM + "áéíóú"
res = ToUTF8 ( string ( [ ] byte { 0xef , 0xbb , 0xbf , 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 ,
res = ToUTF8 ( string ( [ ] byte {
0xc3 , 0xba } ) )
0xef , 0xbb , 0xbf , 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 ,
0xc3 , 0xba ,
} ) )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
assert . Equal ( t , [ ] byte { 0xc3 , 0xa1 , 0xc3 , 0xa9 , 0xc3 , 0xad , 0xc3 , 0xb3 , 0xc3 , 0xba } , [ ] byte ( res ) )
// Latin1
// Latin1
// Hola, así cómo ños
// Hola, así cómo ños
res = ToUTF8 ( string ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res = ToUTF8 ( string ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 } ) )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
assert . Equal ( t , [ ] byte { 0x48 , 0x6f , 0x6c , 0x61 , 0x2c , 0x20 , 0x61 , 0x73 , 0xc3 , 0xad , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0xF1 , 0x6F , 0x73 ,
0xc3 , 0xb3 , 0x6d , 0x6f , 0x20 , 0xc3 , 0xb1 , 0x6f , 0x73 } , [ ] byte ( res ) )
} ) )
assert . Equal ( t , [ ] byte {
0x48 , 0x6f , 0x6c , 0x61 , 0x2c , 0x20 , 0x61 , 0x73 , 0xc3 , 0xad , 0x20 , 0x63 ,
0xc3 , 0xb3 , 0x6d , 0x6f , 0x20 , 0xc3 , 0xb1 , 0x6f , 0x73 ,
} , [ ] byte ( res ) )
// Latin1
// Latin1
// Hola, así cómo \x07ños
// Hola, así cómo \x07ños
res = ToUTF8 ( string ( [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
res = ToUTF8 ( string ( [ ] byte {
0xF3 , 0x6D , 0x6F , 0x20 , 0x07 , 0xA4 , 0x6F , 0x73 } ) )
0x48 , 0x6F , 0x6C , 0x61 , 0x2C , 0x20 , 0x61 , 0x73 , 0xED , 0x20 , 0x63 ,
0xF3 , 0x6D , 0x6F , 0x20 , 0x07 , 0xA4 , 0x6F , 0x73 ,
} ) )
// Hola,
// Hola,
bytesMustStartWith ( t , [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C } , [ ] byte ( res ) )
bytesMustStartWith ( t , [ ] byte { 0x48 , 0x6F , 0x6C , 0x61 , 0x2C } , [ ] byte ( res ) )
@ -173,10 +199,14 @@ func TestToUTF8(t *testing.T) {
// Japanese (Shift-JIS)
// Japanese (Shift-JIS)
// 日属秘ぞしちゅ。
// 日属秘ぞしちゅ。
res = ToUTF8 ( string ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 ,
res = ToUTF8 ( string ( [ ] byte {
0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } ) )
0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 ,
assert . Equal ( t , [ ] byte { 0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
0xBF , 0x82 , 0xE3 , 0x81 , 0x42 ,
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 } ,
} ) )
assert . Equal ( t , [ ] byte {
0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 ,
} ,
[ ] byte ( res ) )
[ ] byte ( res ) )
res = ToUTF8 ( "\x00\x00\x00\x00" )
res = ToUTF8 ( "\x00\x00\x00\x00" )
@ -216,8 +246,10 @@ func TestToUTF8DropErrors(t *testing.T) {
// Japanese (Shift-JIS)
// Japanese (Shift-JIS)
// "日属秘ぞしちゅ。"
// "日属秘ぞしちゅ。"
res = ToUTF8DropErrors ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 , 0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } )
res = ToUTF8DropErrors ( [ ] byte { 0x93 , 0xFA , 0x91 , 0xAE , 0x94 , 0xE9 , 0x82 , 0xBC , 0x82 , 0xB5 , 0x82 , 0xBF , 0x82 , 0xE3 , 0x81 , 0x42 } )
assert . Equal ( t , [ ] byte { 0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
assert . Equal ( t , [ ] byte {
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 } , res )
0xE6 , 0x97 , 0xA5 , 0xE5 , 0xB1 , 0x9E , 0xE7 , 0xA7 , 0x98 , 0xE3 ,
0x81 , 0x9E , 0xE3 , 0x81 , 0x97 , 0xE3 , 0x81 , 0xA1 , 0xE3 , 0x82 , 0x85 , 0xE3 , 0x80 , 0x82 ,
} , res )
res = ToUTF8DropErrors ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
res = ToUTF8DropErrors ( [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } )
assert . Equal ( t , [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } , res )
assert . Equal ( t , [ ] byte { 0x00 , 0x00 , 0x00 , 0x00 } , res )