Skip to content

Commit a9178d8

Browse files
start completeness test
1 parent f54857a commit a9178d8

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
package rx.lang.scala
2+
3+
import scala.reflect.runtime.universe._
4+
import org.scalatest.junit.JUnitSuite
5+
import org.junit.Test
6+
import rx.util.functions._
7+
8+
class CompletenessTest extends JUnitSuite {
9+
10+
case class Op(name: String, argTypes: Type*) {
11+
override def toString = name + argTypes.mkString("(", ", ", ")")
12+
}
13+
14+
val correspondence = Map(
15+
Op("toList") -> Op("toSeq"),
16+
Op("window", typeOf[Int]) -> Op("window", typeOf[Int])
17+
)
18+
19+
def check(cond: Boolean, ifGood: String, ifBad: String): Unit = {
20+
if (cond) println(ifGood) else println(ifBad)
21+
}
22+
23+
def checkOperatorPresence(op: Op, tp: Type): Unit = {
24+
val paramTypeLists = for (alt <- tp.member(newTermName(op.name)).asTerm.alternatives)
25+
yield alt.asMethod.paramss.headOption match {
26+
case Some(paramList) => paramList.map(symb => symb.typeSignature)
27+
case None => List()
28+
}
29+
30+
println(paramTypeLists)
31+
32+
check(paramTypeLists.contains(op.argTypes.toList),
33+
s"$op is present in $tp", s"$op is NOT present in $tp")
34+
}
35+
36+
@Test def test3() {
37+
val javaObs = typeOf[rx.Observable[_]]
38+
val scalaObs = typeOf[rx.lang.scala.Observable[_]]
39+
40+
for ((javaOp, scalaOp) <- correspondence) {
41+
checkOperatorPresence(javaOp, javaObs)
42+
checkOperatorPresence(scalaOp, scalaObs)
43+
}
44+
}
45+
46+
47+
@Test def test1() {
48+
val c = Class.forName("rx.Observable")
49+
for (method <- c.getMethods()) {
50+
println(method.getName())
51+
}
52+
53+
}
54+
55+
@Test def test2() {
56+
val tp = typeOf[rx.Observable[_]]
57+
for (member <- tp.members) println(member)
58+
println("00000")
59+
//println(tp.member(stringToTermName("all")))
60+
//println(tp.member("all"))
61+
62+
val methodAll = tp.member(newTermName("all")).asMethod
63+
println(methodAll.fullName)
64+
65+
val methodBufferAlts = tp.member(newTermName("buffer")).asTerm.alternatives
66+
}
67+
68+
}

0 commit comments

Comments
 (0)