1
1
package im.tox.tox4j.core
2
2
3
3
import im.tox.tox4j.core.callbacks.ToxCoreEventListener
4
+ import im.tox.tox4j.core.data.Port
4
5
import im.tox.tox4j.core.data.ToxFriendNumber
6
+ import im.tox.tox4j.core.data.ToxPublicKey
5
7
import im.tox.tox4j.core.enums.ToxConnection
6
8
import im.tox.tox4j.core.exceptions.ToxBootstrapException
7
9
import im.tox.tox4j.core.options.ToxOptions
@@ -11,20 +13,48 @@ import kotlin.test.assertFailsWith
11
13
12
14
@kotlin.ExperimentalStdlibApi
13
15
class ToxCoreTest {
16
+ private val options = ToxOptions (localDiscoveryEnabled = false )
17
+
14
18
@Test
15
19
fun bootstrap_withWrongHost_shouldFail () =
16
20
runTox {
17
- val tox = newToxCore(ToxOptions () )
21
+ val tox = newToxCore(options )
18
22
assertFailsWith<ToxBootstrapException > {
19
23
tox.bootstrap(" host-does-not-exist" , tox.getUdpPort, tox.getDhtId)
20
24
}
21
25
}
22
26
27
+ @Test
28
+ fun bootstrap_withCorrectHost_shouldSucceed () =
29
+ runTox {
30
+ val tox = newToxCore(options)
31
+ tox.bootstrap(
32
+ " tox.abilinski.com" ,
33
+ Port (33445 .toUShort()),
34
+ ToxPublicKey (fromHex(" 10C00EB250C3233E343E2AEBA07115A5C28920E9C8D29492F6D00B29049EDC7E" )),
35
+ )
36
+
37
+ var connected = false
38
+
39
+ val isConnected =
40
+ object : ToxCoreEventListener <Boolean > {
41
+ override fun selfConnectionStatus (
42
+ connectionStatus : ToxConnection ,
43
+ state : Boolean ,
44
+ ) = connectionStatus != ToxConnection .NONE
45
+ }
46
+
47
+ while (! connected) {
48
+ connected = tox.iterate(isConnected, connected)
49
+ delay(tox.iterationInterval.toLong())
50
+ }
51
+ }
52
+
23
53
@Test
24
54
fun addFriendNorequest_shouldConnectTwoToxes () =
25
55
runTox {
26
- val tox1 = newToxCore(ToxOptions () )
27
- val tox2 = newToxCore(ToxOptions () )
56
+ val tox1 = newToxCore(options )
57
+ val tox2 = newToxCore(options )
28
58
29
59
tox2.bootstrap(" localhost" , tox1.getUdpPort, tox1.getDhtId)
30
60
@@ -49,4 +79,14 @@ class ToxCoreTest {
49
79
delay(tox1.iterationInterval.toLong())
50
80
}
51
81
}
82
+
83
+ private companion object {
84
+ fun fromHex (hex : String ): ByteArray {
85
+ val bytes = ByteArray (hex.length / 2 )
86
+ for (i in bytes.indices) {
87
+ bytes[i] = hex.substring(i * 2 , i * 2 + 2 ).toInt(16 ).toByte()
88
+ }
89
+ return bytes
90
+ }
91
+ }
52
92
}
0 commit comments