package org.overture.vdm2jml.tests; import java.lang.reflect.Method; import java.util.Arrays; import org.junit.Assert; import org.junit.Test; import org.overture.codegen.vdm2jml.predgen.info.AbstractSetSeqInfo; import org.overture.codegen.vdm2jml.predgen.info.MapInfo; import org.overture.codegen.vdm2jml.predgen.info.SeqInfo; import org.overture.codegen.vdm2jml.predgen.info.SetInfo; import org.overture.codegen.vdm2jml.predgen.info.TupleInfo; import org.overture.codegen.vdm2jml.runtime.V2J; public class V2JCallTests { @Test public void checkIsInjMap() { assertMethod(MapInfo.IS_INJECTIVE_MAP_METHOD, Object.class); } @Test public void checkIsMap() { assertMethod(MapInfo.IS_MAP_METHOD, Object.class); } @Test public void checkGetDom() { assertMethod(MapInfo.GET_DOM_METHOD, Object.class, int.class); } @Test public void checkGetRng() { assertMethod(MapInfo.GET_RNG_METHOD, Object.class, int.class); } @Test public void checkIsSet() { assertMethod(SetInfo.IS_SET_METHOD, Object.class); } @Test public void checkIsTup() { assertMethod(TupleInfo.IS_TUP_METHOD_NAME, Object.class, int.class); } @Test public void checkTupField() { assertMethod(TupleInfo.GET_FIELD_METHOD_NAME, Object.class, int.class); } @Test public void checkGetSeqElement() { assertMethod(AbstractSetSeqInfo.GET_METHOD, Object.class, int.class); } @Test public void checkSeqSize() { assertMethod(AbstractSetSeqInfo.SIZE__METHOD, Object.class); } @Test public void checkIsSeq() { assertMethod(SeqInfo.IS_SEQ_METHOD, Object.class); } @Test public void checkIsSeq1() { assertMethod(SeqInfo.IS_SEQ1_METHOD, Object.class); } public void assertMethod(String methodName, Class<?>... paramTypes) { Method method = null; try { method = V2J.class.getMethod(methodName, paramTypes); } catch (NoSuchMethodException | SecurityException e) { // Do nothing } Assert.assertNotNull("Could not find method '" + methodName + "' in V2J with arguments " + Arrays.toString(paramTypes), method); } }