-module(pr_composite_test). -compile([{parse_transform, lager_transform}]). -record(a, {field1 :: term(), field2 :: term()}). -record(b, {field1 :: term(), field2 :: term()}). -include_lib("eunit/include/eunit.hrl"). nested_record_test() -> A = #a{field1 = x, field2 = y}, B = #b{field1 = A, field2 = {}}, Pr_B = eRum:pr(B, ?MODULE), ?assertEqual({'$lager_record', b, [{field1, {'$lager_record', a, [{field1, x}, {field2, y}]}}, {field2, {}}]}, Pr_B). list_field_test() -> As = [#a{field1 = 1, field2 = a2}, #a{field1 = 2, field2 = a2}], B = #b{field1 = As, field2 = b2}, Pr_B = eRum:pr(B, ?MODULE), ?assertEqual({'$lager_record', b, [{field1, [{'$lager_record', a, [{field1, 1}, {field2, a2}]}, {'$lager_record', a, [{field1, 2}, {field2, a2}]}]}, {field2, b2}]}, Pr_B). list_of_records_test() -> As = [#a{field1 = 1, field2 = a2}, #a{field1 = 2, field2 = a2}], Pr_As = eRum:pr(As, ?MODULE), ?assertEqual([{'$lager_record', a, [{field1, 1}, {field2, a2}]}, {'$lager_record', a, [{field1, 2}, {field2, a2}]}], Pr_As). improper_list_test() -> A = #a{field1 = [1 | 2], field2 = a2}, Pr_A = eRum:pr(A, ?MODULE), ?assertEqual({'$lager_record', a, [{field1, [1 | 2]}, {field2, a2}]}, Pr_A).