/************************************************************/ /* Auxiallary Methods */ /************************************************************/ private void InputProblemDef() { string[] words; if (File.Exists(DATA_FILE_NAME)) { fileIn = File.OpenText(DATA_FILE_NAME); } else { MessageBox.Show(DATA_FILE_NAME + " does not exist", "Abort Execution", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } unitProfitList.Clear(); weightList.Clear(); fileIn.ReadLine(); numOfObjects = Int32.Parse(fileIn.ReadLine()); fileIn.ReadLine(); words = StringMethods.SpaceDelimit(fileIn.ReadLine()).Split(' '); for (int i = 1; i <= numOfObjects; i++) { oWeightList.Add(Int32.Parse(words[i - 1])); } fileIn.ReadLine(); words = StringMethods.SpaceDelimit(fileIn.ReadLine()).Split(' '); for (int i = 1; i <= numOfObjects; i++) { oUnitProfitList.Add(Int32.Parse(words[i - 1])); } fileIn.ReadLine(); capacity = Int32.Parse(fileIn.ReadLine()); EffiencySort(); fileIn.Close(); }
public void DoubleStringTest() { var testString = "gfkytkt"; var result = StringMethods.DoubleString(testString); Assert.AreEqual(result, "gfkytktgfkytkt"); }
public void CutHeadStringTest() { var testString = "kuctykr"; var result = StringMethods.CutHeadString(testString); Assert.AreEqual(result, "ctykr"); }
public void CutTailStringTest() { var testString = "lucuckg"; var result = StringMethods.CutTailString(testString); Assert.AreEqual(result, "lucuc"); }
public void StringMethodsUnitTest() { IPEndPoint iPEndPoint = null; Dictionary <IPEndPoint, string> connectedClients = new Dictionary <IPEndPoint, string>(); StringMethods stringMethods = new StringMethods(); foreach (var iPAdress in Dns.GetHostEntry(Dns.GetHostName()).AddressList) { if (iPAdress.AddressFamily == AddressFamily.InterNetwork) { iPEndPoint = new IPEndPoint(iPAdress, 1901); break; } } string fullName = $"Ilya({iPEndPoint})"; Client client = new Client(fullName, iPEndPoint, null, connectedClients, null, null); IPEndPoint iPEndPointVlad = stringMethods.StringToIPEndPoint("192.168.31.11:3011"); IPEndPoint iPEndPointBill = stringMethods.StringToIPEndPoint("142.234.11.44:4007"); stringMethods.StringToListOfConnectedClients(client, "Vlad(192.168.31.11:3011), Bill(142.234.11.44:4007)"); Assert.AreEqual(true, client.ConnectedClients.Values.Contains("Vlad")); Assert.AreEqual(true, client.ConnectedClients.Keys.Contains(iPEndPointVlad)); Assert.AreEqual(true, client.ConnectedClients.Values.Contains("Bill")); Assert.AreEqual(true, client.ConnectedClients.Keys.Contains(iPEndPointBill)); Assert.AreEqual("Vlad(192.168.31.11:3011), Bill(142.234.11.44:4007)", stringMethods.ListOfConnectedClientsToString(client)); Assert.AreEqual(new KeyValuePair <IPEndPoint, string>(iPEndPointVlad, "Vlad"), stringMethods.StringToClient("Vlad(192.168.31.11:3011)")); Assert.AreEqual(new KeyValuePair <IPEndPoint, string>(iPEndPointBill, "Bill"), stringMethods.StringToClient("Bill(142.234.11.44:4007)")); }
static void Main(String[] args) { /*------- MarvellousConvertor-----------*/ int no; NumberConvertor mc; Console.Write("Enter the Number: "); no = Convert.ToInt32(Console.ReadLine()); mc = new NumberConvertor(no); mc.DisplayBinary(); mc.DisplayOctal(); mc.DisplayHexadecimal(); /*----------- MarvellousString ----------------*/ string str; StringMethods sm = new StringMethods(); Console.WriteLine(); Console.Write("Enter the one Line: "); str = Console.ReadLine(); sm.DisplayLargestWord(str); Console.Write("Enter the word to check palindrome or not: "); str = Console.ReadLine(); if (sm.ChkPalindrome(str)) { Console.WriteLine("Word is palindrome"); } else { Console.WriteLine("Word is not palindrome"); } }
void ShowXPov2MinusX() { InputData(); MinValueFunction.SaveFunc(MinValueFunction.XPov2MinusX, "Data.txt", x, b, h); double[] vs = MinValueFunction.Load("Data.txt", out min); Console.WriteLine(StringMethods.DoubleArrayToString(vs)); Console.WriteLine($"min = {min}"); }
public override void Run() { Console.WriteLine(discription); string str = InputConsole.GetInputText("Введите число: "); str = StringMethods.OnlyNumerics(str); Console.WriteLine(str.Length); ExitTask(); }
public unsafe void ToUpperInvariant(string value, string expected) { using (var buffer = new StringBuffer(value)) { UNICODE_STRING s = buffer.ToUnicodeString(); StringMethods.ToUpperInvariant(ref s); s.ToString().Should().Be(expected); } }
public IHttpActionResult Register(UserRegistration user) { try { if (!ValidateObject(user)) { return(Ok(new APIResult { Success = false, Message = "Invalid User", Data = null })); } var decodedUserName = StringMethods.Decode(user.Username); if (db.Users.Where(x => x.Username.ToLower().Equals(decodedUserName)).FirstOrDefault() != null) { return(Ok(new APIResult { Success = false, Message = "User Already Exists", Data = null })); } db.Users.Add(new User() { Username = StringMethods.Decode(user.Username), FirstName = StringMethods.Decode(user.FirstName), LastName = StringMethods.Decode(user.LastName), Password = Crypto.EncryptString(StringMethods.Decode(user.Password)), Created = DateTime.UtcNow, LastLogin = null }); db.SaveChanges(); return(Ok(new APIResult { Success = true, Message = "Successfully created new user", Data = new UserClient { FirstName = StringMethods.Decode(user.FirstName), LastName = StringMethods.Decode(user.LastName) } })); } catch (Exception ex) { return(Ok(new APIResult { Success = false, Message = "Failed to Create User Account", Data = null })); } }
public void MixStringsTest() { var testString1 = "qwerty"; var testString2 = "12345678"; var result = StringMethods.MixStrings(testString1, testString2); Assert.AreEqual(result, "q1w2e3r4t5y678"); }
public void Reverse_StringThatIsNotEmptyOrNull_TheReturedResultShouldBeCorrect() { var sm = new StringMethods(); var str = "SEDC"; var expStr = "CDES"; var result = sm.Reverse(str); Assert.AreEqual(expStr, result); }
public void Reverse_StringNull_ShouldThrowException() { //arrange var sm = new StringMethods(); string str = null; //act //assert Assert.Catch <Exception>(() => sm.Reverse(str)); }
static void Main(string[] args) { StringMethods stringMethods = new StringMethods(); UserMethods userMethods = new UserMethods(stringMethods); Client client = new Client(stringMethods, userMethods); Chat chat = new Chat(stringMethods, userMethods); chat.P2PChat(client); }
public void ReverseLong_StringNotEmpty_ResultShouldBeAsExpected() { //arrange var sm = new StringMethods(); var str = "SEDC"; var expectedResult = "CDES"; //act var result = sm.ReverseLong(str); //assert Assert.AreEqual(expectedResult, result); }
public IHttpActionResult Login(UserAuthentication user) { try { if (!ValidateObject(user)) { return(Ok(new APIResult { Success = false, Message = "Invalid Login", Data = null })); } var decodedUserName = StringMethods.Decode(user.Username); var existingUser = db.Users.Where(x => x.Username.ToLower().Equals(decodedUserName.ToLower())).FirstOrDefault(); if (existingUser == null || !Crypto.CompareString(StringMethods.Decode(user.Password), existingUser.Password)) { return(Ok(new APIResult { Success = false, Message = "Invalid Login", Data = null })); } existingUser.LastLogin = DateTime.UtcNow; db.SaveChanges(); return(Ok(new APIResult { Success = true, Message = "Login Success", Data = new UserClient { FirstName = existingUser.FirstName, LastName = existingUser.LastName } })); } catch (Exception ex) { return(Ok(new APIResult { Success = false, Message = "Failed to Login", Data = null })); } }
public void Reverse_StringIsNotEmpty_ResultShouldBeAsExpected() { //Arrange var sm = new StringMethods(); var str = "SEDC"; var expStr = "CDES"; //Act var result = sm.Reverse(str); //Assert //Assert.AreEqual(expStr, result); result.Should().Be(expStr); }
private void LoadDebugTab(TabPage debugTab) { if (InvokeRequired) { var d = new LoadDebugTabDelegate(LoadDebugTab); Invoke(d, new object[] { debugTab }); } else { DataTable variableValues = new DataTable(); variableValues.Columns.Add("Name"); variableValues.Columns.Add("Type"); variableValues.Columns.Add("Value"); variableValues.TableName = "VariableValuesDataTable" + DateTime.Now.ToString("MMddyyhhmmss"); DataGridView variablesGridViewHelper = new DataGridView(); variablesGridViewHelper.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; variablesGridViewHelper.Dock = DockStyle.Fill; variablesGridViewHelper.ColumnHeadersHeight = 30; variablesGridViewHelper.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill; variablesGridViewHelper.AllowUserToAddRows = false; variablesGridViewHelper.AllowUserToDeleteRows = false; variablesGridViewHelper.ReadOnly = true; if (debugTab.Controls.Count != 0) { debugTab.Controls.RemoveAt(0); } debugTab.Controls.Add(variablesGridViewHelper); List <ScriptVariable> engineVariables = ((frmScriptEngine)CurrentEngine).EngineInstance.VariableList; foreach (var variable in engineVariables) { DataRow[] foundVariables = variableValues.Select("Name = '" + variable.VariableName + "'"); if (foundVariables.Length == 0) { string type = "null"; if (variable.VariableValue != null) { type = variable.VariableValue.GetType().FullName; } variableValues.Rows.Add(variable.VariableName, type, StringMethods.ConvertObjectToString(variable.VariableValue)); } } variablesGridViewHelper.DataSource = variableValues; uiPaneTabs.SelectedTab = debugTab; } }
public override void RunCommand(object sender) { var engine = (AutomationEngineInstance)sender; int closeAfter = int.Parse(v_AutoCloseAfter.ConvertUserVariableToString(engine)); dynamic variableMessage = v_Message.ConvertUserVariableToString(engine); if (variableMessage == v_Message && variableMessage.StartsWith("{") && variableMessage.EndsWith("}")) { variableMessage = v_Message.ConvertUserVariableToObject(engine); } string type = ""; if (variableMessage != null) { type = variableMessage.GetType().FullName; } if (variableMessage is string) { variableMessage = variableMessage.Replace("\\n", Environment.NewLine); } else { variableMessage = type + Environment.NewLine + StringMethods.ConvertObjectToString(variableMessage); } if (engine.ScriptEngineUI == null) { engine.ReportProgress("Complex Messagebox Supported With UI Only"); MessageBox.Show(variableMessage, "Message Box Command", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } //automatically close messageboxes for server requests if (engine.IsServerExecution && closeAfter <= 0) { closeAfter = 10; } var result = ((frmScriptEngine)engine.ScriptEngineUI).Invoke(new Action(() => { engine.ScriptEngineUI.ShowMessage(variableMessage, "MessageBox", DialogType.OkOnly, closeAfter); } )); }
/// <summary> /// Gets all heroes' abilities /// </summary> /// <returns>List of Heroes' Abilities</returns> public static async Task <ObservableCollection <Ability> > GetAbilityData() { AbilityList = new ObservableCollection <Ability>(); using (HttpClient httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(Constants.HttpTimeoutDuration) }) using (HttpResponseMessage httpResponseMessage = await httpClient.GetAsync(string.Format(Constants.HeroAbilityDataURL, Constants.Language))) { dynamic jsonString = JsonConvert.DeserializeObject(httpResponseMessage.Content.ReadAsStringAsync().Result); foreach (var item in jsonString) { IEnumerable abilityList = (item as JProperty).First.Values(); foreach (var item2 in abilityList) { Ability ability = new Ability(); ability.desc = StringMethods.TrimEnd((item2 as JObject)["desc"].ToString().Replace("\r\n\r\n", "\r\n"), "\r\n"); if (ability.desc.StartsWith(Constants.HeroSpecialBonusString)) { continue; } ability.SkillName = ((item2 as JObject).Parent as JProperty).Name; ability.dname = (item2 as JObject)["dname"].ToString(); ability.affects = Regex.Replace(StringMethods.TrimEnd((item2 as JObject)["affects"].ToString(), @"<br />"), @"(\</?font(.*?)/?\>)", string.Empty); ability.notes = (item2 as JObject)["notes"].ToString(); ability.dmg = (item2 as JObject)["dmg"].ToString(); ability.attrib = (item2 as JObject)["attrib"].ToString(); ability.cmb = Regex.Replace((item2 as JObject)["cmb"].ToString(), "<.*?>", string.Empty).Trim(); ability.lore = (item2 as JObject)["lore"].ToString(); ability.hurl = (item2 as JObject)["hurl"].ToString(); AbilityList.Add(ability); } break; } } return(AbilityList); }
public async override Tasks.Task RunCommand(object sender) { var engine = (IAutomationEngineInstance)sender; int closeAfter = (int)await v_AutoCloseAfter.EvaluateCode(engine); var variableMessage = await v_Message.EvaluateCode(engine); Type varMessageType = null; if (variableMessage != null) { varMessageType = variableMessage.GetType(); } var message = StringMethods.ConvertObjectToString(variableMessage, varMessageType); if (engine.EngineContext.ScriptEngine == null) { engine.ReportProgress("Complex Messagebox Supported With UI Only"); if (closeAfter > 0) { var autoCloseForm = new Form() { Size = new Size(0, 0) }; Tasks.Task.Delay(TimeSpan.FromSeconds(closeAfter)) .ContinueWith((t) => autoCloseForm.Close(), TaskScheduler.FromCurrentSynchronizationContext()); MessageBox.Show(autoCloseForm, message, "Message Box Command", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { MessageBox.Show(message, "Message Box Command", MessageBoxButtons.OK, MessageBoxIcon.Information); } return; } var result = ((Form)engine.EngineContext.ScriptEngine).Invoke(new Action(() => { engine.EngineContext.ScriptEngine.ShowMessage(message, "MessageBox", DialogType.OkOnly, closeAfter); } )); }
public object Login(string username, string password) { var result = DeskShellAPI.Login(new UserAuthentication { Username = StringMethods.Encode(username), Password = StringMethods.Encode(password) }); if (result.Success) { // TODO: Set application settings with user info return((object)result.Data); } else { return(result.Message); } }
public string Register(string username, string password, string firstName, string lastName) { var result = DeskShellAPI.Register(new UserRegistration { Username = StringMethods.Encode(username), Password = StringMethods.Encode(password), FirstName = StringMethods.Encode(firstName), LastName = StringMethods.Encode(lastName) }); if (result.Success) { return(string.Empty); } else { return(result.Message); } }
/// <summary> /// ثبت خطاها /// </summary> /// <param name="ex"></param> /// <param name="form"> فرم جاری</param> public static void LogToTextFile(this Exception ex, string methodName) { StringBuilder sb = new StringBuilder(); sb.AppendLine(" -------------------- " + DateMethods.Hour() + "-----------------------"); sb.AppendLine("Method : "); sb.AppendLine(methodName); sb.AppendLine(); sb.AppendLine("User : "******"LogFiles"); sb.ToString().ToFile(path); }
/************************************************************/ /* Auxiallary Methods */ /************************************************************/ private void InputProblemDef() { string[] words; if (File.Exists(DATA_FILE_NAME)) { fileIn = File.OpenText(DATA_FILE_NAME); } else { MessageBox.Show(DATA_FILE_NAME + " does not exist", "Abort Execution", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); } itemList.Clear(); fileIn.ReadLine(); numOfObjects = Int32.Parse(fileIn.ReadLine()); for (int n = 1; n <= numOfObjects; n++) { itemList.Add(new Item(n, 0, 0, 0)); } fileIn.ReadLine(); words = StringMethods.SpaceDelimit(fileIn.ReadLine()).Split(' '); for (int n = 1; n <= numOfObjects; n++) { itemList[n].Weight = (Int32.Parse(words[n - 1])); } fileIn.ReadLine(); words = StringMethods.SpaceDelimit(fileIn.ReadLine()).Split(' '); for (int n = 1; n <= numOfObjects; n++) { itemList[n].UnitProfit = (Int32.Parse(words[n - 1])); } fileIn.ReadLine(); capacity = Int32.Parse(fileIn.ReadLine()); fileIn.Close(); }
public void TestPascalCase_TheQuickBrownFoxJumpsOverTheLazyDog() { Assert.AreEqual("TheQuickBrownFoxJumpsOverTheLazyDog", StringMethods.PascalCase("the quick brown fox jumps over the lazy dog")); }
/// <summary> /// Lexically analyses and returns the next token in the script. /// </summary> /// <returns>Next token in script.</returns> private Token LexToken() { _currentToken = null; switch (_currentChar) { case "=": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpEqual, "==", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpAssign, "=", _lexerLine, _lexerOffset, _file); break; } break; case "^": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseXOr, "^=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseXOr, "^", _lexerLine, _lexerOffset, _file); break; } break; case "~": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseNot, "~=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseNot, "~", _lexerLine, _lexerOffset, _file); break; } break; case "|": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseOr, "|=", _lexerLine, _lexerOffset, _file); break; case "|": NextCharacter(); _currentToken = new Token(TokenID.OpLogicalOr, "||", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseOr, "|", _lexerLine, _lexerOffset, _file); break; } break; case "&": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseAnd, "&=", _lexerLine, _lexerOffset, _file); break; case "&": NextCharacter(); _currentToken = new Token(TokenID.OpLogicalAnd, "&&", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseAnd, "&", _lexerLine, _lexerOffset, _file); break; } break; case "%": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignModulus, "%=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpModulus, "%", _lexerLine, _lexerOffset, _file); break; } break; case "-": switch (NextCharacter()) { case ">": NextCharacter(); _currentToken = new Token(TokenID.OpMemberResolver, "->", _lexerLine, _lexerOffset, _file); break; case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignSub, "-=", _lexerLine, _lexerOffset, _file); break; case "-": NextCharacter(); _currentToken = new Token(TokenID.OpDecrement, "--", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpSub, "-", _lexerLine, _lexerOffset, _file); break; } break; case "+": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignAdd, "+=", _lexerLine, _lexerOffset, _file); break; case "+": NextCharacter(); _currentToken = new Token(TokenID.OpIncrement, "++", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpAdd, "+", _lexerLine, _lexerOffset, _file); break; } break; case "/": switch (NextCharacter()) { case "*": //Parse through multiple layers of block comments. #region Block Comment Lexing int commentDepth = 1; while (commentDepth > 0) { switch (NextCharacter()) { case "*": if (NextCharacter() == "/") { commentDepth--; NextCharacter(); } break; case "/": if (NextCharacter() == "*") { commentDepth++; NextCharacter(); } break; } } #endregion break; case "/": while (_currentChar != "\n" && !EndOfTokenStream()) { NextCharacter(); } break; case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignDivide, "/=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpDivide, "/", _lexerLine, _lexerOffset, _file); break; } break; case "*": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignMultiply, "*=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpMultiply, "*", _lexerLine, _lexerOffset, _file); break; } break; case "<": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpLessEqual, "<=", _lexerLine, _lexerOffset, _file); break; case "<": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseSHL, "<<=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseSHL, "<<", _lexerLine, _lexerOffset, _file); break; } break; default: _currentToken = new Token(TokenID.OpLess, "<", _lexerLine, _lexerOffset, _file); break; } break; case ">": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpGreaterEqual, ">=", _lexerLine, _lexerOffset, _file); break; case ">": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpAssignBitwiseSHR, ">>=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpBitwiseSHR, ">>", _lexerLine, _lexerOffset, _file); break; } break; default: _currentToken = new Token(TokenID.OpGreater, ">", _lexerLine, _lexerOffset, _file); break; } break; case "!": switch (NextCharacter()) { case "=": NextCharacter(); _currentToken = new Token(TokenID.OpNotEqual, "!=", _lexerLine, _lexerOffset, _file); break; default: _currentToken = new Token(TokenID.OpLogicalNot, "!", _lexerLine, _lexerOffset, _file); break; } break; case "{": NextCharacter(); _currentToken = new Token(TokenID.CharOpenBrace, "{", _lexerLine, _lexerOffset, _file); break; case "}": NextCharacter(); _currentToken = new Token(TokenID.CharCloseBrace, "}", _lexerLine, _lexerOffset, _file); break; case "[": NextCharacter(); _currentToken = new Token(TokenID.CharOpenBracket, "[", _lexerLine, _lexerOffset, _file); break; case "]": NextCharacter(); _currentToken = new Token(TokenID.CharCloseBracket, "]", _lexerLine, _lexerOffset, _file); break; case "(": NextCharacter(); _currentToken = new Token(TokenID.CharOpenParenthesis, "(", _lexerLine, _lexerOffset, _file); break; case ")": NextCharacter(); _currentToken = new Token(TokenID.CharCloseParenthesis, ")", _lexerLine, _lexerOffset, _file); break; case ",": NextCharacter(); _currentToken = new Token(TokenID.CharComma, ",", _lexerLine, _lexerOffset, _file); break; case ":": NextCharacter(); _currentToken = new Token(TokenID.CharColon, ":", _lexerLine, _lexerOffset, _file); break; case ";": NextCharacter(); _currentToken = new Token(TokenID.CharSemiColon, ";", _lexerLine, _lexerOffset, _file); break; case ".": NextCharacter(); _currentToken = new Token(TokenID.CharPeriod, ".", _lexerLine, _lexerOffset, _file); break; case "#": NextCharacter(); _currentToken = new Token(TokenID.CharDirective, "#", _lexerLine, _lexerOffset, _file); break; case " ": case "\t": case "\n": case "\r": // We can safely ignore any whitespace characters. NextCharacter(); break; case "'": case "\"": // String literals #region String Literal Lexing string stringLiteral = ""; string stringStartChar = _currentChar; while (true) { if (NextCharacter() == stringStartChar) { break; } if (EndOfTokenStream() == true || _currentChar == "\n") { Error(ErrorCode.UnfinishedStringLiteral, "Unfinished string literal"); break; } // Check for escape sequence if (_currentChar == "\\") { NextCharacter(); switch (_currentChar) { case "'": case "\"": stringLiteral += stringStartChar; break; case "a": stringLiteral += "\a"; break; case "b": stringLiteral += "\b"; break; case "f": stringLiteral += "\f"; break; case "n": stringLiteral += "\n"; break; case "r": stringLiteral += "\r"; break; case "t": stringLiteral += "\t"; break; case "v": stringLiteral += "\v"; break; case "0": stringLiteral += "\0"; break; case "\\": stringLiteral += "\\"; break; default: Error(ErrorCode.InvalidEscapeSequence, "Found invalid escape sequence '\\" + _currentChar + "' in string literal."); break; } } else { stringLiteral += _currentChar; } } NextCharacter(); _currentToken = new Token(TokenID.TypeString, stringLiteral, _lexerLine, _lexerOffset, _file); #endregion break; default: if ((_currentChar[0] >= 'A' && _currentChar[0] <= 'Z') || (_currentChar[0] >= 'a' && _currentChar[0] <= 'z') || _currentChar[0] == '_') // Check if its a identifier. { #region Identiier Lexing TokenID identType = TokenID.TypeIdentifier; string identLiteral = ""; int index = 0; while (true) { identLiteral += _currentChar; if (_currentChar[0] >= '0' && _currentChar[0] <= '9' && index == 0) { Error(ErrorCode.MalformedIdentifier, "Found malformed identifier."); break; } // Go to next character. NextCharacter(); if (EndOfTokenStream() || StringMethods.IsStringIdentifier(_currentChar) == false) { break; } index++; } // Check if its a keyword or not. switch (identLiteral.ToLower()) { case "state": identType = TokenID.KeywordState; break; case "event": identType = TokenID.KeywordEvent; break; case "default": identType = TokenID.KeywordDefault; break; case "switch": identType = TokenID.KeywordSwitch; break; case "case": identType = TokenID.KeywordCase; break; case "if": identType = TokenID.KeywordIf; break; case "else": identType = TokenID.KeywordElse; break; case "enum": identType = TokenID.KeywordEnum; break; case "const": identType = TokenID.KeywordConst; break; case "ref": identType = TokenID.KeywordRef; break; case "for": identType = TokenID.KeywordFor; break; case "return": identType = TokenID.KeywordReturn; break; case "while": identType = TokenID.KeywordWhile; break; case "do": identType = TokenID.KeywordDo; break; case "new": identType = TokenID.KeywordNew; break; case "delete": identType = TokenID.KeywordDelete; break; case "lock": identType = TokenID.KeywordLock; break; case "atom": identType = TokenID.KeywordAtom; break; case "object": identType = TokenID.KeywordObject; break; case "string": identType = TokenID.KeywordString; break; case "bool": identType = TokenID.KeywordBool; break; case "byte": identType = TokenID.KeywordByte; break; case "int": identType = TokenID.KeywordInt; break; case "short": identType = TokenID.KeywordShort; break; case "float": identType = TokenID.KeywordFloat; break; case "double": identType = TokenID.KeywordDouble; break; case "long": identType = TokenID.KeywordLong; break; case "void": identType = TokenID.KeywordVoid; break; case "thread": identType = TokenID.KeywordThread; break; case "goto": identType = TokenID.KeywordGoto; break; case "break": identType = TokenID.KeywordBreak; break; case "continue": identType = TokenID.KeywordContinue; break; case "true": identType = TokenID.TypeBoolean; break; case "false": identType = TokenID.TypeBoolean; break; case "null": identType = TokenID.TypeNull; identLiteral = "0"; break; case "indexer": identType = TokenID.KeywordIndexer; break; case "gotostate": identType = TokenID.KeywordGotoState; break; case "static": identType = TokenID.KeywordStatic; break; case "breakpoint": identType = TokenID.KeywordBreakpoint; break; case "property": identType = TokenID.KeywordProperty; break; case "private": identType = TokenID.KeywordPrivate; break; case "public": identType = TokenID.KeywordPublic; break; case "protected": identType = TokenID.KeywordProtected; break; case "struct": identType = TokenID.KeywordStruct; break; case "class": identType = TokenID.KeywordClass; break; case "engine": identType = TokenID.KeywordEngine; break; case "editor": identType = TokenID.KeywordEditor; break; case "namespace": identType = TokenID.KeywordNamespace; break; case "console": identType = TokenID.KeywordConsole; break; case "import": identType = TokenID.KeywordImport; break; case "export": identType = TokenID.KeywordExport; break; } _currentToken = new Token(identType, identLiteral, _lexerLine, _lexerOffset, _file); #endregion } else if (StringMethods.IsStringNumeric(_currentChar)) // Check if we are dealing with a number. { #region Numeric Lexing TokenID numberType = TokenID.TypeInteger; string numberLiteral = ""; bool foundRadix = false, isHex = false, foundTypeSpecifier = false; int index = 0; while (true) { numberLiteral += _currentChar; if (_currentChar == "x") { if (index == 1 && numberLiteral[0] == '0' && isHex == false) { isHex = true; } else { Error(ErrorCode.MalformedHex, "Found malformed hexidecimal literal."); break; } } if ((_currentChar[0] >= 'A' && _currentChar[0] <= 'F') || (_currentChar[0] >= 'a' && _currentChar[0] <= 'f')) { if (isHex == false && foundTypeSpecifier == true) { Error(ErrorCode.MalformedHex, "Found malformed floating point literal."); break; } } if (_currentChar == ".") { if (foundRadix == false) { foundRadix = true; numberType = TokenID.TypeFloat; } else { Error(ErrorCode.MalformedFloat, "Found malformed floating point literal."); break; } } if (_currentChar == "-") { if (!(index == 0)) { Error(ErrorCode.MalformedInteger, "Found malformed integer literal."); break; } } if (_currentChar == "f") { foundTypeSpecifier = true; numberType = TokenID.TypeFloat; } if (_currentChar == "d") { foundTypeSpecifier = true; numberType = TokenID.TypeDouble; } if (_currentChar == "l") { if (foundRadix == true) { Error(ErrorCode.MalformedDataTypeSpecifier, "Long type specifier can't be applied to float-point values."); } foundTypeSpecifier = true; numberType = TokenID.TypeLong; } if (_currentChar == "s") { if (foundRadix == true) { Error(ErrorCode.MalformedDataTypeSpecifier, "Short type specifier can't be applied to float-point values."); } foundTypeSpecifier = true; numberType = TokenID.TypeShort; } if (_currentChar == "b") { if (foundRadix == true) { Error(ErrorCode.MalformedDataTypeSpecifier, "Byte type specifier can't be applied to float-point values."); } foundTypeSpecifier = true; numberType = TokenID.TypeByte; } // Go to next character. NextCharacter(); if (EndOfTokenStream() || StringMethods.IsStringNumeric(_currentChar) == false) { break; } // Make sure that the type specifier (as in 0.00f) is on the end. if (foundTypeSpecifier == true) { Error(ErrorCode.MalformedDataTypeSpecifier, "Found malformed data type specifier."); break; } index++; } // If there is a type specifier attached to the end of this number // then remove it. if (foundTypeSpecifier == true) { numberLiteral = numberLiteral.Substring(0, numberLiteral.Length - 1); } // Create the numeric token. _currentToken = new Token(numberType, numberLiteral, _lexerLine, _lexerOffset, _file); #endregion } else { Error(ErrorCode.InvalidCharacter, "Found invalid character '" + _currentChar + "' while analysing tokens."); NextCharacter(); break; } break; } return(_currentToken); }
public void TestPascalCase_TheCatInTheHat() { Assert.AreEqual("TheCatInTheHat", StringMethods.PascalCase("The Cat In The Hat")); }
public void TestPascalCase_ERAU() { Assert.AreEqual("EmbryRiddleAeronauticalUniversity", StringMethods.PascalCase("Embry-Riddle Aeronautical University")); }
public void TestCamelCase_TheCatInTheHat() { Assert.AreEqual("theCatInTheHat", StringMethods.CamelCase("The Cat In The Hat")); }