/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

package org.apache.sysml.test.integration.functions.misc;

import org.junit.Test;

import org.apache.sysml.api.DMLException;
import org.apache.sysml.test.integration.AutomatedTestBase;
import org.apache.sysml.test.integration.TestConfiguration;

/**
 *   
 */
public class InvalidFunctionAssignmentTest extends AutomatedTestBase
{	
	private final static String TEST_DIR = "functions/misc/";
	private final static String TEST_NAME1 = "InvalidFunctionAssignmentTest1";
	private final static String TEST_NAME2 = "InvalidFunctionAssignmentTest2";
	private final static String TEST_NAME3 = "InvalidFunctionAssignmentTest3";
	private final static String TEST_NAME4 = "InvalidFunctionAssignmentTest4";
	private final static String TEST_CLASS_DIR = TEST_DIR + InvalidFunctionAssignmentTest.class.getSimpleName() + "/";
    
	@Override
	public void setUp() {
		addTestConfiguration(TEST_NAME1, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME1, new String[] {}));
		addTestConfiguration(TEST_NAME2, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME2, new String[] {}));
		addTestConfiguration(TEST_NAME3, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME3, new String[] {}));
		addTestConfiguration(TEST_NAME4, new TestConfiguration(TEST_CLASS_DIR, TEST_NAME4, new String[] {}));
	}
	
	@Test
	public void testValidFunctionAssignmentInlined() { 
		runTest( TEST_NAME1, false ); 
	}
	
	@Test
    public void testInvalidFunctionAssignmentInlined() { 
        runTest( TEST_NAME2, true ); 
    }
	
	@Test
	public void testValidFunctionAssignment() { 
		runTest( TEST_NAME3, false ); 
	}
	
	@Test
    public void testInvalidFunctionAssignment() { 
        runTest( TEST_NAME4, true ); 
    }
	
	/**
	 * 
	 * @param testName
	 */
	private void runTest( String testName, boolean exceptionExpected ) 
	{
		TestConfiguration config = getTestConfiguration(testName);
		loadTestConfiguration(config);
		
		String HOME = SCRIPT_DIR + TEST_DIR;
		fullDMLScriptName = HOME + testName + ".dml";
		programArgs = new String[]{};
		
		//run tests
        runTest(true, exceptionExpected, DMLException.class, -1);
	}
}

@@ -1054,22 +1054,8 @@
 n;%0A%0A
-/**%0A *   %0A */%0A
 publ
@@ -1120,17 +1120,16 @@
 stBase%0A%7B
-%09
 %0A%09privat
@@ -1600,20 +1600,17 @@
  + %22/%22;%0A
-    
+%09
 %0A%09@Overr
@@ -2111,25 +2111,24 @@
 tInlined() %7B
- 
 %0A%09%09runTest( 
@@ -2139,33 +2139,32 @@
 _NAME1, false );
- 
 %0A%09%7D%0A%09%0A%09@Test%0A   
@@ -2152,36 +2152,33 @@
  );%0A%09%7D%0A%09%0A%09@Test%0A
-    
+%09
 public void test
@@ -2209,34 +2209,91 @@
 tInlined() %7B
- %0A        
+%0A%09%09//MB: we now support UDFs in expressions and hence it's valid%0A%09%09
 runTest( TES
@@ -2301,29 +2301,26 @@
 _NAME2, 
-true ); %0A    
+false );%0A%09
 %7D%0A%09%0A%09@Te
@@ -2366,17 +2366,16 @@
 ment() %7B
- 
 %0A%09%09runTe
@@ -2398,17 +2398,16 @@
 false );
- 
 %0A%09%7D%0A%09%0A%09@
@@ -2411,20 +2411,17 @@
 %0A%09@Test%0A
-    
+%09
 public v
@@ -2461,90 +2461,109 @@
 () %7B
- %0A        runTest( TEST_NAME4, true ); %0A    %7D%0A%09%0A%09/**%0A%09 * %0A%09 * @param testName%0A%09 */
+%0A%09%09//MB: we now support UDFs in expressions and hence it's valid%0A%09%09runTest( TEST_NAME4, false );%0A%09%7D%0A%09
 %0A%09pr
@@ -2627,18 +2627,16 @@
 ected ) 
-%0A%09
 %7B%0A%09%09Test
@@ -2723,19 +2723,16 @@
 onfig);%0A
-%09%09%0A
 %09%09String
@@ -2848,31 +2848,8 @@
 ;%0A%09%09
-%0A%09%09//run tests%0A        
 runT

Update function call tests wrt UDF support in expressions