Skip to content

Commit

Permalink
Start implementing test suite for save actions
Browse files Browse the repository at this point in the history
This contains tests for the save action RemoveTrailingWhitespace.
  • Loading branch information
kiritsuku committed Sep 2, 2014
1 parent 1d92809 commit 8344198
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ import org.scalaide.core.project.DirectoryScalaInstallationTest
import org.scalaide.core.classpath.DesiredScalaInstallationTests
import org.scalaide.ui.wizards.WizardTests
import org.scalaide.core.text.TextTestSuite
import org.scalaide.extensions.saveactions.SaveActionTestSuite

@RunWith(classOf[Suite])
@Suite.SuiteClasses(
Expand Down Expand Up @@ -87,6 +88,7 @@ import org.scalaide.core.text.TextTestSuite
classOf[DirectoryScalaInstallationTest],
classOf[CompletionTestSuite],
classOf[WizardTests],
classOf[TextTestSuite]
classOf[TextTestSuite],
classOf[SaveActionTestSuite]
))
class TestsSuite
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package org.scalaide.extensions.saveactions

import org.junit.Test

class RemoveTrailingWhitespaceTest extends SaveActionTests { self =>

override def saveAction = new RemoveTrailingWhitespace {
override val document = self.document
}

@Test
def trailing_whitespace_is_removed() = """|^
|class X {
| def hello = { $
| val x = 0 $
| $
| val y = 1 $
| $
| x + y
| }
|}
| $
|""".stripMargin becomes """|^
|class X {
| def hello = {
| val x = 0
|
| val y = 1
|
| x + y
| }
|}
|
|""".stripMargin after SaveEvent
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package org.scalaide.extensions.saveactions

import org.junit.runner.RunWith
import org.junit.runners.Suite

@RunWith(classOf[Suite])
@Suite.SuiteClasses(Array(
classOf[RemoveTrailingWhitespaceTest]
))
class SaveActionTestSuite
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package org.scalaide.extensions
package saveactions

import org.eclipse.jface.text.{Document => EDocument}
import org.scalaide.core.internal.text.TextDocument
import org.scalaide.core.text.Document
import org.scalaide.core.text.TextChange
import org.scalaide.core.ui.TextEditTests
import org.scalaide.extensions.SaveAction

abstract class SaveActionTests extends TextEditTests {

def saveAction: SaveAction

var document: Document = _

private var udoc: EDocument = _

override def runTest(source: String, operation: Operation) = {
udoc = new EDocument(source)
document = new TextDocument(udoc)
operation.execute()
}

override def source = udoc.get()

case object SaveEvent extends Operation {
override def execute() = {
val changes = saveAction.perform()
val sorted = changes.sortBy {
case TextChange(start, _, _) => -start
}
sorted foreach {
case TextChange(start, end, text) =>
udoc.replace(start, end-start, text)
}
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ trait RemoveTrailingWhitespace extends SaveAction with DocumentSupport {

override def setting = RemoveTrailingWhitespaceSetting

def perform() = {
override def perform() = {
document.lines flatMap { line =>
val trimmed = line.trimRight

Expand All @@ -30,4 +30,4 @@ trait RemoveTrailingWhitespace extends SaveAction with DocumentSupport {
Seq()
}
}
}
}

0 comments on commit 8344198

Please sign in to comment.