Current section
Files
Jump to
Current section
Files
gen/test/string_builder_test.erl
-module(string_builder_test).
-compile(no_auto_import).
-export([using_compose_test/0, shortform_test/0, end0_test/0, end1_test/0, end2_test/0, end3_test/0, custom_formatter_test/0, int_list_test/0, arg_int_list_test/0]).
using_compose_test() ->
Formatter = string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:compose(
string_builder:string_formatter(
<<"My name "/utf8>>
),
string_builder:string_formatter(
<<"is "/utf8>>
)
),
fun string_builder:arg_string_formatter/1
),
string_builder:string_formatter(
<<" and I have "/utf8>>
)
),
fun string_builder:arg_int_formatter/1
),
string_builder:string_formatter(
<<" "/utf8>>
)
),
fun string_builder:arg_string_formatter/1
),
string_builder:string_formatter(<<", "/utf8>>)
),
fun string_builder:arg_int_formatter/1
),
string_builder:string_formatter(<<" "/utf8>>)
),
fun string_builder:arg_string_formatter/1
),
string_builder:string_formatter(<<" and "/utf8>>)
),
string_builder:int_formatter(1)
),
string_builder:string_formatter(<<" snake!"/utf8>>)
),
gleam@should:equal(
(((((Formatter(fun string_builder:identity/1))(<<"Sally"/utf8>>))(3))(
<<"dogs"/utf8>>
))(2))(<<"cats"/utf8>>),
<<"My name is Sally and I have 3 dogs, 2 cats and 1 snake!"/utf8>>
).
shortform_test() ->
Formatter = string_builder:string(
string_builder:int(
string_builder:string(
string_builder:arg_string(
string_builder:string(
string_builder:arg_int(
string_builder:string(
string_builder:arg_string(
string_builder:string(
string_builder:arg_int(
string_builder:string(
string_builder:arg_string(
string_builder:string(
string_builder:string(
fun string_builder:new/1,
<<"My name "/utf8>>
),
<<"is "/utf8>>
)
),
<<" and I have "/utf8>>
)
),
<<" "/utf8>>
)
),
<<", "/utf8>>
)
),
<<" "/utf8>>
)
),
<<" and "/utf8>>
),
1
),
<<" snake!"/utf8>>
),
gleam@should:equal(
(((((Formatter(fun string_builder:identity/1))(<<"Sally"/utf8>>))(3))(
<<"dogs"/utf8>>
))(2))(<<"cats"/utf8>>),
<<"My name is Sally and I have 3 dogs, 2 cats and 1 snake!"/utf8>>
).
end0_test() ->
Formatter = string_builder:end0(
string_builder:string(
string_builder:string(
fun string_builder:new/1,
<<"My name is "/utf8>>
),
<<"Sally."/utf8>>
)
),
gleam@should:equal(Formatter(), <<"My name is Sally."/utf8>>).
end1_test() ->
Formatter = string_builder:end1(
string_builder:string(
string_builder:arg_string(
string_builder:string(
fun string_builder:new/1,
<<"My name is "/utf8>>
)
),
<<"."/utf8>>
)
),
gleam@should:equal(
Formatter(<<"Sally"/utf8>>),
<<"My name is Sally."/utf8>>
).
end2_test() ->
Formatter = string_builder:end2(
string_builder:string(
string_builder:arg_int(
string_builder:string(
string_builder:arg_string(
string_builder:string(
fun string_builder:new/1,
<<"My name is "/utf8>>
)
),
<<" and I'm "/utf8>>
)
),
<<" years old."/utf8>>
)
),
gleam@should:equal(
Formatter(<<"Sally"/utf8>>, 20),
<<"My name is Sally and I'm 20 years old."/utf8>>
).
end3_test() ->
Formatter = string_builder:end3(
string_builder:string(
string_builder:arg_int(
string_builder:string(
string_builder:arg_int(
string_builder:string(
string_builder:arg_string(fun string_builder:new/1),
<<" has "/utf8>>
)
),
<<" dogs and "/utf8>>
)
),
<<" cats."/utf8>>
)
),
gleam@should:equal(
Formatter(<<"Sam"/utf8>>, 2, 3),
<<"Sam has 2 dogs and 3 cats."/utf8>>
).
state_to_string(State) ->
case State of
pending ->
<<"pending"/utf8>>;
done ->
<<"done"/utf8>>
end.
custom_formatter_test() ->
CustomStateFormatter = fun(Callback) ->
fun(Input) -> Callback(state_to_string(Input)) end
end,
Formatter = string_builder:end1(
string_builder:string(
string_builder:compose(
string_builder:string(
fun string_builder:new/1,
<<"The current state is "/utf8>>
),
CustomStateFormatter
),
<<"!"/utf8>>
)
),
gleam@should:equal(Formatter(done), <<"The current state is done!"/utf8>>).
int_list_test() ->
Formatter = string_builder:end0(
string_builder:int_list(
string_builder:string(
fun string_builder:new/1,
<<"The winners are "/utf8>>
),
[1, 2, 3]
)
),
gleam@should:equal(Formatter(), <<"The winners are 1, 2, 3"/utf8>>).
arg_int_list_test() ->
Formatter = string_builder:end1(
string_builder:arg_int_list(
string_builder:string(
fun string_builder:new/1,
<<"The winners are "/utf8>>
)
)
),
gleam@should:equal(Formatter([1, 2, 3]), <<"The winners are 1, 2, 3"/utf8>>).