WIP: Adding specs for various fold corner cases… think we still have some issues and gutter updates are failing.

This commit is contained in:
Corey Johnson & Nathan Sobo
2012-05-23 11:03:33 -07:00
parent 04f4a9a765
commit dd7fff4522
3 changed files with 20 additions and 30 deletions

View File

@@ -1,7 +1,7 @@
Renderer = require 'renderer'
Buffer = require 'buffer'
fdescribe "Renderer", ->
describe "Renderer", ->
[renderer, buffer, changeHandler, tabText] = []
beforeEach ->
tabText = ' '
@@ -309,9 +309,6 @@ fdescribe "Renderer", ->
expect(fold1.startRow).toBe 2
expect(fold1.endRow).toBe 5
buffer.logLines(0, 10)
renderer.logLines(0, 10)
expect(renderer.lineForRow(1).text).toBe "1"
expect(renderer.lineForRow(2).text).toBe "2"
expect(renderer.lineForRow(2).fold).toBe fold1
@@ -326,29 +323,32 @@ fdescribe "Renderer", ->
expect(event.newRange).toEqual [[2, 0], [2, 1]]
describe "when the end of the new range exceeds the end of the fold", ->
ffit "expands the fold to contain all the inserted lines", ->
it "expands the fold to contain all the inserted lines", ->
buffer.change([[3, 0], [4, 0]], 'a\nb\nc\nd\n')
expect(fold1.startRow).toBe 2
expect(fold1.endRow).toBe 7
# buffer.logLines(0, 10)
# renderer.logLines(0, 10)
# expect(renderer.lineForRow(1).text).toBe "1"
# expect(renderer.lineForRow(2).text).toBe "2"
# expect(renderer.lineForRow(2).fold).toBe fold1
# expect(renderer.lineForRow(2).bufferDelta).toEqual [4, 0]
# expect(renderer.lineForRow(3).text).toMatch "5"
# expect(renderer.lineForRow(4).fold).toBe fold2
# expect(renderer.lineForRow(5).text).toMatch /^9-+/
# expect(changeHandler).toHaveBeenCalled()
# [[event]] = changeHandler.argsForCall
# expect(event.oldRange).toEqual [[2, 0], [2, 1]]
# expect(event.newRange).toEqual [[2, 0], [2, 1]]
expect(renderer.lineForRow(1).text).toBe "1"
expect(renderer.lineForRow(2).text).toBe "2"
expect(renderer.lineForRow(2).fold).toBe fold1
expect(renderer.lineForRow(2).bufferDelta).toEqual [6, 0]
expect(renderer.lineForRow(3).text).toMatch "5"
expect(renderer.lineForRow(4).fold).toBe fold2
expect(renderer.lineForRow(5).text).toMatch /^9-+/
expect(changeHandler).toHaveBeenCalled()
[[event]] = changeHandler.argsForCall
expect(event.oldRange).toEqual [[2, 0], [2, 1]]
expect(event.newRange).toEqual [[2, 0], [2, 1]]
describe "when the old range straddles the end of the fold", ->
describe "when the end of the new range precedes the end of the fold", ->
it "shortens the fold so its end matches the end of the new range", ->
fold2.destroy()
buffer.change([[3, 0], [6, 1]], 'a')
expect(fold1.startRow).toBe 2
expect(fold1.endRow).toBe 3
describe "when the old range surrounds a fold", ->
it "removes the fold and replaces the fold placeholder with the new text", ->
@@ -387,9 +387,6 @@ fdescribe "Renderer", ->
expect(fold1.startRow).toBe 2
expect(fold1.endRow).toBe 6
buffer.logLines(0, 10)
console.log "================================================"
renderer.logLines(0, 10)
expect(renderer.lineForRow(1).text).toBe '1a'
expect(renderer.lineForRow(2).text).toBe 'b'

View File

@@ -48,8 +48,6 @@ class Fold
else
delta = 0
console.log "start row delta", delta
@startRow += delta
updateEndRow: (event) ->
@@ -58,11 +56,8 @@ class Fold
if oldRange.end.row <= @endRow
delta = newRange.end.row - oldRange.end.row
else if newRange.end.row <= @endRow
console.log "newRange.end.row", newRange.end.row, " - @endRow", @endRow
delta = newRange.end.row - @endRow
else
delta = 0
console.log "end row delta", delta
@endRow += delta

View File

@@ -119,7 +119,6 @@ class Renderer
newScreenLines = @buildLinesForBufferRows(newRange.start.row, newRange.end.row)
@lineMap.replaceScreenRows oldScreenRange.start.row, oldScreenRange.end.row, newScreenLines
newScreenRange = @screenLineRangeForBufferRange(newRange)
console.log "New Screen Range", newScreenRange.inspect()
@trigger 'change', { oldRange: oldScreenRange, newRange: newScreenRange, bufferChanged: true }
@@ -179,7 +178,6 @@ class Renderer
@foldsById[fold.id] = fold
unregisterFold: (bufferRow, fold) ->
console.log "unregistering fold", fold.id
folds = @activeFolds[bufferRow]
_.remove(folds, fold)
delete @foldsById[fold.id]