public void ShouldIdentifyPositionsAtClassScope() { CodeNavigator navigator = new CodeNavigator(snapshot); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(1).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(2).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(3).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(4).Start )); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(4).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(5).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(6).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(7).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(8).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(9).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(10).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(11).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(12).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(13).Start)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(13).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(14).End - 1)); Assert.IsFalse(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(15).Start)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(15).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(16).End - 1)); Assert.IsTrue(navigator.IsInClassScope(snapshot.GetLineFromLineNumber(17).End - 1)); }
private int FindLineAfterWhichToInsertFieldDeclaration(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); foreach (int significantPoint in navigator.UpFrom(p)) { if (navigator.IsInClassScope(significantPoint)) { return(snapshot.GetLineNumberFromPosition(significantPoint)); } } return(-1); }
private int FindLineBeforeWhichToInsertMethodStatement(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); int lastLineOfMethod = -1; foreach (int significantPoint in navigator.DownFrom(p)) { lastLineOfMethod = significantPoint; } if (lastLineOfMethod > 0) { return(snapshot.GetLineNumberFromPosition(lastLineOfMethod)); } return(-1); }
private int FindLineAfterWhichToInsertDeclaration(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); IEnumerator <int> point = navigator.UpFrom(p).GetEnumerator(); int originalLine = snapshot.GetLineNumberFromPosition(p); int lineNumber = -1; bool notEOF; do { notEOF = point.MoveNext(); lineNumber = snapshot.GetLineNumberFromPosition(point.Current); }while(lineNumber == originalLine && notEOF); if (lineNumber == originalLine) { lineNumber = -1; } return(lineNumber); }
private int FindLineBeforeWhichToInsertMethodStatement(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); int lastLineOfMethod = -1; foreach (int significantPoint in navigator.DownFrom(p)) { lastLineOfMethod = significantPoint; } if (lastLineOfMethod > 0) return snapshot.GetLineNumberFromPosition(lastLineOfMethod); return -1; }
private int FindLineAfterWhichToInsertFieldDeclaration(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); foreach (int significantPoint in navigator.UpFrom(p)) { if (navigator.IsInClassScope(significantPoint)) return snapshot.GetLineNumberFromPosition(significantPoint); } return -1; }
private int FindLineAfterWhichToInsertDeclaration(ITextSnapshot snapshot, int p) { CodeNavigator navigator = new CodeNavigator(snapshot); IEnumerator<int> point = navigator.UpFrom(p).GetEnumerator(); int originalLine = snapshot.GetLineNumberFromPosition(p); int lineNumber = -1; bool notEOF; do { notEOF = point.MoveNext(); lineNumber = snapshot.GetLineNumberFromPosition(point.Current); } while( lineNumber == originalLine && notEOF) ; if (lineNumber == originalLine) lineNumber = -1; return lineNumber; }
public void ShouldNavigateDownThroughCodeIgnoringCommentsAndStrings() { int p = snapshot.GetLineFromLineNumber(17).End - 1; CodeNavigator navigator = new CodeNavigator(snapshot); List<int> positions = new List<int>(); foreach (int c in navigator.DownFrom(p)) { positions.Add(c); } Assert.AreEqual(2, positions.Count); VerifyCharAndLineAtPosition(positions[0], '}', 23); VerifyCharAndLineAtPosition(positions[1], '}', 24); }
public void ShouldNavigateUpThroughCodeIgnoringCommentsAndStrings() { int p = snapshot.GetLineFromLineNumber(10).End - 1; CodeNavigator navigator = new CodeNavigator(snapshot); Stack<int> positions = new Stack<int>(); foreach (int c in navigator.UpFrom(p)) { positions.Push(c); } Assert.AreEqual(0, positions.Pop()); VerifyCharAndLineAtPosition(positions.Pop(), '{', 2); VerifyCharAndLineAtPosition(positions.Pop(), '{', 4); VerifyCharAndLineAtPosition(positions.Pop(), ';', 5); VerifyCharAndLineAtPosition(positions.Pop(), '{', 7); VerifyCharAndLineAtPosition(positions.Pop(), ';', 9); VerifyCharAndLineAtPosition(positions.Pop(), ';', 10); }
public void ShouldNavigateUpThroughCodeIgnoringCodeAtDeeperScope() { int p = snapshot.GetLineFromLineNumber(21).End - 1; CodeNavigator navigator = new CodeNavigator(snapshot); Stack<int> positions = new Stack<int>(); foreach (int c in navigator.UpFrom(p)) { positions.Push(c); } Assert.AreEqual(0, positions.Pop()); VerifyCharAndLineAtPosition(positions.Pop(), '{', 2); VerifyCharAndLineAtPosition(positions.Pop(), '{', 15); VerifyCharAndLineAtPosition(positions.Pop(), ';', 16); VerifyCharAndLineAtPosition(positions.Pop(), '{', 18); VerifyCharAndLineAtPosition(positions.Pop(), '{', 19); VerifyCharAndLineAtPosition(positions.Pop(), '{', 20); VerifyCharAndLineAtPosition(positions.Pop(), ';', 21); }
public void ShouldNavigateUpOneLevel() { int p = snapshot.GetLineFromLineNumber(3).End - 1; CodeNavigator navigator = new CodeNavigator(snapshot); Stack<int> positions = new Stack<int>(); foreach (int c in navigator.UpFrom(p)) { positions.Push(c); } Assert.AreEqual(2, positions.Count); Assert.AreEqual(0, positions.Pop()); VerifyCharAndLineAtPosition(positions.Pop(), '{', 2); }
public void ShouldNavigateDownThroughCodeIncludingStatementsInSameScope() { int p = snapshot.GetLineFromLineNumber(6).End - 1; CodeNavigator navigator = new CodeNavigator(snapshot); List<int> positions = new List<int>(); foreach (int c in navigator.DownFrom(p)) { positions.Add(c); } Assert.AreEqual(5, positions.Count); VerifyCharAndLineAtPosition(positions[0], ';', 9); VerifyCharAndLineAtPosition(positions[1], ';', 10); VerifyCharAndLineAtPosition(positions[2], ';', 11); VerifyCharAndLineAtPosition(positions[3], ';', 11); VerifyCharAndLineAtPosition(positions[4], '}', 12); }