@@ -50,6 +50,7 @@ groups() ->
5050 data_coercion_to_map_recursive_property ,
5151 data_coercion_atomize_keys_proplist ,
5252 data_coercion_atomize_keys_map ,
53+ data_coercion_to_boolean ,
5354 pget ,
5455 deep_pget ,
5556 encrypt_decrypt ,
@@ -287,6 +288,25 @@ data_coercion_atomize_keys_proplist(_Config) ->
287288 B = rabbit_data_coercion :atomize_keys ([{a , 1 }, {" b" , 2 }, {<<" c" >>, 3 }]),
288289 ? assertEqual (lists :usort (A ), lists :usort (B )).
289290
291+ data_coercion_to_boolean (_Config ) ->
292+ % % For booleans, this is an identity function
293+ ? assertEqual (true , rabbit_data_coercion :to_boolean (true )),
294+ ? assertEqual (false , rabbit_data_coercion :to_boolean (false )),
295+ % % Strings (lists) are converted regardless of their case
296+ ? assertEqual (true , rabbit_data_coercion :to_boolean (" true" )),
297+ ? assertEqual (true , rabbit_data_coercion :to_boolean (" TRUE" )),
298+ ? assertEqual (true , rabbit_data_coercion :to_boolean (" True" )),
299+ ? assertEqual (false , rabbit_data_coercion :to_boolean (" false" )),
300+ ? assertEqual (false , rabbit_data_coercion :to_boolean (" FALSE" )),
301+ ? assertEqual (false , rabbit_data_coercion :to_boolean (" False" )),
302+ % % Binaries are also converted regardless of their case
303+ ? assertEqual (true , rabbit_data_coercion :to_boolean (<<" true" >>)),
304+ ? assertEqual (true , rabbit_data_coercion :to_boolean (<<" TRUE" >>)),
305+ ? assertEqual (true , rabbit_data_coercion :to_boolean (<<" True" >>)),
306+ ? assertEqual (false , rabbit_data_coercion :to_boolean (<<" false" >>)),
307+ ? assertEqual (false , rabbit_data_coercion :to_boolean (<<" FALSE" >>)),
308+ ? assertEqual (false , rabbit_data_coercion :to_boolean (<<" False" >>)).
309+
290310data_coercion_to_list (_Config ) ->
291311 ? assertEqual ([{a , 1 }], rabbit_data_coercion :to_list ([{a , 1 }])),
292312 ? assertEqual ([{a , 1 }], rabbit_data_coercion :to_list (#{a => 1 })).
0 commit comments