/* * revision-test.c -- test the revision functions * * ==================================================================== * 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_types.h" #include "../svn_test.h" static svn_error_t * test_revnum_parse(apr_pool_t *pool) { const char **t; const char *failure_tests[] = { "", "abc", "-456", "2147483648", "4294967295", "4300000000", "00000000001", "21474836470", "999999999999999999999999", NULL }; const char *success_tests[] = { "0", "12345", "12345ABC", "0000000001", "2147483647x", NULL }; /* These tests should succeed. */ for (t=success_tests; *t; ++t) { svn_revnum_t rev = -123; const char *endptr; /* Do one test with a NULL end pointer and then with non-NULL pointer. */ SVN_ERR(svn_revnum_parse(&rev, *t, NULL)); SVN_ERR(svn_revnum_parse(&rev, *t, &endptr)); if (-123 == rev) return svn_error_createf (SVN_ERR_TEST_FAILED, NULL, "svn_revnum_parse('%s') should change the revision for " "a good string", *t); if (endptr == *t) return svn_error_createf (SVN_ERR_TEST_FAILED, NULL, "End pointer for svn_revnum_parse('%s') should not " "point to the start of the string", *t); } /* These tests should fail. */ for (t=failure_tests; *t; ++t) { svn_revnum_t rev = -123; const char *endptr; /* Do one test with a NULL end pointer and then with non-NULL pointer. */ svn_error_t *err = svn_revnum_parse(&rev, *t, NULL); svn_error_clear(err); err = svn_revnum_parse(&rev, *t, &endptr); if (! err) return svn_error_createf (SVN_ERR_TEST_FAILED, NULL, "svn_revnum_parse('%s') succeeded when it should " "have failed", *t); svn_error_clear(err); if (-123 != rev) return svn_error_createf (SVN_ERR_TEST_FAILED, NULL, "svn_revnum_parse('%s') should not change the revision " "for a bad string", *t); if (endptr != *t) return svn_error_createf (SVN_ERR_TEST_FAILED, NULL, "End pointer for svn_revnum_parse('%s') does not " "point to the start of the string", *t); } return SVN_NO_ERROR; } /* The test table. */ static int max_threads = 1; static struct svn_test_descriptor_t test_funcs[] = { SVN_TEST_NULL, SVN_TEST_PASS2(test_revnum_parse, "test svn_revnum_parse"), SVN_TEST_NULL }; SVN_TEST_MAIN