@Test public void shouldLoadFunction() { ObjectDOS wrapper = reader.read( "anObject\n" + " {}\n" + " {\n" + " aFunction:Does:This:\n" + " {variable.variable2.}\n" + " {1=FunctionCall.2=SetObject.3=Push.4=PushSymbol.5#34.6.7.}\n" + " }"); ObjectDOS actual = wrapper.getSlot(Symbol.get("anObject")); FunctionDOS function = (FunctionDOS) actual.getFunction(Symbol.get("aFunction:Does:This:")); assertThat(function.getRequiredArguments()[0].value(), is("variable")); assertThat(function.getRequiredArguments()[1].value(), is("variable2")); assertThat(function.getOpCodes()[0], is(OpCode.FunctionCall.class)); assertThat(function.getOpCodes()[1], is(OpCode.SetObject.class)); assertThat(function.getOpCodes()[2], is(OpCode.Push.class)); assertThat(function.getOpCodes()[3], is(OpCode.PushSymbol.class)); assertThat(function.getOpCodes()[4], is(OpCode.CreateValueObject.class)); assertThat(function.getOpCodes()[5], is(OpCode.StartOpCodeList.class)); assertThat(function.getOpCodes()[6], is(OpCode.EndOpCodeList.class)); }
@Test public void shouldLoadEmptyFunction() { ObjectDOS wrapper = reader.read("anObject{}{aFunction:Does:This:{}{}}"); ObjectDOS actual = wrapper.getSlot(Symbol.get("anObject")); FunctionDOS function = (FunctionDOS) actual.getFunction(Symbol.get("aFunction:Does:This:")); assertThat(function.getOpCodes().length, is(0)); assertThat(function.getRequiredArguments().length, is(0)); }
@Test public void shouldLoadFunctionWithMnemonics() { ObjectDOS wrapper = reader.read( "anObject\n" + " {}\n" + " {\n" + " aFunction:Does:This:\n" + " {variable.variable2.}\n" + " {CALL=FunctionCall.OBJ=SetObject.PUSH=Push.SYM=PushSymbol.VAL#34.START.END.}\n" + " }"); ObjectDOS actual = wrapper.getSlot(Symbol.get("anObject")); FunctionDOS function = (FunctionDOS) actual.getFunction(Symbol.get("aFunction:Does:This:")); assertThat(function.getOpCodes()[0], is(OpCode.FunctionCall.class)); assertThat(function.getOpCodes()[1], is(OpCode.SetObject.class)); assertThat(function.getOpCodes()[2], is(OpCode.Push.class)); assertThat(function.getOpCodes()[3], is(OpCode.PushSymbol.class)); assertThat(function.getOpCodes()[4], is(OpCode.CreateValueObject.class)); assertThat(function.getOpCodes()[5], is(OpCode.StartOpCodeList.class)); assertThat(function.getOpCodes()[6], is(OpCode.EndOpCodeList.class)); }