100
102
return SVN_NO_ERROR;
107
test_version_parsing(apr_pool_t *pool)
110
apr_pool_t *iterpool;
112
struct version_pair {
114
svn_boolean_t malformed;
115
svn_version_t version;
117
/* str malformed version */
118
{ "1.8", FALSE, { 1, 8, 0, ""} },
119
{ "1.8-dev", TRUE, { 0, 0, 0, ""} },
120
{ "1.1.0", FALSE, { 1, 1, 0, ""} },
121
{ "1.1.3", FALSE, { 1, 1, 3, ""} },
122
{ "2.10.0", FALSE, { 2, 10, 0, ""} },
123
{ "1.8.0-dev", FALSE, { 1, 8, 0, "dev"} },
124
{ "1.7.0-beta1", FALSE, { 1, 7, 0, "beta1"} },
125
{ "1a.8.0", TRUE, { 0, 0, 0, ""} },
126
{ "1a.8.0", TRUE, { 0, 0, 0, ""} },
127
{ "1.a8.0", TRUE, { 0, 0, 0, ""} },
128
{ "1.8.0a", TRUE, { 0, 0, 0, ""} },
129
{ "1.8.0.1", TRUE, { 0, 0, 0, ""} },
132
iterpool = svn_pool_create(pool);
133
for (i = 0; i < sizeof(versions)/sizeof(versions[0]); ++i)
135
svn_version_t *version;
138
svn_pool_clear(iterpool);
140
err = svn_version__parse_version_string(&version, versions[i].str,
142
if (err && (err->apr_err != SVN_ERR_MALFORMED_VERSION_STRING))
143
return svn_error_create(SVN_ERR_TEST_FAILED, err,
144
"Unexpected error code");
147
if (! versions[i].malformed)
148
return svn_error_create(SVN_ERR_TEST_FAILED, err,
149
"Unexpected parsing error returned");
151
svn_error_clear(err);
155
if (versions[i].malformed)
156
return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
157
"Parsing error expected; none returned");
158
if (! svn_ver_equal(version, &(versions[i].version)))
159
return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
160
"Parsed version of '%s' doesn't match "
161
"expected", versions[i].str);
164
svn_pool_destroy(iterpool);
170
test_version_at_least(apr_pool_t *pool)
174
struct version_pair {
175
svn_version_t version;
179
svn_boolean_t at_least;
181
/* maj min pat version at_least */
182
{ { 1, 3, 3, ""}, 1, 3, 3, TRUE },
183
{ { 1, 3, 3, ""}, 1, 3, 4, FALSE },
184
{ { 1, 3, 3, ""}, 1, 4, 3, FALSE },
185
{ { 1, 3, 3, ""}, 0, 4, 3, TRUE },
186
{ { 1, 3, 3, ""}, 2, 0, 0, FALSE },
187
{ { 1, 3, 3, ""}, 1, 3, 2, TRUE },
188
{ { 1, 3, 3, ""}, 1, 2, 4, TRUE },
189
{ { 1, 3, 3, "dev"}, 1, 3, 2, TRUE },
190
{ { 1, 3, 3, "dev"}, 1, 3, 3, FALSE },
191
{ { 1, 3, 3, ""}, 0, 4, 3, TRUE },
194
for (i = 0; i < sizeof(versions)/sizeof(versions[0]); ++i)
196
svn_boolean_t at_least = svn_version__at_least(&(versions[i].version),
200
if (at_least && (! versions[i].at_least))
201
return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
202
"Expected at-least to be FALSE; got TRUE");
203
if ((! at_least) && versions[i].at_least)
204
return svn_error_create(SVN_ERR_TEST_FAILED, NULL,
205
"Expected at-least to be TRUE; got FALSE");
103
211
/* An array of all test functions */
104
212
struct svn_test_descriptor_t test_funcs[] =
107
215
SVN_TEST_PASS2(test_version_compatibility,
108
216
"svn_ver_compatible"),
217
SVN_TEST_PASS2(test_version_parsing,
218
"svn_version__parse_version_string"),
219
SVN_TEST_PASS2(test_version_at_least,
220
"svn_version__at_least"),