package org.jerlang.erts.emulator.op; import static org.junit.Assert.assertEquals; import org.jerlang.FunctionSignature; import org.jerlang.erts.Erlang; import org.jerlang.exception.ThrowException; import org.jerlang.type.Atom; import org.jerlang.type.Boolean; import org.jerlang.type.Fun; import org.jerlang.type.Integer; import org.jerlang.type.List; import org.jerlang.type.Map; import org.jerlang.type.Term; import org.junit.Test; public class IsFunctionTest extends AbstractOpTest { private FunctionSignature fs1 = new FunctionSignature("m", "f", 1); private List params1 = List.of(new Fun(null, null)); private List params2 = List.of(new Map()); private List params3 = List.of(new Fun(fs1, null), Integer.of(1)); private List params4 = List.of(new Fun(fs1, null), Integer.of(2)); private List params5 = List.of(new Map(), Integer.of(1)); public IsFunctionTest() { super("is_fun.beam"); } @Test public void test1() throws ThrowException { Term result1 = Erlang.apply(Atom.of("is_fun"), Atom.of("is_fun1"), params1); assertEquals(Boolean.am_true, result1); Term result2 = Erlang.apply(Atom.of("is_fun"), Atom.of("is_fun1"), params2); assertEquals(Boolean.am_false, result2); } @Test public void test2() throws ThrowException { Term result3 = Erlang.apply(Atom.of("is_fun"), Atom.of("is_fun2"), params3); assertEquals(Boolean.am_true, result3); Term result4 = Erlang.apply(Atom.of("is_fun"), Atom.of("is_fun2"), params4); assertEquals(Boolean.am_false, result4); Term result5 = Erlang.apply(Atom.of("is_fun"), Atom.of("is_fun2"), params5); assertEquals(Boolean.am_false, result5); } }