mirror of
https://github.com/atom/atom.git
synced 2026-01-24 14:28:14 -05:00
WIP: Adding specs for various fold corner cases… think we still have some issues and gutter updates are failing.
This commit is contained in:
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user