2016-11-19 50 views
1

我想找到一个很好的和简洁的方式来测试intarray科特林,如何测试(INT)阵列

起初我试过

mFaces[0].mIndices shouldBe intArrayOf(0, 1, 2)

其中mIndices

var mIndices: IntArray = IntArray(0)

但是失败。的IntelliJ还建议我与Array小号

然后我想尝试这样的事情

mFaces[0].mIndices.all { it. == index } shouldBe true

覆盖equals(),但它看起来像有没有方法来检索内部all{..}it指数或者是这个

var p = 0 
mFaces[0].mIndices.all { it == p++ } shouldBe true 

唯一的可能性?

+0

你能告诉我们mIndices的声明吗? – miensol

+0

可能的重复:http://stackoverflow.com/q/35272761/3255152 – mfulton26

回答

2

在Java(Kotlin)阵列中,按内容比较而不是。那意味着intArrayOf(1, 2, 3) != intArrayOf(1, 2, 3)

比较阵列的内容,你有两个选择:

  1. 使用深层比较:

    Arrays.deepequals(mFaces[0].mIndices, intArrayOf(0, 1, 2))

  2. 使用列表:

    mFaces[0].mIndices.toList() == listOf(0, 1, 2)

+0

严格地说,equals运算符调用方法equals()(这是迄今为止的Kotlin),在数组的情况下恰好被实现为参考比较(这是Java的错误)。 –