@@ -293,7 +293,7 @@ test_validate_value(void **state)
293293{
294294 struct state * st = (* state );
295295 const struct lys_module * mod ;
296- struct lys_node * a , * b , * c ;
296+ struct lys_node * node ;
297297 const char * yang = "module x {"
298298 " namespace urn:x;"
299299 " prefix x;"
@@ -318,30 +318,75 @@ test_validate_value(void **state)
318318 " enum alfa;"
319319 " }"
320320 " }"
321+ " leaf d {"
322+ " type decimal64 {"
323+ " fraction-digits 1;"
324+ " }"
325+ " }"
326+ " leaf e {"
327+ " type decimal64 {"
328+ " fraction-digits 10;"
329+ " }"
330+ " }"
331+ " leaf f {"
332+ " type decimal64 {"
333+ " fraction-digits 18;"
334+ " }"
335+ " }"
321336 "}" ;
322337
323338 mod = lys_parse_mem (st -> ctx , yang , LYS_IN_YANG );
324339 assert_ptr_not_equal (mod , NULL );
325340
326- a = mod -> data -> next ;
327- assert_int_equal (lyd_validate_value (a , NULL ), EXIT_FAILURE ); /* empty string is too short */
328- assert_int_equal (lyd_validate_value (a , "a" ), EXIT_FAILURE ); /* a is still too short */
329- assert_int_equal (lyd_validate_value (a , "bbb" ), EXIT_FAILURE ); /* does not match the pattern */
330- assert_int_equal (lyd_validate_value (a , "aaaaa" ), EXIT_FAILURE ); /* too long */
331- assert_int_equal (lyd_validate_value (a , "aaa" ), EXIT_SUCCESS ); /* ok */
332-
333- b = a -> next ;
334- assert_int_equal (lyd_validate_value (b , "2" ), EXIT_FAILURE ); /* too high */
335- assert_int_equal (lyd_validate_value (b , "-" ), EXIT_FAILURE ); /* does not match the type (yet) */
336- assert_int_equal (lyd_validate_value (b , "-2" ), EXIT_FAILURE ); /* too low */
337- assert_int_equal (lyd_validate_value (b , "0" ), EXIT_SUCCESS ); /* ok */
338-
339- c = b -> next ;
340- assert_int_equal (lyd_validate_value (c , "a" ), EXIT_FAILURE );
341- assert_int_equal (lyd_validate_value (c , "al" ), EXIT_FAILURE );
342- assert_int_equal (lyd_validate_value (c , "alf" ), EXIT_FAILURE );
343- assert_int_equal (lyd_validate_value (c , "alfa" ), EXIT_SUCCESS ); /* ok */
344- assert_int_equal (lyd_validate_value (c , "alfa " ), EXIT_FAILURE );
341+ /* a */
342+ node = mod -> data -> next ;
343+ assert_int_equal (lyd_validate_value (node , NULL ), EXIT_FAILURE ); /* empty string is too short */
344+ assert_int_equal (lyd_validate_value (node , "a" ), EXIT_FAILURE ); /* a is still too short */
345+ assert_int_equal (lyd_validate_value (node , "bbb" ), EXIT_FAILURE ); /* does not match the pattern */
346+ assert_int_equal (lyd_validate_value (node , "aaaaa" ), EXIT_FAILURE ); /* too long */
347+ assert_int_equal (lyd_validate_value (node , "aaa" ), EXIT_SUCCESS ); /* ok */
348+
349+ /* b */
350+ node = node -> next ;
351+ assert_int_equal (lyd_validate_value (node , "2" ), EXIT_FAILURE ); /* too high */
352+ assert_int_equal (lyd_validate_value (node , "-" ), EXIT_FAILURE ); /* does not match the type (yet) */
353+ assert_int_equal (lyd_validate_value (node , "-2" ), EXIT_FAILURE ); /* too low */
354+ assert_int_equal (lyd_validate_value (node , "0" ), EXIT_SUCCESS ); /* ok */
355+
356+ /* c */
357+ node = node -> next ;
358+ assert_int_equal (lyd_validate_value (node , "a" ), EXIT_FAILURE );
359+ assert_int_equal (lyd_validate_value (node , "al" ), EXIT_FAILURE );
360+ assert_int_equal (lyd_validate_value (node , "alf" ), EXIT_FAILURE );
361+ assert_int_equal (lyd_validate_value (node , "alfa" ), EXIT_SUCCESS ); /* ok */
362+ assert_int_equal (lyd_validate_value (node , "alfa " ), EXIT_FAILURE );
363+
364+ /* d */
365+ node = node -> next ;
366+ assert_int_equal (lyd_validate_value (node , "-922337203685477580.9" ), EXIT_FAILURE );
367+ assert_int_equal (lyd_validate_value (node , "-925337203685477580" ), EXIT_FAILURE );
368+ assert_int_equal (lyd_validate_value (node , "922337203685477580.8" ), EXIT_FAILURE );
369+ assert_int_equal (lyd_validate_value (node , "932337203685477580" ), EXIT_FAILURE );
370+ assert_int_equal (lyd_validate_value (node , "-922337203685477580.8" ), EXIT_SUCCESS ); /* ok */
371+ assert_int_equal (lyd_validate_value (node , "922337203685477580.7" ), EXIT_SUCCESS ); /* ok */
372+
373+ /* e */
374+ node = node -> next ;
375+ assert_int_equal (lyd_validate_value (node , "-922337203.6854775818" ), EXIT_FAILURE );
376+ assert_int_equal (lyd_validate_value (node , "-9223372031" ), EXIT_FAILURE );
377+ assert_int_equal (lyd_validate_value (node , "922337203.6854785807" ), EXIT_FAILURE );
378+ assert_int_equal (lyd_validate_value (node , "1922337203" ), EXIT_FAILURE );
379+ assert_int_equal (lyd_validate_value (node , "-922337203.6854775808" ), EXIT_SUCCESS ); /* ok */
380+ assert_int_equal (lyd_validate_value (node , "922337203.6854775807" ), EXIT_SUCCESS ); /* ok */
381+
382+ /* f */
383+ node = node -> next ;
384+ assert_int_equal (lyd_validate_value (node , "-9.223372036854776808" ), EXIT_FAILURE );
385+ assert_int_equal (lyd_validate_value (node , "-10" ), EXIT_FAILURE );
386+ assert_int_equal (lyd_validate_value (node , "9.223372136854775807" ), EXIT_FAILURE );
387+ assert_int_equal (lyd_validate_value (node , "11" ), EXIT_FAILURE );
388+ assert_int_equal (lyd_validate_value (node , "-9.223372036854775808" ), EXIT_SUCCESS ); /* ok */
389+ assert_int_equal (lyd_validate_value (node , "9.223372036854775807" ), EXIT_SUCCESS ); /* ok */
345390}
346391
347392int main (void )
0 commit comments