aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-12-15 16:46:12 +0200
committerLoïc Hoguin <[email protected]>2014-12-15 16:46:12 +0200
commitf83befd47d74b739560b2595ea920fa88abff62f (patch)
tree9c74875a526435f756af0b76ddb316092da50f7f
parentf79ac6ed8a572e41c0eed7d728a8fa04445ed719 (diff)
downloadcowlib-f83befd47d74b739560b2595ea920fa88abff62f.tar.gz
cowlib-f83befd47d74b739560b2595ea920fa88abff62f.tar.bz2
cowlib-f83befd47d74b739560b2595ea920fa88abff62f.zip
Add a property for cow_http_hd:parse_accept_charset/1
-rw-r--r--src/cow_http_hd.erl22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/cow_http_hd.erl b/src/cow_http_hd.erl
index abc08a4..b9bfc56 100644
--- a/src/cow_http_hd.erl
+++ b/src/cow_http_hd.erl
@@ -414,6 +414,28 @@ conneg_list_sep(<< $\t, R/bits >>, Acc) -> conneg_list_sep(R, Acc);
conneg_list_sep(<< $,, R/bits >>, Acc) -> conneg_list(R, Acc).
-ifdef(TEST).
+accept_charset() ->
+ ?LET({C, W},
+ {token(), weight()},
+ {C, W, iolist_to_binary([C, case W of
+ undefined -> [];
+ _ -> [<<";q=">>, qvalue_to_iodata(W)]
+ end])}
+ ).
+
+prop_parse_accept_charset() ->
+ ?FORALL(L,
+ non_empty(list(accept_charset())),
+ begin
+ << _, AcceptCharset/binary >> = iolist_to_binary([[$,, A] || {_, _, A} <- L]),
+ ResL = parse_accept_charset(AcceptCharset),
+ CheckedL = [begin
+ ResC =:= ?INLINE_LOWERCASE_BC(C)
+ andalso (ResW =:= W orelse (W =:= undefined andalso ResW =:= 1000))
+ end || {{C, W, _}, {ResC, ResW}} <- lists:zip(L, ResL)],
+ [true] =:= lists:usort(CheckedL)
+ end).
+
parse_accept_charset_test_() ->
Tests = [
{<<"iso-8859-5, unicode-1-1;q=0.8">>, [