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.
112 lines
2.3 KiB
112 lines
2.3 KiB
package eventenvelope |
|
|
|
import ( |
|
"bufio" |
|
"bytes" |
|
"testing" |
|
|
|
"encoders.orly/envelopes" |
|
"encoders.orly/event" |
|
"encoders.orly/event/examples" |
|
"lol.mleku.dev/chk" |
|
"utils.orly" |
|
"utils.orly/bufpool" |
|
) |
|
|
|
func TestSubmission(t *testing.T) { |
|
scanner := bufio.NewScanner(bytes.NewBuffer(examples.Cache)) |
|
var err error |
|
for scanner.Scan() { |
|
c, rem, out := bufpool.Get(), bufpool.Get(), bufpool.Get() |
|
b := scanner.Bytes() |
|
ev := event.New() |
|
if _, err = ev.Unmarshal(b); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if len(rem) != 0 { |
|
t.Fatalf( |
|
"some of input remaining after marshal/unmarshal: '%s'", |
|
rem, |
|
) |
|
} |
|
rem = rem[:0] |
|
ea := NewSubmissionWith(ev) |
|
rem = ea.Marshal(rem) |
|
c = append(c, rem...) |
|
var l string |
|
if l, rem, err = envelopes.Identify(rem); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if l != L { |
|
t.Fatalf("invalid sentinel %s, expect %s", l, L) |
|
} |
|
if rem, err = ea.Unmarshal(rem); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if len(rem) != 0 { |
|
t.Fatalf( |
|
"some of input remaining after marshal/unmarshal: '%s'", |
|
rem, |
|
) |
|
} |
|
out = ea.Marshal(out) |
|
if !utils.FastEqual(out, c) { |
|
t.Fatalf("mismatched output\n%s\n\n%s\n", c, out) |
|
} |
|
bufpool.Put(c) |
|
bufpool.Put(rem) |
|
bufpool.Put(out) |
|
} |
|
} |
|
|
|
func TestResult(t *testing.T) { |
|
scanner := bufio.NewScanner(bytes.NewBuffer(examples.Cache)) |
|
var err error |
|
var count int |
|
for scanner.Scan() { |
|
c, rem, out := bufpool.Get(), bufpool.Get(), bufpool.Get() |
|
count++ |
|
b := scanner.Bytes() |
|
ev := event.New() |
|
if _, err = ev.Unmarshal(b); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if len(rem) != 0 { |
|
t.Fatalf( |
|
"some of input remaining after marshal/unmarshal: '%s'", |
|
rem, |
|
) |
|
} |
|
var ea *Result |
|
if ea, err = NewResultWith( |
|
utils.NewSubscription(count), ev, |
|
); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
rem = ea.Marshal(rem) |
|
c = append(c, rem...) |
|
var l string |
|
if l, rem, err = envelopes.Identify(rem); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if l != L { |
|
t.Fatalf("invalid sentinel %s, expect %s", l, L) |
|
} |
|
if rem, err = ea.Unmarshal(rem); chk.E(err) { |
|
t.Fatal(err) |
|
} |
|
if len(rem) != 0 { |
|
t.Fatalf( |
|
"some of input remaining after marshal/unmarshal: '%s'", |
|
rem, |
|
) |
|
} |
|
out = ea.Marshal(out) |
|
if !utils.FastEqual(out, c) { |
|
t.Fatalf("mismatched output\n%s\n\n%s\n", c, out) |
|
} |
|
bufpool.Put(c) |
|
bufpool.Put(rem) |
|
bufpool.Put(out) |
|
} |
|
}
|
|
|