Make DisplayBuffer a telepath model subclass

This commit is contained in:
Nathan Sobo
2013-12-07 03:07:15 -08:00
parent f4d19810b8
commit 1ccc93c50b
5 changed files with 51 additions and 75 deletions

View File

@@ -7,7 +7,7 @@ describe "DisplayBuffer", ->
tabLength = 2
atom.packages.activatePackage('language-javascript', sync: true)
buffer = atom.project.bufferForPathSync('sample.js')
displayBuffer = new DisplayBuffer({buffer, tabLength})
displayBuffer = atom.create(new DisplayBuffer({buffer, tabLength}))
changeHandler = jasmine.createSpy 'changeHandler'
displayBuffer.on 'changed', changeHandler
@@ -15,19 +15,6 @@ describe "DisplayBuffer", ->
displayBuffer.destroy()
buffer.release()
describe "@deserialize(state)", ->
it "constructs a display buffer with the same buffer, folds, editorWidthInChars, and tabLength", ->
displayBuffer.setTabLength(4)
displayBuffer.setEditorWidthInChars(64)
displayBuffer.createFold(2, 4)
displayBuffer2 = atom.deserializers.deserialize(displayBuffer.serialize())
expect(displayBuffer2.id).toBe displayBuffer.id
expect(displayBuffer2.buffer).toBe displayBuffer.buffer
expect(displayBuffer2.tokenizedBuffer.buffer).toBe displayBuffer.tokenizedBuffer.buffer
expect(displayBuffer2.isFoldedAtBufferRow(2)).toBeTruthy()
expect(displayBuffer2.getSoftWrapColumn()).toBe displayBuffer.getSoftWrapColumn()
expect(displayBuffer2.getTabLength()).toBe displayBuffer.getTabLength()
describe ".copy()", ->
it "creates a new DisplayBuffer with the same initial state", ->
marker1 = displayBuffer.markBufferRange([[1, 2], [3, 4]], id: 1)
@@ -155,7 +142,7 @@ describe "DisplayBuffer", ->
describe "when a newline is inserted, deleted, and re-inserted at the end of a wrapped line (regression)", ->
it "correctly renders the original wrapped line", ->
buffer = atom.project.buildBufferSync(null, '')
displayBuffer = new DisplayBuffer({buffer, tabLength, editorWidthInChars: 30, softWrap: true})
displayBuffer = atom.create(new DisplayBuffer({buffer, tabLength, editorWidthInChars: 30, softWrap: true}))
buffer.insert([0, 0], "the quick brown fox jumps over the lazy dog.")
buffer.insert([0, Infinity], '\n')
@@ -207,7 +194,7 @@ describe "DisplayBuffer", ->
displayBuffer.destroy()
buffer.release()
buffer = atom.project.bufferForPathSync('two-hundred.txt')
displayBuffer = new DisplayBuffer({buffer, tabLength})
displayBuffer = atom.create(new DisplayBuffer({buffer, tabLength}))
displayBuffer.on 'changed', changeHandler
describe "when folds are created and destroyed", ->
@@ -313,7 +300,7 @@ describe "DisplayBuffer", ->
describe "when there is another display buffer pointing to the same buffer", ->
it "does not create folds in the other display buffer", ->
otherDisplayBuffer = new DisplayBuffer({buffer, tabLength})
otherDisplayBuffer = atom.create(new DisplayBuffer({buffer, tabLength}))
displayBuffer.createFold(2, 4)
expect(otherDisplayBuffer.foldsStartingAtBufferRow(2).length).toBe 0

View File

@@ -29,24 +29,24 @@ runAllSpecs = ->
requireSpecs(path.join(resourcePath, 'spec'))
setSpecType('core')
fixturesPackagesPath = path.join(__dirname, 'fixtures', 'packages')
packagePaths = atom.packages.getAvailablePackageNames().map (packageName) ->
atom.packages.resolvePackagePath(packageName)
packagePaths = _.groupBy packagePaths, (packagePath) ->
if packagePath.indexOf("#{fixturesPackagesPath}#{path.sep}") is 0
'fixtures'
else if packagePath.indexOf("#{resourcePath}#{path.sep}") is 0
'bundled'
else
'user'
# Run bundled package specs
requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.bundled ? []
setSpecType('bundled')
# Run user package specs
requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.user ? []
setSpecType('user')
# fixturesPackagesPath = path.join(__dirname, 'fixtures', 'packages')
# packagePaths = atom.packages.getAvailablePackageNames().map (packageName) ->
# atom.packages.resolvePackagePath(packageName)
# packagePaths = _.groupBy packagePaths, (packagePath) ->
# if packagePath.indexOf("#{fixturesPackagesPath}#{path.sep}") is 0
# 'fixtures'
# else if packagePath.indexOf("#{resourcePath}#{path.sep}") is 0
# 'bundled'
# else
# 'user'
#
# # Run bundled package specs
# requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.bundled ? []
# setSpecType('bundled')
#
# # Run user package specs
# requireSpecs(path.join(packagePath, 'spec')) for packagePath in packagePaths.user ? []
# setSpecType('user')
if specDirectory = atom.getLoadSettings().specDirectory
requireSpecs(specDirectory)