summaryrefslogtreecommitdiffhomepage
path: root/helper_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'helper_test.go')
-rw-r--r--helper_test.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/helper_test.go b/helper_test.go
new file mode 100644
index 0000000..41e6b72
--- /dev/null
+++ b/helper_test.go
@@ -0,0 +1,79 @@
+package main
+
+import (
+ "bytes"
+ "os"
+ "testing"
+)
+
+/* Helpers for writing unit tests
+ */
+
+type DummyTUN struct {
+ name string
+ mtu int
+ packets chan []byte
+ events chan TUNEvent
+}
+
+func (tun *DummyTUN) File() *os.File {
+ return nil
+}
+
+func (tun *DummyTUN) Name() string {
+ return tun.name
+}
+
+func (tun *DummyTUN) MTU() (int, error) {
+ return tun.mtu, nil
+}
+
+func (tun *DummyTUN) Write(d []byte, offset int) (int, error) {
+ tun.packets <- d[offset:]
+ return len(d), nil
+}
+
+func (tun *DummyTUN) Close() error {
+ return nil
+}
+
+func (tun *DummyTUN) Events() chan TUNEvent {
+ return tun.events
+}
+
+func (tun *DummyTUN) Read(d []byte, offset int) (int, error) {
+ t := <-tun.packets
+ copy(d[offset:], t)
+ return len(t), nil
+}
+
+func CreateDummyTUN(name string) (TUNDevice, error) {
+ var dummy DummyTUN
+ dummy.mtu = 0
+ dummy.packets = make(chan []byte, 100)
+ return &dummy, nil
+}
+
+func assertNil(t *testing.T, err error) {
+ if err != nil {
+ t.Fatal(err)
+ }
+}
+
+func assertEqual(t *testing.T, a []byte, b []byte) {
+ if bytes.Compare(a, b) != 0 {
+ t.Fatal(a, "!=", b)
+ }
+}
+
+func randDevice(t *testing.T) *Device {
+ sk, err := newPrivateKey()
+ if err != nil {
+ t.Fatal(err)
+ }
+ tun, _ := CreateDummyTUN("dummy")
+ logger := NewLogger(LogLevelError, "")
+ device := NewDevice(tun, logger)
+ device.SetPrivateKey(sk)
+ return device
+}