summaryrefslogtreecommitdiff
path: root/test/junit/scala
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-11-14 14:51:58 +0100
committerDen Shabalin <den.shabalin@gmail.com>2013-11-17 18:17:50 +0100
commit1080da80769cdc2bef2f06977094caff625b4a15 (patch)
tree83400ad47cc77390528ff5207ccfe989230b76b1 /test/junit/scala
parent69e62de87d80cf5b9d8c7f4eefcea0638fb2759d (diff)
downloadscala-1080da80769cdc2bef2f06977094caff625b4a15.tar.gz
scala-1080da80769cdc2bef2f06977094caff625b4a15.tar.bz2
scala-1080da80769cdc2bef2f06977094caff625b4a15.zip
refactor out fresh name prefix extraction logic
1. refactor out FreshNameExtractor out of Quasiquotes cake into SymbolTable (can’t put it outside due to the fact that names are path-dependent) 2. add optional parameter to the fresh name creator to cover additional qq$ prefix needed for quasiquotes 3. add unit tests
Diffstat (limited to 'test/junit/scala')
-rw-r--r--test/junit/scala/tools/nsc/symtab/FreshNameExtractorTest.scala47
1 files changed, 47 insertions, 0 deletions
diff --git a/test/junit/scala/tools/nsc/symtab/FreshNameExtractorTest.scala b/test/junit/scala/tools/nsc/symtab/FreshNameExtractorTest.scala
new file mode 100644
index 0000000000..cf09abdfff
--- /dev/null
+++ b/test/junit/scala/tools/nsc/symtab/FreshNameExtractorTest.scala
@@ -0,0 +1,47 @@
+package scala.tools.nsc
+package symtab
+
+import org.junit.Assert._
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+import scala.tools.testing.AssertUtil.assertThrows
+import scala.reflect.internal.util.FreshNameCreator
+
+@RunWith(classOf[JUnit4])
+class FreshNameExtractorTest {
+ object symbolTable extends SymbolTableForUnitTesting
+ import symbolTable._
+
+ val prefixes = List("foo$", "x$", "bar", "bippy$baz$")
+
+ @Test
+ def extractionPreservesPrefix =
+ ("" :: prefixes).foreach { creatorPrefix =>
+ prefixes.foreach { newPrefix =>
+ val Creator = new FreshNameCreator(creatorPrefix)
+ val Extractor = new FreshNameExtractor(creatorPrefix)
+ val Extractor(extractedPrefix) = TermName(Creator.newName(newPrefix))
+ assertEquals(newPrefix, extractedPrefix)
+ }
+ }
+
+ @Test
+ def extractionFailsOnCreatorPrefixMismatch = {
+ val Creator = new FreshNameCreator(prefixes.head)
+ val Extractor = new FreshNameExtractor(prefixes.tail.head)
+ assertThrows[MatchError] {
+ val Extractor(_) = TermName(Creator.newName("foo"))
+ }
+ }
+
+ @Test
+ def extractionsFailsIfNameDoesntEndWithNumber = {
+ val Creator = new FreshNameCreator(prefixes.head)
+ val Extractor = new FreshNameExtractor(prefixes.head)
+ assertThrows[MatchError] {
+ val Extractor(_) = TermName(Creator.newName("foo") + "bar")
+ }
+ }
+} \ No newline at end of file