anchor.diff:                          {100, mb(3)}, UserConfig),
       range_get_test_case(?TEST_BUCKET, ?KEY_MULTIPLE_BLOCK, MultipleBlock,
                           {0, none}, UserConfig),
  -    pass.
  +    ok.
  +
  +mp_get_cases(UserConfig) ->
  +    TinyContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_TINY,
  +                                   [400], UserConfig),
  +    SmallContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_SMALL,
  +                                    [mb(3)], UserConfig),
  +    LargeContent = multipart_upload(?TEST_BUCKET, ?KEY_MP_LARGE,
  +                                    [mb(10), mb(5), mb(9) + 123, mb(6), mb(400)], % 30MB + 523 B
  +                                    UserConfig),
  +
  +    %% Range GET for single part / single block
  +    [range_get_test_case(?TEST_BUCKET, ?KEY_MP_TINY, TinyContent,
  +                         Range, UserConfig)
  +     || Range <- [{10, 20},
  +                  {0, none}, {none, 10},
  +                  {0, 0}, {0, 99}, {0, 1000000}]],
  +
  +    %% Range GET for single part / multiple blocks
  +    [range_get_test_case(?TEST_BUCKET, ?KEY_MP_SMALL, SmallContent,
  +                         {Start, End}, UserConfig)
  +     || Start <- [100, mb(1)+100],
  +        End   <- [mb(1)+100, mb(3)-1, mb(4)]],
  +
  +    %% Range GET for multiple parts / multiple blocks
  +    [range_get_test_case(?TEST_BUCKET, ?KEY_MP_LARGE, LargeContent,
  +                         {Start, End}, UserConfig)
  +     || Start <- [mb(1), mb(16)],
  +        End   <- [mb(16), mb(30), mb(30) + 500, mb(1000)]],
  +    ok.
   
   mb(MegaBytes) ->
       MegaBytes * 1024 * 1024.
  
positive.code:     ?assertMatch([{buckets, [[{name, ?TEST_BUCKET}, _]]}],
                   erlcloud_s3:list_buckets(UserConfig)),
  
      %% setup objects
      SingleBlock = crypto:rand_bytes(400),
      erlcloud_s3:put_object(?TEST_BUCKET, ?KEY_SINGLE_BLOCK, SingleBlock, UserConfig),
  
negative.code: -export([confirm/0]).
  -include_lib("eunit/include/eunit.hrl").
  
  %% keys for non-multipart objects
  -define(TEST_BUCKET,        "riak_test_bucket").
  -define(KEY_SINGLE_BLOCK,   "riak_test_key1").
  -define(KEY_MULTIPLE_BLOCK, "riak_test_key2").
  
  %% keys for multipart uploaded objects
  -define(KEY_MP_TINY,        "riak_test_mp_tiny").  % single part, single block
  -define(KEY_MP_SMALL,       "riak_test_mp_small"). % single part, multiple blocks
  -define(KEY_MP_LARGE,       "riak_test_mp_large"). % multiple parts
  
  
  confirm() ->
      {RiakNodes, _CSNodes, _Stanchion} = rtcs:setup(4),
  