@@ -282,4 +282,31 @@ public void additionalFlowsXMLTest() throws IOException {
282282 }
283283 Assert .assertTrue (foundStrSig && foundStrOffsetSig && foundIntSig && foundByteSig );
284284 }
285+
286+ @ Test
287+ public void returnCallTypeTest () throws IOException {
288+ File xmlFile = new File (getInfoflowAndroidRoot (), "testXmlParser/returnCallType.xml" );
289+ XMLSourceSinkParser parser = XMLSourceSinkParser .fromFile (xmlFile );
290+ Set <ISourceSinkDefinition > sinkSet = parser .getSinks ();
291+
292+ final String expectedSig = "<android.content.ContentProvider: android.database.Cursor query(android.net.Uri,java.lang.String[],java.lang.String,java.lang.String[],java.lang.String)>" ;
293+
294+ Assert .assertEquals (0 , parser .getSources ().size ());
295+ Assert .assertEquals (1 , sinkSet .size ());
296+ ISourceSinkDefinition sink = sinkSet .iterator ().next ();
297+ Assert .assertTrue (sink instanceof MethodSourceSinkDefinition );
298+ MethodSourceSinkDefinition methodSink = (MethodSourceSinkDefinition ) sink ;
299+ String methodSig = methodSink .getMethod ().getSignature ();
300+ Assert .assertEquals (expectedSig , methodSig );
301+ Assert .assertEquals (methodSink .getCallType (), MethodSourceSinkDefinition .CallType .Return );
302+ Assert .assertEquals (1 , methodSink .getReturnValues ().size ());
303+ }
304+
305+ @ Test
306+ public void invalidReturnCallTypeTest () throws IOException {
307+ File xmlFile = new File (getInfoflowAndroidRoot (), "testXmlParser/invalidReturnCallType.xml" );
308+ XMLSourceSinkParser parser = XMLSourceSinkParser .fromFile (xmlFile );
309+ Assert .assertEquals (0 , parser .getSinks ().size ());
310+ Assert .assertEquals (0 , parser .getSources ().size ());
311+ }
285312}
0 commit comments