2016-11-19 94 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的錯誤)。 –