public void SkipWhitespaceSetsPositionOnNextNonWhitespace() { //Arrange var keeper = new StringKeeper(" \t\n\r\ftest"); //Act keeper.SkipWhiteSpace(); //Assert keeper.Next.Should().Be('t'); }
public void TakeMovesThePositionAlong() { //Arrange var keeper = new StringKeeper("test"); //Act keeper.Take(); //Assert keeper.Next.Should().Be('e'); }
public void FinishedShouldBeTrueAfterTakeAll() { //Arrange var keeper = new StringKeeper("test"); //Act keeper.TakeAll(); //Assert keeper.Finished.Should().BeTrue(); }
public void TakeAllReturnsFullString() { //Arrange var keeper = new StringKeeper("test"); //Act var result = keeper.TakeAll(); //Assert result.Should().Be("test"); }
public void TakeReturnsTheNextCharacter() { //Arrange var keeper = new StringKeeper("test"); //Act var result = keeper.Take(); //Assert result.Should().Be("t"); }
public void NextInReturnsFalseIfFirstNotCharInRange() { //Arrange var keeper = new StringKeeper("test"); //Act var first = keeper.NextIn("nope"); //Assert first.Should().BeFalse(); }
public void CopiedInstancesDoNotFollowTheOriginal() { //Arrange var keeper = new StringKeeper("test"); var keeper2 = new StringKeeper(keeper); //Act keeper.TakeAll(); //Assert keeper2.Finished.Should().BeFalse(); }
public void SkipWhitespaceWorksIfFinished() { //Arrange var keeper = new StringKeeper("test"); keeper.TakeAll(); //Act keeper.SkipWhiteSpace(); //Assert keeper.Finished.Should().BeTrue(); //well, still true anyway }
public void CopiedInstancesShouldHaveTheSamePositionAsTheOriginal() { //Arrange var keeper = new StringKeeper("test"); keeper.Take(); //Act var keeper2 = new StringKeeper(keeper); //Assert keeper2.TakeAll().Should().Be(keeper.TakeAll()); }
public void TakeAllReturnsRemainingText() { //Arrange var keeper = new StringKeeper("test"); keeper.Take(); //Act var result = keeper.TakeAll(); //Assert result.Should().Be("est"); }
public void FinishedShouldBeTrueWhenNoDataRemains() { //Arrange var keeper = new StringKeeper("test"); keeper.Take(); //t keeper.Take(); //e keeper.Take(); //s keeper.Take(); //t //Act/Assert keeper.Finished.Should().BeTrue(); }
public void CopyingAFinishedInstanceShouldProduceAFinishedInstance() { //Arrange var keeper = new StringKeeper("test"); keeper.TakeAll(); //Act var keeper2 = new StringKeeper(keeper); //Assert keeper2.Finished.Should().BeTrue(); }
public string Difference(StringKeeper old) { if (old._text != _text) { return(string.Empty); } if (old._index > _index) { return(string.Empty); } return(_text.Substring(old._index, _index - old._index)); }
public void WhitespaceSkippedDoesNotHaveToBeAtTheStart() { //Arrange var keeper = new StringKeeper("X \t\n\r\ftest"); keeper.Take(); //Act keeper.SkipWhiteSpace(); //Assert keeper.Next.Should().Be('t'); }
public void SetNullAndSaveRemovesEntryFromConfig() { System.Configuration.Configuration config = CreateConfig(); config.AppSettings.Settings.Add(ConfigKey, Value); config.Save(); StringKeeper keeper = CreateStringKeeper(); keeper.Set(Key, null); keeper.Save(); config = CreateConfig(); Assert.IsFalse(config.AppSettings.Settings.AllKeys.Any()); }
public void SwapCopiesTheCorrectPositionIntoAnotherInstance() { //Arrange var keeper = new StringKeeper("test"); var keeper2 = new StringKeeper(keeper); keeper.TakeAll(); //Act keeper.Swap(keeper2); //Assert keeper2.Finished.Should().BeTrue(); }
public void SwapImportsTheDetailsFromTheOtherInstance() { //Arrange var keeper = new StringKeeper("test"); var keeper2 = new StringKeeper(keeper); var takenData = keeper.TakeAll(); //keeper is now finished //Act keeper.Swap(keeper2); //Assert var result = keeper.TakeAll(); //if swap did not change keeper, this will return string.Empty result.Should().Be(takenData); }
public void TakeReturnsNulWhenNoDataRemains() { //Arrange var keeper = new StringKeeper("test"); keeper.Take(); //t keeper.Take(); //e keeper.Take(); //s keeper.Take(); //t //Act var result = keeper.Take(); //Assert result.Should().Be("\0"); }
private static bool TryTake(StringKeeper stringKeeper, Dictionary <string, ApplyIfToken> tokens, out StringKeeper newStringKeeper, out ApplyIfToken token) { var thisToken = tokens.FirstOrDefault(x => stringKeeper.IsNext(x.Key, false)); if (thisToken.Key != null) { var work = stringKeeper.Take(thisToken.Key.Length); newStringKeeper = work; token = thisToken.Value; return(true); } newStringKeeper = stringKeeper; token = null; return(false); }
public void SetAndSaveReplacesEntryInConfig() { const string value = "Value"; const string anotherValue = "Another value"; System.Configuration.Configuration config = CreateConfig(); config.AppSettings.Settings.Add(ConfigKey, value); config.Save(); StringKeeper keeper = CreateStringKeeper(); keeper.Set(Key, anotherValue); keeper.Save(); config = CreateConfig(); Assert.IsTrue(config.AppSettings.Settings.AllKeys.Count() == 1); Assert.AreEqual(anotherValue, config.AppSettings.Settings[ConfigKey].Value); }
private static bool TryTakeIdentifier(StringKeeper stringKeeper, out StringKeeper newStringKeeper, out ApplyIfToken token) { var work = new StringKeeper(stringKeeper); var value = string.Empty; while (!IsTerminator(work)) { value += work.Next; work = work.Take(); } if (!string.IsNullOrWhiteSpace(value)) { newStringKeeper = work; token = new ApplyIfToken(ApplyIfTokenType.Identifier, value); return(true); } newStringKeeper = stringKeeper; token = null; return(false); }
public ErrorToken(StringKeeper pos, string errorMessage) { Text = pos.TakeAll(); ErrorMessage = errorMessage; }
public void GetReturnsNullWhenConfigEmpty() { StringKeeper keeper = CreateStringKeeper(); Assert.IsNull(keeper.Get(Key)); }
public StringKeeper(StringKeeper stringKeeper) { _index = stringKeeper._index; _text = stringKeeper._text; }
private static bool IsTerminator(StringKeeper stringKeeper) { return(stringKeeper.IsEmpty || stringKeeper.IsWhitespace || _terminators.Contains(stringKeeper.Next.ToString())); }