56 lines
1.4 KiB
R
56 lines
1.4 KiB
R
.setUp <- function() {}
|
|
.tearDown <- function() {}
|
|
|
|
test.unicode <- function()
|
|
{
|
|
json <- "\"\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "" )
|
|
|
|
#test ASCII compatible utf8
|
|
json <- "\"\\u0041\\u006c\\u0065\\u0078\\u002B\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "Alex+", paste( "got:", x ) )
|
|
|
|
#test 2 byte utf8 unicode
|
|
json <- "\"\\u018E\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "\u018E" )
|
|
checkTrue( all( charToRaw( x ) == c( 0xc6, 0x8e ) ) )
|
|
checkTrue( length( charToRaw( x ) ) == 2 )
|
|
|
|
#test 2 byte utf8 unicode
|
|
json <- "\"\\u018E\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "\u018E" )
|
|
checkTrue( all( charToRaw( x ) == c( 0xc6, 0x8e ) ) )
|
|
checkTrue( length( charToRaw( x ) ) == 2 )
|
|
|
|
#test 3 byte utf8 unicode
|
|
json <- "\"\\u3020\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "\u3020" )
|
|
checkTrue( all( charToRaw( x ) == c( 0xe3, 0x80, 0xa0 ) ) )
|
|
checkTrue( length( charToRaw( x ) ) == 3 )
|
|
|
|
#test 4 byte utf8 unicode roundtrip
|
|
emo <- "\U1F600"
|
|
checkIdentical(fromJSON(toJSON(emo)), emo)
|
|
|
|
#x = newJSONParser()
|
|
#x$addData( "\"\\u00" )
|
|
#checkTrue( is.null( x$getObject() ) ) #should be incomplete
|
|
|
|
# test surrogate pair
|
|
json <- "\"Anaheim \\ud83d\\ude0eDucks\""
|
|
x <- fromJSON( json )
|
|
checkIdentical( x, "Anaheim \xf0\x9f\x98\x8eDucks" )
|
|
|
|
x <- fromJSON("{\"a\":\"ï\"}")
|
|
checkIdentical( x$a, "ï" )
|
|
x <- toJSON(x$a)
|
|
checkIdentical( x, "\"\\u00ef\"" ) # note that re-encoded will use escaped unicode form
|
|
}
|
|
|
|
|