@ -23,6 +23,16 @@ string_error_test_() ->
string_utf8_test_ ( ) - >
[ gen ( utf8 , Case ) | | Case < - cases ( utf8 ) ] .
string_bad_utf8_key_test_ ( ) - >
Cases = cases ( bad_utf8_key ) ,
{ { J } , { E } } = hd ( Cases ) ,
ExtraProps = [ { < < " abcdeefeadasffasdfa " > > , I } | | I < - lists : seq ( 1 , 10000 ) ] ,
Big = { { ExtraProps ++ J } , { ExtraProps ++ E } } ,
AllCases = [ Big | Cases ] ,
[ gen ( bad_utf8_key , Case ) | | Case < - AllCases ] .
string_escaped_slashes_test_ ( ) - >
[ gen ( escaped_slashes , Case ) | | Case < - cases ( escaped_slashes ) ] .
@ -54,6 +64,12 @@ gen(utf8, {Case, Fixed}) ->
? _ assertThrow ( { error , { _ , invalid_string } } , jiffy : decode ( Case2 ) )
] } ;
gen ( bad_utf8_key , { J , E } ) - >
{ msg ( " Bad UTF-8 key: - ~p " , [ size ( term_to_binary ( J ) ) ] ) , [
? _ assertThrow ( { error , { invalid_object_member_key , _ } } , jiffy : encode ( J ) ) ,
? _ assertEqual ( E , jiffy : decode ( jiffy : encode ( J , [ force_utf8 ] ) ) )
] } ;
gen ( escaped_slashes , { J , E } ) - >
{ msg ( " escaped_slashes - ~s " , [ J ] ) , [
{ " Decode " , ? _ assertEqual ( E , dec ( J ) ) } ,
@ -152,6 +168,14 @@ cases(utf8) ->
{ < < 16#FC , 16#82 , 16#80 , 16#80 , 16#80 , 16#80 > > , < < 16#EF , 16#BF , 16#BD > > }
] ;
cases ( bad_utf8_key ) - >
[
{
{ [ { < < " foo " , 16#80 , " bar " > > , true } ] } ,
{ [ { < < " foo " , 16#EF , 16#BF , 16#BD , " bar " > > , true } ] }
}
] ;
cases ( escaped_slashes ) - >
[
{ < < " \" \\ / \" " > > , < < " / " > > }