summary refs log tree commit diff stats
path: root/query_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'query_test.go')
-rw-r--r--query_test.go87
1 files changed, 87 insertions, 0 deletions
diff --git a/query_test.go b/query_test.go
new file mode 100644
index 0000000..835ba90
--- /dev/null
+++ b/query_test.go
@@ -0,0 +1,87 @@
+package main
+
+import (
+	"net"
+	"reflect"
+	"strings"
+	"testing"
+
+	"github.com/getwtxt/registry"
+)
+
+func Test_parseQueryOut(t *testing.T) {
+	initTestConf()
+
+	urls := "https://gbmor.dev/twtxt.txt"
+	nick := "gbmor"
+
+	out, _, err := registry.GetTwtxt(urls)
+	if err != nil {
+		t.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	statusmap, err := registry.ParseUserTwtxt(out, nick, urls)
+	if err != nil {
+		t.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	err = twtxtCache.AddUser(nick, urls, net.ParseIP("127.0.0.1"), statusmap)
+	if err != nil {
+		t.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	t.Run("Parsing Status Query", func(t *testing.T) {
+		data, err := twtxtCache.QueryAllStatuses()
+		if err != nil {
+			t.Errorf("%v\n", err)
+		}
+
+		out := parseQueryOut(data)
+
+		conv := strings.Split(string(out), "\n")
+
+		// It likes to append an empty element to the end.
+		// I need to fix that in the library.
+		if len(conv) > 0 && conv[len(conv)-1] == "" {
+			conv = conv[:len(conv)-1]
+		}
+
+		if !reflect.DeepEqual(data, conv) {
+			t.Errorf("Pre- and Post- parseQueryOut data are inequal:\n%#v\n%#v\n", data, conv)
+		}
+	})
+}
+
+func Benchmark_parseQueryOut(b *testing.B) {
+	initTestConf()
+
+	urls := "https://gbmor.dev/twtxt.txt"
+	nick := "gbmor"
+
+	out, _, err := registry.GetTwtxt(urls)
+	if err != nil {
+		b.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	statusmap, err := registry.ParseUserTwtxt(out, nick, urls)
+	if err != nil {
+		b.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	err = twtxtCache.AddUser(nick, urls, net.ParseIP("127.0.0.1"), statusmap)
+	if err != nil {
+		b.Errorf("Couldn't set up test: %v\n", err)
+	}
+
+	data, err := twtxtCache.QueryAllStatuses()
+	if err != nil {
+		b.Errorf("%v\n", err)
+	}
+
+	b.ResetTimer()
+
+	for i := 0; i < b.N; i++ {
+		parseQueryOut(data)
+	}
+
+}