1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
/* __ *\
** ________ ___ / / ___ __ ____ Scala.js Test Suite **
** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
** /____/\___/_/ |_/____/_/ | |__/ /____/ **
** |/____/ **
\* */
package scala.scalajs.testsuite.jsinterop
import scala.scalajs.js
import org.scalajs.jasminetest.JasmineTest
object ArrayTest extends JasmineTest {
describe("scala.scalajs.js.Array") {
it("should provide implicit conversion from js.Array to ArrayOps - String") {
var propCount = 0
var propString = ""
for (item <- js.Array("Sc", "ala", ".", "js")) {
expect(item.isInstanceOf[String]).toBeTruthy
propCount += 1
propString += item
}
expect(propCount).toEqual(4)
expect(propString).toEqual("Scala.js")
}
it("should provide implicit conversion from js.Array to ArrayOps - Int") {
var propCount = 0
var propString = ""
for (item <- js.Array(7, 3, 5, 7)) {
expect(item.isInstanceOf[Int]).toBeTruthy
propCount += 1
propString += item
}
expect(propCount).toEqual(4)
expect(propString).toEqual("7357")
}
it("should provide implicit conversion from js.Array to ArrayOps - Char") {
var propCount = 0
var propString = ""
for (item <- js.Array('S', 'c', 'a', 'l', 'a')) {
expect(item.isInstanceOf[Char]).toBeTruthy
propCount += 1
propString += item
}
expect(propCount).toEqual(5)
expect(propString).toEqual("Scala")
}
it("should provide implicit conversion from js.Array to ArrayOps - value class") {
var propCount = 0
var propString = ""
for (item <- js.Array(new VC(5), new VC(-4))) {
expect(item.isInstanceOf[VC]).toBeTruthy
propCount += 1
propString += item
}
expect(propCount).toEqual(2)
expect(propString).toEqual("VC(5)VC(-4)")
}
}
describe("scala.scalajs.js.JSConverters.JSRichGenTraversableOnce") {
import js.JSConverters._
it("should provide toJSArray") {
expect(List("foo", "bar").toJSArray).toEqual(js.Array("foo", "bar"))
expect(Iterator(1, 2, 3).toJSArray).toEqual(js.Array(1, 2, 3))
expect(Array(0.3, 7.3, 8.9).toJSArray).toEqual(js.Array(0.3, 7.3, 8.9))
expect(None.toJSArray).toEqual(js.Array())
// The following fails on 2.10.x
//expect(Some("Hello World").toJSArray).toEqual(js.Array("Hello World"))
}
}
private class VC(val x: Int) extends AnyVal {
override def toString(): String = s"VC($x)"
}
}
|