anchor.diff:  file_test() ->
       ?debugMsg("===== Testing encode_file + decode_file ====="),
       Bin = crypto:rand_bytes(?TEST_SIZE),
  -    ?debugFmt("=====   vandrs {10,4,8} ~p bytes", [?TEST_SIZE]), 
  +    ?debugFmt(" * vandrs {10,4,8} ~p bytes", [?TEST_SIZE]),
       file:write_file("testbin", Bin),
       leo_jerasure:encode_file("testbin", vandrs, {10,4,8}),
  -    ?debugMsg("=====   Erasure Block 0,2,4,6"),
  +    ?debugMsg(" * Erasure Block 0,2,4,6"),
       file:delete("blocks/testbin.0"),
       file:delete("blocks/testbin.2"),
       file:delete("blocks/testbin.4"),
  
positive.code: parameters_test() ->
      ?debugMsg(" ===== Testing Parameters ====="),
      Bin = crypto:rand_bytes(1024),
      ?debugMsg(" =====   Invalid: vandrs {4,2,7}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), vandrs, {4,2,7}),
  
      ?debugMsg(" =====   Invalid: vandrs {4,2,8} with 3 failures"),
      {ok, BlockList} = leo_jerasure:encode(Bin, byte_size(Bin), vandrs, {4,2,8}),
      {error, _} = leo_jerasure:decode(BlockList,[0,1,2], byte_size(Bin), vandrs, {4,2,8}),
  
      ?debugMsg(" =====   Invalid: cauchyrs {10,4,3}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), cauchyrs, {10,4,3}),
  
      ?debugMsg(" =====   Invalid: cauchyrs {4,2,3} with 3 failures"),
      {ok, BlockList2} = leo_jerasure:encode(Bin, byte_size(Bin), cauchyrs, {4,2,3}),
      {error, _} = leo_jerasure:decode(BlockList2,[0,1,2], byte_size(Bin), cauchyrs, {4,2,3}),
  
      ?debugMsg(" =====   Invalid: liberation {4,2,6}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), liberation, {4,2,6}),
  
      ?debugMsg("=====   Invalid: liberation {4,2,3}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), liberation, {4,2,3}),
  
      ?debugMsg("=====   Invalid: liberation {4,2,5} with 3 failures"),
      {ok, BlockList3} = leo_jerasure:encode(Bin, byte_size(Bin), liberation, {4,2,5}),
      {error, _} = leo_jerasure:decode(BlockList3,[0,1,2], byte_size(Bin), liberation, {4,2,5}),
  
      ?debugMsg("=====   Invalid: Unknown {4,2,3}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), unkown, {4,2,3}),
  
      ?debugMsg("=====   Invalid: liberation {troll}"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), liberation, {troll}),
  
      ?debugMsg("=====   Invalid: {4,2,5}, liberation"),
      {error, _} = leo_jerasure:encode(Bin, byte_size(Bin), {4,2,5}, liberation).
  
  suite_test_() ->
  
negative.code: bench_encode(Coding, CodingParams) ->
      {ok, Time} = leo_jerasure:benchmark_encode(100, 100, Coding, CodingParams),
      Rate = 100 / Time * 1000 * 1000,
      ?debugFmt(" * ~p, ~p", [Coding, CodingParams]),
      ?debugFmt("   >> Encoding Rate: ~p MB/s", [Rate]),
      ok.
  
  -endif.
  