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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/* __ *\
** ________ ___ / / ___ __ ____ Scala.js Test Suite **
** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
** /____/\___/_/ |_/____/_/ | |__/ /____/ **
** |/____/ **
\* */
package scala.scalajs.testsuite.library
import scala.scalajs.js
import org.scalajs.jasminetest.JasmineTest
import scala.collection.mutable
object WrappedArrayTest extends JasmineTest {
describe("scala.scalajs.js.WrappedArray") {
// Methods we actually implement
it("should implement apply") {
val array = js.Array(3,4,5,6,3,4)
val seq: Seq[Int] = array
expect(seq(0)).toEqual(3)
expect(seq(3)).toEqual(6)
array(0) = 4
expect(seq(0)).toEqual(4)
}
it("should implement update") {
val array = js.Array(3,4,5,6,3,4)
val seq: mutable.Seq[Int] = array
expect(array(1)).toEqual(4)
seq(1) = 5
expect(array(1)).toEqual(5)
seq(5) = 10
expect(array(5)).toEqual(10)
}
it("should implement length") {
val array = js.Array(3,4,5,6,3,4)
val seq: Seq[Int] = array
expect(seq.length).toEqual(6)
array.push(1)
expect(seq.length).toEqual(7)
}
it("should implement +=:") {
val array = js.Array(5, 8, 9)
3 +=: array
expect(array).toEqual(js.Array(3, 5, 8, 9))
}
it("should implement ++=:") {
val array = js.Array(5, 8, 9)
js.Array(2, 0) ++=: array
expect(array).toEqual(js.Array(2, 0, 5, 8, 9))
Seq(-3, -45, 1) ++=: array
expect(array).toEqual(js.Array(-3, -45, 1, 2, 0, 5, 8, 9))
}
it("should implement insertAll") {
val array = js.Array(5, 8, 9)
array.insertAll(2, js.Array(2, 0))
expect(array).toEqual(js.Array(5, 8, 2, 0, 9))
array.insertAll(1, Seq(-3, -45, 1))
expect(array).toEqual(js.Array(5, -3, -45, 1, 8, 2, 0, 9))
}
it("should implement remove") {
val array = js.Array(5, 8, 2, 0, 9)
expect(array.remove(1)).toEqual(8)
expect(array).toEqual(js.Array(5, 2, 0, 9))
array.remove(0, 3)
expect(array).toEqual(js.Array(9))
}
// Some arbitrary methods to test the builders
it("should implement collect") {
// Ascribe to right type here, so we'll actually produce a WrappedArray
val seq: js.WrappedArray[Int] = js.Array(3,4,5,6,3,4)
val res = seq.collect {
case x if x > 4 => 2*x
}
expect(res.getClass == classOf[js.WrappedArray[Int]]).toBeTruthy
expect(res.toList == List(10,12)).toBeTruthy
expect(res.array).toEqual(js.Array(10,12))
}
it("should implement diff") {
val seq: Seq[Int] = js.Array(1,2,1,3,1,10,9)
val diff = seq.diff(Seq(1,3,9))
expect(diff.toList == List(2,1,1,10)).toBeTruthy
}
it("should implement toList") {
val seq: Seq[Int] = js.Array(1,2,1,3,1,10,9)
val list = seq.toList
expect(list == List(1,2,1,3,1,10,9)).toBeTruthy
}
it("should implement to[T]") {
val seq: Seq[Int] = js.Array(1,2,1,3,1,10,9)
val list = seq.to[List]
expect(list == List(1,2,1,3,1,10,9)).toBeTruthy
}
}
}
|