feat: add all iterators and tests

This commit is contained in:
0x330a 2023-02-03 16:54:48 +11:00
parent f934c79078
commit f7c5953f5d
No known key found for this signature in database
GPG Key ID: 267811D6E6A2698C
3 changed files with 58 additions and 4 deletions

View File

@ -535,6 +535,7 @@ class InstrumentedTests {
assertTrue(seen.contains("1-to-1: 055000000000000000000000000000000000000000000000000000000000000000"))
assertTrue(seen.contains("og: http://example.org:5678/r/sudokuroom"))
assertTrue(seen.contains("cl: 05cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"))
assertTrue(seen.size == 4) // for some reason iterative checks aren't working in test cases
}
assertFalse(convos.needsPush())
@ -543,7 +544,18 @@ class InstrumentedTests {
convos.eraseOneToOne("055000000000000000000000000000000000000000000000000000000000000000")
assertTrue(convos.needsPush())
assertEquals(1, convos.allOneToOnes().size)
assertEquals("051111111111111111111111111111111111111111111111111111111111111111",
convos.allOneToOnes().map(Conversation.OneToOne::sessionId).first()
)
assertEquals(1, convos.allOpenGroups().size)
assertEquals("http://example.org:5678",
convos.allOpenGroups().map(Conversation.OpenGroup::baseUrl).first()
)
assertEquals(1, convos.allLegacyClosedGroups().size)
assertEquals("05cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
convos.allLegacyClosedGroups().map(Conversation.LegacyClosedGroup::groupId).first()
)
}
}

View File

@ -323,14 +323,53 @@ extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_all(JNIEnv *env,
jobject thiz) {
auto contacts = ptrToConvoInfo(env, thiz);
auto convos = ptrToConvoInfo(env, thiz);
jclass stack = env->FindClass("java/util/Stack");
jmethodID init = env->GetMethodID(stack, "<init>", "()V");
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (const auto& contact : *contacts) {
auto contact_obj = serialize_any(env, contact);
for (const auto& convo : *convos) {
auto contact_obj = serialize_any(env, convo);
env->CallObjectMethod(our_stack, push, contact_obj);
}
return our_stack;
}
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_allOneToOnes(JNIEnv *env,
jobject thiz) {
auto convos = ptrToConvoInfo(env, thiz);
jclass stack = env->FindClass("java/util/Stack");
jmethodID init = env->GetMethodID(stack, "<init>", "()V");
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (auto contact = convos->begin_1to1(); contact != convos->end(); ++contact)
env->CallObjectMethod(our_stack, push, serialize_one_to_one(env, *contact));
return our_stack;
}
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_allOpenGroups(JNIEnv *env,
jobject thiz) {
auto convos = ptrToConvoInfo(env, thiz);
jclass stack = env->FindClass("java/util/Stack");
jmethodID init = env->GetMethodID(stack, "<init>", "()V");
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (auto contact = convos->begin_open(); contact != convos->end(); ++contact)
env->CallObjectMethod(our_stack, push, serialize_open_group(env, *contact));
return our_stack;
}
extern "C"
JNIEXPORT jobject JNICALL
Java_network_loki_messenger_libsession_1util_ConversationVolatileConfig_allLegacyClosedGroups(
JNIEnv *env, jobject thiz) {
auto convos = ptrToConvoInfo(env, thiz);
jclass stack = env->FindClass("java/util/Stack");
jmethodID init = env->GetMethodID(stack, "<init>", "()V");
jobject our_stack = env->NewObject(stack, init);
jmethodID push = env->GetMethodID(stack, "push", "(Ljava/lang/Object;)Ljava/lang/Object;");
for (auto contact = convos->begin_legacy_closed(); contact != convos->end(); ++contact)
env->CallObjectMethod(our_stack, push, serialize_legacy_group(env, *contact));
return our_stack;
}

View File

@ -107,6 +107,9 @@ class ConversationVolatileConfig(pointer: Long): ConfigBase(pointer) {
external fun empty(): Boolean
external fun allOneToOnes(): List<Conversation.OneToOne>
external fun allOpenGroups(): List<Conversation.OpenGroup>
external fun allLegacyClosedGroups(): List<Conversation.LegacyClosedGroup>
external fun all(): List<Conversation>
}