public void PapyrusParser_ParseInstruction() { var parser = new PapyrusAssemblyInstructionParser(); var inst = parser.ParseInstruction("CALLMETHOD OnEndState self ::nonevar 1 asNewState ;@line 8"); Assert.AreEqual(PapyrusOpCodes.Callmethod, inst.GetOpCode()); Assert.AreEqual(2, inst.GetOperandArguments().Count); Assert.AreEqual(3, inst.GetArguments().Count); }
public void PapyrusParser_ParseInstruction_AdditionalSpaces() { var parser = new PapyrusAssemblyInstructionParser(); var inst = parser.ParseInstruction("CALLMETHOD OnEndState self ::nonevar 1 asNewState ;@line 8"); Assert.AreEqual(PapyrusOpCodes.Callmethod, inst.GetOpCode()); Assert.AreEqual(2, inst.GetOperandArguments().Count); Assert.IsTrue(inst.GetOperandArguments().All(j => !j.Value.Contains(" "))); Assert.AreEqual(3, inst.GetArguments().Count); Assert.IsTrue(inst.GetArguments().All(j => !j.Value.Contains(" "))); }
public void PapyrusParser_ParseInstructions_WithComments() { var parser = new PapyrusAssemblyInstructionParser(); var inst = parser.ParseInstructions("CALLMETHOD OnEndState self ::nonevar 1 asNewState ;@line 8" + Environment.NewLine + "CALLMETHOD OnEndState self ::nonevar 1 asNewState ;@line 8"); for (var i = 0; i < 2; i++) { Assert.AreEqual(PapyrusOpCodes.Callmethod, inst[i].GetOpCode()); Assert.AreEqual(2, inst[i].GetOperandArguments().Count); Assert.AreEqual(3, inst[i].GetArguments().Count); } }
public void PapyrusParser_GetAsmValues() { var parser = new PapyrusAssemblyInstructionParser(); var values = parser.GetAsmValues("CALLMETHOD OnEndState self ::nonevar 1 asNewState ;@line 8"); Assert.AreEqual(6, values.Count); values = parser.GetAsmValues("CALLMETHOD OnEndState self ::nonevar 1 \"\" ;@line 8"); Assert.AreEqual(6, values.Count); Assert.AreEqual(string.Empty, values[5].Value); values = parser.GetAsmValues("CALLMETHOD OnEndState self ::nonevar 1 \"hello there! asNewState\" ;@line 8"); Assert.AreEqual(6, values.Count); Assert.AreEqual("hello there! asNewState", values[5].Value); }