@@ -33,6 +33,7 @@ class TestLibrary : public TestFixture {
3333 TEST_CASE (function);
3434 TEST_CASE (function_arg);
3535 TEST_CASE (function_arg_any);
36+ TEST_CASE (function_arg_valid);
3637 TEST_CASE (memory);
3738 TEST_CASE (memory2); // define extra "free" allocation functions
3839 TEST_CASE (resource);
@@ -76,8 +77,7 @@ class TestLibrary : public TestFixture {
7677 " <arg nr=\" 2\" ><not-null/></arg>\n "
7778 " <arg nr=\" 3\" ><formatstr/></arg>\n "
7879 " <arg nr=\" 4\" ><strz/></arg>\n "
79- " <arg nr=\" 5\" ><valid>1-</valid></arg>\n "
80- " <arg nr=\" 6\" ><not-bool/></arg>\n "
80+ " <arg nr=\" 5\" ><not-bool/></arg>\n "
8181 " </function>\n "
8282 " </def>" ;
8383 tinyxml2::XMLDocument doc;
@@ -89,8 +89,7 @@ class TestLibrary : public TestFixture {
8989 ASSERT_EQUALS (true , library.argumentChecks [" foo" ][2 ].notnull );
9090 ASSERT_EQUALS (true , library.argumentChecks [" foo" ][3 ].formatstr );
9191 ASSERT_EQUALS (true , library.argumentChecks [" foo" ][4 ].strz );
92- ASSERT_EQUALS (" 1-" , library.argumentChecks [" foo" ][5 ].valid );
93- ASSERT_EQUALS (true , library.argumentChecks [" foo" ][6 ].notbool );
92+ ASSERT_EQUALS (true , library.argumentChecks [" foo" ][5 ].notbool );
9493 }
9594
9695 void function_arg_any () const {
@@ -108,6 +107,45 @@ class TestLibrary : public TestFixture {
108107 ASSERT_EQUALS (true , library.argumentChecks [" foo" ][-1 ].notuninit );
109108 }
110109
110+ void function_arg_valid () const {
111+ const char xmldata[] = " <?xml version=\" 1.0\" ?>\n "
112+ " <def>\n "
113+ " <function name=\" foo\" >\n "
114+ " <arg nr=\" 1\" ><valid>1-</valid></arg>\n "
115+ " <arg nr=\" 2\" ><valid>-7-0</valid></arg>\n "
116+ " <arg nr=\" 3\" ><valid>1-5,8</valid></arg>\n "
117+ " </function>\n "
118+ " </def>" ;
119+ tinyxml2::XMLDocument doc;
120+ doc.Parse (xmldata, sizeof (xmldata));
121+
122+ Library library;
123+ library.load (doc);
124+
125+ // 1-
126+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 1 , -10 ));
127+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 1 , 0 ));
128+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 1 , 1 ));
129+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 1 , 10 ));
130+
131+ // -7-0
132+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 2 , -10 ));
133+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 2 , -7 ));
134+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 2 , -3 ));
135+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 2 , 0 ));
136+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 2 , 1 ));
137+
138+ // 1-5,8
139+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 3 , 0 ));
140+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 3 , 1 ));
141+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 3 , 3 ));
142+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 3 , 5 ));
143+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 3 , 6 ));
144+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 3 , 7 ));
145+ ASSERT_EQUALS (true , library.isargvalid (" foo" , 3 , 8 ));
146+ ASSERT_EQUALS (false , library.isargvalid (" foo" , 3 , 9 ));
147+ }
148+
111149 void memory () const {
112150 const char xmldata[] = " <?xml version=\" 1.0\" ?>\n "
113151 " <def>\n "
0 commit comments