internal static int GetNextToken(string source, int position, out Token token, Token prevToken = null) { char symbol = source[position]; token = null; if (DoubleToken.IsStartSymbol(symbol)) { token = new DoubleToken().FromString(source, ref position); return position; } if (BracketToken.IsStartSymbol(symbol)) { token = BracketToken.GetBracket(symbol, prevToken); return position + 1; } if (OperationToken.TryGetOperation(symbol, prevToken, out token)) { return position + 1; } if (FunctionToken.IsStartSymbol(symbol)) { token = new FunctionToken().FromString(source, ref position); return position; } throw new ArgumentOutOfRangeException("symbol", symbol, "Unexpected symbol"); }
public void TestMethod_NewDoubleToken_IntString() { string intString = "123"; int position = 0; var token = new DoubleToken().FromString(intString, ref position) as DoubleToken; Assert.AreEqual(123D, token.Value); }
public void TestMethod_NewDoubleToken_DoubleStringGetFromMiddleString() { string doubleString = "123.45.6"; int position = 4; var token = new DoubleToken().FromString(doubleString, ref position) as DoubleToken; Assert.AreEqual(45.6, token.Value); }