aboutsummaryrefslogtreecommitdiff
path: root/v_windows/v/vlib/eventbus/eventbus_test.v
diff options
context:
space:
mode:
Diffstat (limited to 'v_windows/v/vlib/eventbus/eventbus_test.v')
-rw-r--r--v_windows/v/vlib/eventbus/eventbus_test.v109
1 files changed, 109 insertions, 0 deletions
diff --git a/v_windows/v/vlib/eventbus/eventbus_test.v b/v_windows/v/vlib/eventbus/eventbus_test.v
new file mode 100644
index 0000000..e27af88
--- /dev/null
+++ b/v_windows/v/vlib/eventbus/eventbus_test.v
@@ -0,0 +1,109 @@
+import eventbus
+
+struct EventData {
+ data string
+}
+
+struct FakeReceiver {
+ ok bool
+}
+
+fn test_eventbus() {
+ ev_data := &EventData{'hello'}
+ mut eb := eventbus.new()
+ eb.subscriber.subscribe_once('on_test', on_test)
+ assert eb.has_subscriber('on_test')
+ assert eb.subscriber.is_subscribed('on_test')
+ eb.publish('on_test', eb, ev_data)
+ assert !eb.has_subscriber('on_test')
+ assert !eb.subscriber.is_subscribed('on_test')
+ eb.subscriber.subscribe('on_test', on_test)
+ assert eb.has_subscriber('on_test')
+ assert eb.subscriber.is_subscribed('on_test')
+ eb.clear_all()
+ assert !eb.has_subscriber('on_test')
+ assert !eb.subscriber.is_subscribed('on_test')
+}
+
+fn test_subscribe_method() {
+ // Does not really test subscribe_method idinvidually though
+ // given
+ mut eb := eventbus.new()
+ r := FakeReceiver{}
+
+ assert !eb.subscriber.is_subscribed_method('on_test_with_receiver', r)
+ // when
+ eb.subscriber.subscribe_method('on_test_with_receiver', on_test_with_receiver, r)
+
+ // then
+ assert eb.subscriber.is_subscribed_method('on_test_with_receiver', r)
+}
+
+fn test_unsubscribe_method() {
+ // given
+ mut eb := eventbus.new()
+ r := FakeReceiver{}
+ r2 := FakeReceiver{}
+
+ // when
+ eb.subscriber.subscribe_method('on_test_with_receiver', on_test_with_receiver, r)
+ eb.subscriber.subscribe_method('on_test_with_receiver', on_test_with_receiver, r2)
+ eb.subscriber.unsubscribe_method('on_test_with_receiver', r)
+
+ // then
+ assert !eb.subscriber.is_subscribed_method('on_test_with_receiver', r)
+ assert eb.subscriber.is_subscribed_method('on_test_with_receiver', r2)
+}
+
+fn test_publish() {
+ // given
+ ev_data := &EventData{'hello'}
+ mut eb := eventbus.new()
+
+ // when
+ eb.subscriber.subscribe_once('on_test', on_test)
+ eb.subscriber.subscribe_once('on_test', on_test)
+ eb.publish('on_test', eb, ev_data)
+
+ // then
+ assert !eb.subscriber.is_subscribed('on_test')
+}
+
+fn test_publish_with_receiver() {
+ // given
+ mut eb := eventbus.new()
+ ev_data := &EventData{'hello'}
+ r := FakeReceiver{}
+
+ // when
+ eb.subscriber.subscribe_method('on_test_with_receiver', on_test_with_receiver, r)
+ eb.publish('on_test_with_receiver', eb, ev_data)
+
+ // then asserts are in on_test_with_receiver, don't know how to be sure
+ // that it has been properly called...
+}
+
+fn test_unsubscribe_reveiver() {
+ // given
+ mut eb := eventbus.new()
+ r := &FakeReceiver{}
+
+ // when
+ eb.subscriber.subscribe_method('on_test_with_receiver', on_test_with_receiver, r)
+ eb.subscriber.subscribe_method('on_test', on_test, r)
+ eb.subscriber.unsubscribe_receiver(r)
+ assert !eb.subscriber.is_subscribed_method('on_test_with_receiver', r)
+ assert !eb.subscriber.is_subscribed_method('on_test', r)
+}
+
+fn on_test(receiver voidptr, ev &EventData, sender voidptr) {
+ assert receiver == 0
+ assert sender != 0
+ assert ev.data == 'hello'
+}
+
+fn on_test_with_receiver(receiver &FakeReceiver, ev &EventData, sender voidptr) {
+ assert receiver.ok == false
+ assert sender != 0
+ assert ev.data == 'hello'
+}