blob: 1e6a977e308f76549c2d5b986112f95323469aec [file] [log] [blame]
/* filesize-test.c --- tests for svn_cl__format_file_size
*
* ====================================================================
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
* ====================================================================
*/
#include "../../svn/filesize.c"
#include "../svn_test.h"
typedef struct test_data_t
{
svn_filesize_t size;
const char* result;
} test_data_t;
static svn_error_t *
test_base2_file_size(apr_pool_t *pool)
{
static const test_data_t data[] =
{
{APR_INT64_C( 1), "1 B"},
{APR_INT64_C( 9), "9 B"},
{APR_INT64_C( 13), "13 B"},
{APR_INT64_C( 999), "999 B"},
{APR_INT64_C( 1000), "1.0 KiB"},
{APR_INT64_C( 1024), "1.0 KiB"},
{APR_INT64_C( 3000), "2.9 KiB"},
{APR_INT64_C( 1000000), "977 KiB"},
{APR_INT64_C( 1048576), "1.0 MiB"},
{APR_INT64_C( 1000000000), "954 MiB"},
{APR_INT64_C( 1000000000000), "931 GiB"},
{APR_INT64_C( 1000000000000000), "909 TiB"},
{APR_INT64_C(1000000000000000000), "888 EiB"},
{APR_INT64_C(9223372036854775807), "8.0 PiB"},
};
static const apr_size_t data_size = sizeof(data) / sizeof(data[0]);
apr_size_t index;
for (index = 0; index < data_size; ++index)
{
const char *result;
SVN_ERR(svn_cl__format_file_size(&result, data[index].size,
SVN_CL__SIZE_UNIT_BASE_2,
TRUE, pool));
SVN_TEST_STRING_ASSERT(result, data[index].result);
/* fprintf(stderr, "%s\t%" APR_INT64_T_FMT "\n", result, data[index].size); */
}
return SVN_NO_ERROR;
}
static svn_error_t *
test_base10_file_size(apr_pool_t *pool)
{
static const test_data_t data[] =
{
{APR_INT64_C( 1), "1 B"},
{APR_INT64_C( 9), "9 B"},
{APR_INT64_C( 13), "13 B"},
{APR_INT64_C( 999), "999 B"},
{APR_INT64_C( 1000), "1.0 kB"},
{APR_INT64_C( 3000), "3.0 kB"},
{APR_INT64_C( 999499), "999 kB"},
{APR_INT64_C( 999501), "1.0 MB"},
{APR_INT64_C( 1000000), "1.0 MB"},
{APR_INT64_C( 9900000), "9.9 MB"},
{APR_INT64_C( 9950001), "10 MB"},
{APR_INT64_C( 99400001), "99 MB"},
{APR_INT64_C( 99500001), "100 MB"},
{APR_INT64_C( 999444444), "999 MB"},
{APR_INT64_C( 999999999), "1.0 GB"},
{APR_INT64_C( 1000000000), "1.0 GB"},
{APR_INT64_C( 1100000000), "1.1 GB"},
{APR_INT64_C( 1000000000000), "1.0 TB"},
{APR_INT64_C( 1000000000000000), "1.0 EB"},
{APR_INT64_C( 999000000000000000), "999 EB"},
{APR_INT64_C( 999500000000000000), "1.0 PB"},
{APR_INT64_C(1000000000000000000), "1.0 PB"},
{APR_INT64_C(1090000000000000000), "1.1 PB"},
{APR_INT64_C(9223372036854775807), "9.2 PB"},
};
static const apr_size_t data_size = sizeof(data) / sizeof(data[0]);
apr_size_t index;
for (index = 0; index < data_size; ++index)
{
const char *result;
SVN_ERR(svn_cl__format_file_size(&result, data[index].size,
SVN_CL__SIZE_UNIT_BASE_10,
TRUE, pool));
SVN_TEST_STRING_ASSERT(result, data[index].result);
/* fprintf(stderr, "%s\t%" APR_INT64_T_FMT "\n", result, data[index].size); */
}
return SVN_NO_ERROR;
}
/* The test table. */
static int max_threads = 3;
static struct svn_test_descriptor_t test_funcs[] =
{
SVN_TEST_NULL,
SVN_TEST_PASS2(test_base2_file_size,
"base-2 human-friendly file size"),
SVN_TEST_PASS2(test_base10_file_size,
"base-10 human-friendly file size"),
SVN_TEST_NULL
};
SVN_TEST_MAIN