From 1a4aa37efd84100abfd5762ff0dad180f45b1ec8 Mon Sep 17 00:00:00 2001
From: a <a@tuxpa.in>
Date: Thu, 13 Jul 2023 22:50:16 -0500
Subject: [PATCH] v2

---
 pkg/codec/wire.go      |  2 +-
 pkg/codec/wire_test.go | 56 ++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 57 insertions(+), 1 deletion(-)
 create mode 100644 pkg/codec/wire_test.go

diff --git a/pkg/codec/wire.go b/pkg/codec/wire.go
index 922e3af..c71f59b 100644
--- a/pkg/codec/wire.go
+++ b/pkg/codec/wire.go
@@ -112,7 +112,7 @@ func (id *ID) RawMessage() json.RawMessage {
 }
 
 // MarshalJSON implements json.Marshaler.
-func (id *ID) MarshalJSON() ([]byte, error) {
+func (id ID) MarshalJSON() ([]byte, error) {
 	return id.RawMessage(), nil
 }
 
diff --git a/pkg/codec/wire_test.go b/pkg/codec/wire_test.go
new file mode 100644
index 0000000..791f11c
--- /dev/null
+++ b/pkg/codec/wire_test.go
@@ -0,0 +1,56 @@
+package codec
+
+import (
+	"encoding/json"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestVersion(t *testing.T) {
+	var v Version
+
+	t.Run("encoding", func(t *testing.T) {
+		ans, err := json.Marshal(v)
+		assert.NoError(t, err)
+		assert.Equal(t, []byte(`"2.0"`), ans)
+	})
+
+	t.Run("decoding", func(t *testing.T) {
+		err := json.Unmarshal([]byte(`"2.0"`), &v)
+		assert.NoError(t, err)
+		err = json.Unmarshal([]byte("not"), &v)
+		assert.Error(t, err)
+	})
+}
+
+func TestID(t *testing.T) {
+
+	var v ID
+
+	t.Run("number", func(t *testing.T) {
+		v = NewNumberID(2)
+		ans, err := json.Marshal(v)
+		assert.NoError(t, err)
+		assert.Equal(t, `2`, string(ans))
+	})
+
+	t.Run("numberstring", func(t *testing.T) {
+		v = NewStringID("2")
+		ans, err := json.Marshal(v)
+		assert.NoError(t, err)
+		assert.Equal(t, `"2"`, string(ans))
+	})
+	t.Run("string", func(t *testing.T) {
+		v = NewStringID("doggo")
+		ans, err := json.Marshal(v)
+		assert.NoError(t, err)
+		assert.Equal(t, `"doggo"`, string(ans))
+	})
+	t.Run("null", func(t *testing.T) {
+		v = NewNullID()
+		ans, err := json.Marshal(v)
+		assert.NoError(t, err)
+		assert.Equal(t, `null`, string(ans))
+	})
+}
-- 
GitLab