eventenvelope_test.go raw
1 package eventenvelope
2
3 import (
4 "bufio"
5 "bytes"
6 "testing"
7
8 "next.orly.dev/pkg/nostr/encoders/envelopes"
9 "next.orly.dev/pkg/nostr/encoders/event"
10 "next.orly.dev/pkg/nostr/encoders/event/examples"
11 "next.orly.dev/pkg/nostr/utils"
12 "next.orly.dev/pkg/nostr/utils/bufpool"
13 "next.orly.dev/pkg/lol/chk"
14 )
15
16 func TestSubmission(t *testing.T) {
17 scanner := bufio.NewScanner(bytes.NewBuffer(examples.Cache))
18 var err error
19 for scanner.Scan() {
20 c, rem, out := bufpool.Get(), bufpool.Get(), bufpool.Get()
21 b := scanner.Bytes()
22 ev := event.New()
23 if _, err = ev.Unmarshal(b); chk.E(err) {
24 t.Fatal(err)
25 }
26 if len(rem) != 0 {
27 t.Fatalf(
28 "some of input remaining after marshal/unmarshal: '%s'",
29 rem,
30 )
31 }
32 rem = rem[:0]
33 ea := NewSubmissionWith(ev)
34 rem = ea.Marshal(rem)
35 c = append(c, rem...)
36 var l string
37 if l, rem, err = envelopes.Identify(rem); chk.E(err) {
38 t.Fatal(err)
39 }
40 if l != L {
41 t.Fatalf("invalid sentinel %s, expect %s", l, L)
42 }
43 if rem, err = ea.Unmarshal(rem); chk.E(err) {
44 t.Fatal(err)
45 }
46 if len(rem) != 0 {
47 t.Fatalf(
48 "some of input remaining after marshal/unmarshal: '%s'",
49 rem,
50 )
51 }
52 out = ea.Marshal(out)
53 if !utils.FastEqual(out, c) {
54 t.Fatalf("mismatched output\n%s\n\n%s\n", c, out)
55 }
56 bufpool.Put(c)
57 bufpool.Put(rem)
58 bufpool.Put(out)
59 }
60 }
61
62 func TestResult(t *testing.T) {
63 scanner := bufio.NewScanner(bytes.NewBuffer(examples.Cache))
64 var err error
65 var count int
66 for scanner.Scan() {
67 c, rem, out := bufpool.Get(), bufpool.Get(), bufpool.Get()
68 count++
69 b := scanner.Bytes()
70 ev := event.New()
71 if _, err = ev.Unmarshal(b); chk.E(err) {
72 t.Fatal(err)
73 }
74 if len(rem) != 0 {
75 t.Fatalf(
76 "some of input remaining after marshal/unmarshal: '%s'",
77 rem,
78 )
79 }
80 var ea *Result
81 if ea, err = NewResultWith(
82 utils.NewSubscription(count), ev,
83 ); chk.E(err) {
84 t.Fatal(err)
85 }
86 rem = ea.Marshal(rem)
87 c = append(c, rem...)
88 var l string
89 if l, rem, err = envelopes.Identify(rem); chk.E(err) {
90 t.Fatal(err)
91 }
92 if l != L {
93 t.Fatalf("invalid sentinel %s, expect %s", l, L)
94 }
95 if rem, err = ea.Unmarshal(rem); chk.E(err) {
96 t.Fatal(err)
97 }
98 if len(rem) != 0 {
99 t.Fatalf(
100 "some of input remaining after marshal/unmarshal: '%s'",
101 rem,
102 )
103 }
104 out = ea.Marshal(out)
105 if !utils.FastEqual(out, c) {
106 t.Fatalf("mismatched output\n%s\n\n%s\n", c, out)
107 }
108 bufpool.Put(c)
109 bufpool.Put(rem)
110 bufpool.Put(out)
111 }
112 }
113