summaryrefslogtreecommitdiff
path: root/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib
diff options
context:
space:
mode:
Diffstat (limited to 'test-suite/src/test/scala/scala/scalajs/testsuite/scalalib')
-rw-r--r--test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/EnumerationTest.scala95
-rw-r--r--test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/RangesTest.scala27
-rw-r--r--test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/SymbolTest.scala63
3 files changed, 185 insertions, 0 deletions
diff --git a/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/EnumerationTest.scala b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/EnumerationTest.scala
new file mode 100644
index 0000000..f5b17d9
--- /dev/null
+++ b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/EnumerationTest.scala
@@ -0,0 +1,95 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js Test Suite **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+package scala.scalajs.testsuite.scalalib
+
+import org.scalajs.jasminetest.JasmineTest
+
+object EnumerationTest extends JasmineTest {
+
+ describe("scala.Enumeration") {
+
+ it("should use explicit naming for enumerated values - #38") {
+ object HelpLevel extends Enumeration {
+ type HelpLevel = Value
+ val None = Value("None")
+ val Basic = Value("Basic")
+ val Medium = Value("Medium")
+ val Full = Value("Full")
+ }
+
+ val h = HelpLevel.None
+
+ expect(h.toString).toEqual("None")
+ }
+
+ it("should allow implicit naming for values") {
+ object HelpLevel extends Enumeration {
+ type HelpLevel = Value
+ val None, Basic, Medium, Full = Value
+ val Special = Value(100)
+ val / = Value
+ }
+
+ val h = HelpLevel.Medium
+ expect(h.toString).toEqual("Medium")
+ expect(HelpLevel.Special.toString).toEqual("Special")
+ expect(HelpLevel./.toString).toEqual("$div")
+ }
+
+ it("should give a pseudo toString to unnamed values") {
+ object Test extends Enumeration {
+ private val nullStr: String = null
+ val A = Value(nullStr) // Circumvent compiler replacement and warning
+ }
+
+ expect(Test.A.toString.startsWith(
+ "<Unknown name for enum field #0 of class ")).toBeTruthy
+ }
+
+ it("should give a graceful error message upon name based query when unnamed fields are present") {
+ object Test extends Enumeration {
+ private val nullStr: String = null
+ val A = Value(nullStr) // Circumvent compiler replacement and warning
+ }
+
+ expect(() => Test.withName("A")).toThrow
+ expect {
+ try { Test.withName("A"); ??? }
+ catch { case e: NoSuchElementException => e.getMessage }
+ } toContain {
+ """Couldn't find enum field with name A.
+ |However, there were the following unnamed fields:""".stripMargin
+ }
+ }
+
+ it("should respond to `toString`") {
+ expect(FooBarEnum.toString).toEqual("FooBarEnum")
+ }
+
+ it("should respond to `values`") {
+ expect(FooBarEnum.values.toString).toEqual(
+ "FooBarEnum.ValueSet(A, B, C, D, E, F)")
+ }
+
+ it("should allow setting nextName") {
+ object Test extends Enumeration {
+ nextName = Iterator("x","y","z")
+ val a,b,c = Value
+ }
+
+ expect(Test.values.mkString("|")).toEqual("x|y|z")
+ }
+
+ }
+
+ /** Object is here due to issues with Enumeration.toString inside closures */
+ object FooBarEnum extends Enumeration {
+ val A,B,C,D,E,F = Value
+ }
+
+}
diff --git a/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/RangesTest.scala b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/RangesTest.scala
new file mode 100644
index 0000000..511e183
--- /dev/null
+++ b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/RangesTest.scala
@@ -0,0 +1,27 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js Test Suite **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+package scala.scalajs.testsuite.scalalib
+
+import org.scalajs.jasminetest.JasmineTest
+
+object RangesTest extends JasmineTest {
+
+ describe("Collection ranges") {
+
+ it("Iterable.range should not emit dce warnings - #650") {
+ Iterable.range(1, 10)
+ }
+
+ it("Iterable.range and simple range should be equal") {
+ // Mostly to exercise more methods of ranges for dce warnings
+ expect(Iterable.range(0, 10).toList == (0 until 10).toList).toBeTruthy
+ }
+
+ }
+
+}
diff --git a/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/SymbolTest.scala b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/SymbolTest.scala
new file mode 100644
index 0000000..3612629
--- /dev/null
+++ b/test-suite/src/test/scala/scala/scalajs/testsuite/scalalib/SymbolTest.scala
@@ -0,0 +1,63 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js Test Suite **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+package scala.scalajs.testsuite.scalalib
+
+import scala.scalajs.js
+import org.scalajs.jasminetest.JasmineTest
+
+object SymbolTest extends JasmineTest {
+
+ describe("scala.Symbol") {
+
+ it("should ensure unique identity") {
+ def expectEqual(sym1: Symbol, sym2: Symbol): Unit = {
+ expect(sym1 eq sym2).toBeTruthy
+ expect(sym1 == sym2).toBeTruthy
+ expect(sym1.equals(sym2)).toBeTruthy
+ expect(sym1.## == sym2.##).toBeTruthy
+ }
+
+ expectEqual('ScalaJS, Symbol("ScalaJS"))
+ expectEqual('$, Symbol("$"))
+ expectEqual('-, Symbol("-"))
+
+ val `42` = Symbol("42")
+ val map = Map[Symbol, js.Any](Symbol("ScalaJS") -> "Scala.js", '$ -> 1.2, `42` -> 42)
+ expect(map('ScalaJS)).toEqual("Scala.js")
+ expect(map(Symbol("$"))).toEqual(1.2)
+ expect(map(Symbol("42"))).toEqual(42)
+ expect(map(`42`)).toEqual(42)
+ }
+
+ it("should support `name`") {
+ val scalajs = 'ScalaJS
+
+ expect(scalajs.name).toEqual("ScalaJS")
+ expect(Symbol("$").name).toEqual("$")
+ expect('$$.name).toEqual("$$")
+ expect('-.name).toEqual("-")
+ expect('*.name).toEqual("*")
+ expect(Symbol("'").name).toEqual("'")
+ expect(Symbol("\"").name).toEqual("\"")
+ }
+
+ it("should support `toString`") {
+ val scalajs = 'ScalaJS
+
+ expect(scalajs.toString).toEqual("'ScalaJS")
+ expect(Symbol("$").toString).toEqual("'$")
+ expect('$$.toString).toEqual("'$$")
+ expect('-.toString).toEqual("'-")
+ expect('*.toString).toEqual("'*")
+ expect(Symbol("'").toString).toEqual("''")
+ expect(Symbol("\"").toString).toEqual("'\"")
+ }
+
+ }
+
+}