You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
2.1 KiB
37 lines
2.1 KiB
import com.utun.chat.data.ChatMember |
|
import com.utun.chat.data.parseMemberWire |
|
import com.utun.chat.data.toChatMember |
|
import java.nio.ByteBuffer |
|
import java.nio.ByteOrder |
|
|
|
/* Проверяет реальные классы из app/build/tmp/kotlin-classes/debug после assembleDebug. */ |
|
fun main() { |
|
val offset = 7 |
|
val data = ByteArray(offset + 79) |
|
ByteBuffer.wrap(data, offset, 79).order(ByteOrder.LITTLE_ENDIAN).apply { |
|
putLong(42L); put(1); put(1); put(0x12); putShort(250); put(1); put(1) |
|
put("Member".toByteArray()) |
|
} |
|
val wire = requireNotNull(parseMemberWire(data, offset)) |
|
check(wire.nodeId == 42L && wire.isSelf && wire.name == "Member") |
|
val previous = ChatMember(42L, "old", isVerified = true, nodeType = 4, directUp = true, |
|
indirectUp = true, directPresence = true, indirectPresence = true, bgpPresence = true, |
|
bgpRtt = 321, bgpNodes = 5, connecting = true) |
|
val enabled = wire.toChatMember(previous) |
|
check(enabled.radioActive && enabled.isAdmin && enabled.isStorage && enabled.online) |
|
check(enabled.isVerified && enabled.nodeType == 4 && enabled.directUp && enabled.indirectUp) |
|
check(enabled.directPresence && enabled.indirectPresence && enabled.bgpPresence) |
|
check(enabled.bgpRtt == 321 && enabled.bgpNodes == 5 && enabled.connecting) |
|
check(enabled.rtt == 250 && enabled.name == "Member") |
|
|
|
data[offset + 10] = 2 // Повторное обновление выключает рацию, сохраняя остальные сведения. |
|
val disabled = requireNotNull(parseMemberWire(data, offset)).toChatMember(enabled) |
|
check(!disabled.radioActive && disabled.isVerified && disabled.directUp && disabled.connecting) |
|
data[offset + 10] = 8 |
|
check(requireNotNull(parseMemberWire(data, offset)).toChatMember(disabled).isDeleted) |
|
check(parseMemberWire(data, -1) == null) |
|
check(parseMemberWire(data, Int.MAX_VALUE) == null) |
|
check(parseMemberWire(data, offset + 1) == null) |
|
check(parseMemberWire(ByteArray(78)) == null) |
|
println("PASS: radio on/off; wire offsets; updates preserve verified/type/transports; deleted flag; truncated records") |
|
}
|
|
|