Skip to content

Commit

Permalink
Make tests easier to handle fix JuliaLang#11203
Browse files Browse the repository at this point in the history
  • Loading branch information
ScottPJones committed May 14, 2015
1 parent 6a41da2 commit 5bb8828
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 9 deletions.
4 changes: 2 additions & 2 deletions base/utf16.jl
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ is_valid_utf16(str::UTF16String) = isvalid(UTF16String, str.data)
is_valid_utf16(data::AbstractArray{UInt16}) = isvalid(UTF16String, data)

function convert(::Type{UTF16String}, data::AbstractVector{UInt16})
!is_valid_utf16(data) && throw(ArgumentError("invalid UTF16 data"))
!isvalid(UTF16String, data) && throw(ArgumentError("invalid UTF16 data"))
len = length(data)
d = Array(UInt16, len + 1)
d[end] = 0 # NULL terminate
Expand Down Expand Up @@ -146,7 +146,7 @@ function convert(T::Type{UTF16String}, bytes::AbstractArray{UInt8})
copy!(d,1, data,1, length(data)) # assume native byte order
end
d[end] = 0 # NULL terminate
!is_valid_utf16(d) && throw(ArgumentError("invalid UTF16 data"))
!isvalid(UTF16String, d) && throw(ArgumentError("invalid UTF16 data"))
UTF16String(d)
end

Expand Down
16 changes: 9 additions & 7 deletions test/strings.jl
Original file line number Diff line number Diff line change
Expand Up @@ -1303,6 +1303,8 @@ end
@test isvalid(Char, 0x10ffff) == true
@test isvalid(Char, 0x110000) == false

brokenvalid = true # Set to false if underlying validation code is fixed (# 11203)

@test isvalid(UTF8String, b"\x00") == true
@test isvalid(UTF8String, b"\x7f") == true
@test isvalid(UTF8String, b"\x80") == false
Expand All @@ -1314,19 +1316,19 @@ end
@test isvalid(UTF8String, b"\xc2\x80") == true
@test isvalid(UTF8String, b"\xc2\xc0") == false
@test isvalid(UTF8String, b"\xed\x9f\xbf") == true
@test isvalid(UTF8String, b"\xed\xa0\x80") == true # should be false
@test isvalid(UTF8String, b"\xed\xbf\xbf") == true # should be false
@test isvalid(UTF8String, b"\xed\xa0\x80") == brokenvalid
@test isvalid(UTF8String, b"\xed\xbf\xbf") == brokenvalid
@test isvalid(UTF8String, b"\xee\x80\x80") == true
@test isvalid(UTF8String, b"\xef\xbf\xbf") == true
@test isvalid(UTF8String, b"\xf0\x90\x80\x80") == true
@test isvalid(UTF8String, b"\xf4\x8f\xbf\xbf") == true
@test isvalid(UTF8String, b"\xf4\x90\x80\x80") == true # should be false
@test isvalid(UTF8String, b"\xf5\x80\x80\x80") == true # should be false
@test isvalid(UTF8String, b"\xf4\x90\x80\x80") == brokenvalid
@test isvalid(UTF8String, b"\xf5\x80\x80\x80") == brokenvalid
@test isvalid(UTF8String, b"\ud800\udc00") == true
@test isvalid(UTF8String, b"\udbff\udfff") == true
@test isvalid(UTF8String, b"\ud800\u0100") == true # should be false
@test isvalid(UTF8String, b"\udc00\u0100") == true # should be false
@test isvalid(UTF8String, b"\udc00\ud800") == true # should be false
@test isvalid(UTF8String, b"\ud800\u0100") == brokenvalid
@test isvalid(UTF8String, b"\udc00\u0100") == brokenvalid
@test isvalid(UTF8String, b"\udc00\ud800") == brokenvalid

@test isvalid(UTF16String, UInt16[0x0000]) == true
@test isvalid(UTF16String, UInt16[0xd7ff,0]) == true
Expand Down

0 comments on commit 5bb8828

Please sign in to comment.