forked from krestenkrab/triq
-
Notifications
You must be signed in to change notification settings - Fork 0
/
triq_unicode_tests.erl
78 lines (57 loc) · 2.32 KB
/
triq_unicode_tests.erl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
%% @author Uvarov Michael <arcusfelis@gmail.com>
-module(triq_unicode_tests).
%% ------------------------------------------------------------------
%% Tests
%% ------------------------------------------------------------------
-include_lib("triq/include/triq.hrl").
-include_lib("eunit/include/eunit.hrl").
equals(X, Y) -> X =:= Y.
%% ------------------------------------------------------------------
%% Call test generators
%% ------------------------------------------------------------------
prop_unicode_char() ->
?FORALL(Char, unicode_char(),
begin
% io:format(user, "~p~n", [Char]),
true
end).
prop_unicode_binary() ->
?FORALL(Bin, unicode_binary(),
begin
equals(Bin, unicode:characters_to_binary(
unicode:characters_to_list(Bin)))
end).
%% Check a binary generator with fixed length.
prop_sized_unicode_binary() ->
?FORALL({Len, Bin}, ?LET(Len, byte(), {Len, unicode_binary(Len)}),
equals(Len, length(unicode:characters_to_list(Bin)))).
%% Check, that the `characters_to_list/1' does not fail.
prop_unicode_string() ->
?FORALL(Str, unicode_string(),
equals(Str, unicode:characters_to_list(
unicode:characters_to_binary(Str)))).
prop_unicode_characters() ->
?FORALL(Chars, unicode_characters(),
is_binary(unicode:characters_to_binary(Chars))).
encoding() ->
[unicode, utf8, utf16, {utf16, little}, {utf16, big}, utf32,
{utf32, little}, {utf32, big}].
prop_unicode_external_characters() ->
?FORALL({Encoding, Chars},
oneof([{Encoding, unicode_characters(Encoding)}
|| Encoding <- encoding()]),
begin
List = unicode:characters_to_list(Chars, Encoding),
is_binary(unicode:characters_to_binary(Chars, Encoding))
end).
%% -------------------------------------------------------------------
%% Property Testing
%% -------------------------------------------------------------------
run_property_testing_test_() ->
{timeout, 60, fun run_property_testing_case/0}.
run_property_testing_case() ->
EunitLeader = erlang:group_leader(),
erlang:group_leader(whereis(user), self()),
Res = triq:module(?MODULE),
erlang:group_leader(EunitLeader, self()),
?assertEqual([], Res).