Research Article

Behaviour Preservation across Code Versions in Erlang

Algorithm 9

EUnit tests.
(1) -module(orddict_tests).
(2) -compile(export_all).
(3)
(4) -include_lib("eunit/include/eunit.hrl").
(5)
(6) from_list_old_test() ->
(7)  from_list_test_common(orddict_old).
(8)
(9) from_list_new_ok_test() ->
(10)  from_list_test_common(orddict_new_ok).
(11)
(12) from_list_new_wrong_test() ->
(13)  from_list_test_common(orddict_new_wrong).
(14)
(15) from_list_test_common(Mod) ->
(16)  ?assertEqual(
(17)   [,, , , , ],
(18)    Mod:from_list([,, , , , ])),
(19)  ?assertEqual(
(20)   [,, , ],
(21)    Mod:from_list([,, , , , ])),
(22)  ?assertError(
(23)   function_clause,
(24)   Mod:from_list([, , , , ])).
(25)
(26) from_list_old_test_vs_new_wrong_test() ->
(27)  from_list_vs(orddict_old, orddict_new_wrong).
(28)
(29) from_list_old_test_vs_new_ok_test() ->
(30)  from_list_vs(orddict_old, orddict_new_ok).
(31)
(32) from_list_vs(Mod1, Mod2) ->
(33)  Case1 =
(34)    [,, , , , ],
(35)  Case2 =
(36)    [,, , , , ],
(37)  Case3 =
(38)   [1,, , , ],
(39)  ?assertEqual(
(40)   Mod1:from_list(Case1),
(41)   Mod2:from_list(Case1)),
(42)  ?assertEqual(
(43)   Mod1:from_list(Case2),
(44)   Mod2:from_list(Case2)),
(45)  ?assertEqual(
(46)   Mod1:from_list(Case3),
(47)   Mod2:from_list(Case3)).