MCPcopy Create free account
hub / github.com/cppcheck-opensource/cppcheck / function_arg_valid

Method function_arg_valid

test/testlibrary.cpp:322–467  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

320 }
321
322 void function_arg_valid() const {
323 constexpr char xmldata[] = "<?xml version=\"1.0\"?>\n"
324 "<def>\n"
325 " <function name=\"foo\">\n"
326 " <arg nr=\"1\"><valid>1:</valid></arg>\n"
327 " <arg nr=\"2\"><valid>-7:0</valid></arg>\n"
328 " <arg nr=\"3\"><valid>1:5,8</valid></arg>\n"
329 " <arg nr=\"4\"><valid>-1,5</valid></arg>\n"
330 " <arg nr=\"5\"><valid>:1,5</valid></arg>\n"
331 " <arg nr=\"6\"><valid>1.5:</valid></arg>\n"
332 " <arg nr=\"7\"><valid>-6.7:-5.5,-3.3:-2.7</valid></arg>\n"
333 " <arg nr=\"8\"><valid>0.0:</valid></arg>\n"
334 " <arg nr=\"9\"><valid>:2.0</valid></arg>\n"
335 " <arg nr=\"10\"><valid>0.0</valid></arg>\n"
336 " <arg nr=\"11\"><valid>!0.0</valid></arg>\n"
337 " </function>\n"
338 "</def>";
339
340 Library library;
341 ASSERT(LibraryHelper::loadxmldata(library, xmldata, sizeof(xmldata)));
342
343 const char code[] = "foo(a,b,c,d,e,f,g,h,i,j,k);";
344 SimpleTokenList tokenList(code);
345 tokenList.front()->next()->astOperand1(tokenList.front());
346
347 // 1-
348 ASSERT_EQUALS(false, library.isIntArgValid(tokenList.front(), 1, -10, settingsDefault));
349 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 1, -10.0, settingsDefault));
350 ASSERT_EQUALS(false, library.isIntArgValid(tokenList.front(), 1, 0, settingsDefault));
351 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 1, 0.0, settingsDefault));
352 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 1, 1, settingsDefault));
353 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 1, 1.0, settingsDefault));
354 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 1, 10, settingsDefault));
355 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 1, 10.0, settingsDefault));
356
357 // -7-0
358 ASSERT_EQUALS(false, library.isIntArgValid(tokenList.front(), 2, -10, settingsDefault));
359 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 2, -10.0, settingsDefault));
360 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 2, -7.5, settingsDefault));
361 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 2, -7.1, settingsDefault));
362 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 2, -7, settingsDefault));
363 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 2, -7.0, settingsDefault));
364 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 2, -3, settingsDefault));
365 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 2, -3.0, settingsDefault));
366 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 2, -3.5, settingsDefault));
367 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 2, 0, settingsDefault));
368 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 2, 0.0, settingsDefault));
369 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 2, 0.5, settingsDefault));
370 ASSERT_EQUALS(false, library.isIntArgValid(tokenList.front(), 2, 1, settingsDefault));
371 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 2, 1.0, settingsDefault));
372
373 // 1-5,8
374 ASSERT_EQUALS(false, library.isIntArgValid(tokenList.front(), 3, 0, settingsDefault));
375 ASSERT_EQUALS(false, library.isFloatArgValid(tokenList.front(), 3, 0.0, settingsDefault));
376 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 3, 1, settingsDefault));
377 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 3, 1.0, settingsDefault));
378 ASSERT_EQUALS(true, library.isIntArgValid(tokenList.front(), 3, 3, settingsDefault));
379 ASSERT_EQUALS(true, library.isFloatArgValid(tokenList.front(), 3, 3.0, settingsDefault));

Callers

nothing calls this directly

Calls 5

astOperand1Method · 0.80
nextMethod · 0.80
frontMethod · 0.80
isIntArgValidMethod · 0.80
isFloatArgValidMethod · 0.80

Tested by

no test coverage detected