From c9a2dcad62ad67eae246af2ebe23b5aff84e15cf Mon Sep 17 00:00:00 2001 From: mshadow Date: Thu, 8 Apr 2021 15:19:55 +0800 Subject: [PATCH 1/2] Implements json.Marshaler and json.Unmarshaler --- lists/arraylist/serialization.go | 12 ++++++++++++ lists/doublylinkedlist/serialization.go | 12 ++++++++++++ lists/singlylinkedlist/serialization.go | 12 ++++++++++++ maps/hashbidimap/serialization.go | 12 ++++++++++++ maps/hashmap/serialization.go | 12 ++++++++++++ maps/linkedhashmap/serialization.go | 12 ++++++++++++ maps/treebidimap/serialization.go | 12 ++++++++++++ maps/treemap/serialization.go | 18 +++++++++++++++++- sets/hashset/serialization.go | 12 ++++++++++++ sets/linkedhashset/serialization.go | 12 ++++++++++++ sets/treeset/serialization.go | 12 ++++++++++++ stacks/arraystack/serialization.go | 18 +++++++++++++++++- stacks/linkedliststack/serialization.go | 18 +++++++++++++++++- trees/avltree/serialization.go | 12 ++++++++++++ trees/binaryheap/serialization.go | 18 +++++++++++++++++- trees/btree/serialization.go | 12 ++++++++++++ trees/redblacktree/serialization.go | 12 ++++++++++++ 17 files changed, 224 insertions(+), 4 deletions(-) diff --git a/lists/arraylist/serialization.go b/lists/arraylist/serialization.go index 2f283fb..eeaaa4d 100644 --- a/lists/arraylist/serialization.go +++ b/lists/arraylist/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) + var _ json.Marshaler = (*List)(nil) + var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -27,3 +29,13 @@ func (list *List) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (list *List) UnmarshalJSON(bytes []byte) error { + return list.FromJSON(bytes) +} + +// @implements json.Marshaler +func (list *List) MarshalJSON() ([]byte, error) { + return list.ToJSON() +} diff --git a/lists/doublylinkedlist/serialization.go b/lists/doublylinkedlist/serialization.go index 6018d80..a61d9ba 100644 --- a/lists/doublylinkedlist/serialization.go +++ b/lists/doublylinkedlist/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) + var _ json.Marshaler = (*List)(nil) + var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -29,3 +31,13 @@ func (list *List) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (list *List) UnmarshalJSON(bytes []byte) error { + return list.FromJSON(bytes) +} + +// @implements json.Marshaler +func (list *List) MarshalJSON() ([]byte, error) { + return list.ToJSON() +} diff --git a/lists/singlylinkedlist/serialization.go b/lists/singlylinkedlist/serialization.go index 324f1d9..74ce75f 100644 --- a/lists/singlylinkedlist/serialization.go +++ b/lists/singlylinkedlist/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) + var _ json.Marshaler = (*List)(nil) + var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -29,3 +31,13 @@ func (list *List) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (list *List) UnmarshalJSON(bytes []byte) error { + return list.FromJSON(bytes) +} + +// @implements json.Marshaler +func (list *List) MarshalJSON() ([]byte, error) { + return list.ToJSON() +} diff --git a/maps/hashbidimap/serialization.go b/maps/hashbidimap/serialization.go index 3db41d4..e05c4e8 100644 --- a/maps/hashbidimap/serialization.go +++ b/maps/hashbidimap/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) + var _ json.Marshaler = (*Map)(nil) + var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -31,3 +33,13 @@ func (m *Map) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (m *Map) UnmarshalJSON(bytes []byte) error { + return m.FromJSON(bytes) +} + +// @implements json.Marshaler +func (m *Map) MarshalJSON() ([]byte, error) { + return m.ToJSON() +} diff --git a/maps/hashmap/serialization.go b/maps/hashmap/serialization.go index b06eb7e..8fe78fa 100644 --- a/maps/hashmap/serialization.go +++ b/maps/hashmap/serialization.go @@ -13,6 +13,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) + var _ json.Marshaler = (*Map)(nil) + var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -36,3 +38,13 @@ func (m *Map) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (m *Map) UnmarshalJSON(bytes []byte) error { + return m.FromJSON(bytes) +} + +// @implements json.Marshaler +func (m *Map) MarshalJSON() ([]byte, error) { + return m.ToJSON() +} diff --git a/maps/linkedhashmap/serialization.go b/maps/linkedhashmap/serialization.go index 4f723cf..a628b91 100644 --- a/maps/linkedhashmap/serialization.go +++ b/maps/linkedhashmap/serialization.go @@ -14,6 +14,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) + var _ json.Marshaler = (*Map)(nil) + var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of map. @@ -101,3 +103,13 @@ func (m *Map) FromJSON(data []byte) error { return nil } + +// @implements json.Unmarshaler +func (m *Map) UnmarshalJSON(bytes []byte) error { + return m.FromJSON(bytes) +} + +// @implements json.Marshaler +func (m *Map) MarshalJSON() ([]byte, error) { + return m.ToJSON() +} diff --git a/maps/treebidimap/serialization.go b/maps/treebidimap/serialization.go index 17204f9..488d2a0 100644 --- a/maps/treebidimap/serialization.go +++ b/maps/treebidimap/serialization.go @@ -13,6 +13,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) + var _ json.Marshaler = (*Map)(nil) + var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -37,3 +39,13 @@ func (m *Map) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (m *Map) UnmarshalJSON(bytes []byte) error { + return m.FromJSON(bytes) +} + +// @implements json.Marshaler +func (m *Map) MarshalJSON() ([]byte, error) { + return m.ToJSON() +} diff --git a/maps/treemap/serialization.go b/maps/treemap/serialization.go index d856300..d6b2d10 100644 --- a/maps/treemap/serialization.go +++ b/maps/treemap/serialization.go @@ -4,11 +4,17 @@ package treemap -import "github.com/emirpasic/gods/containers" +import ( + "encoding/json" + + "github.com/emirpasic/gods/containers" +) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) + var _ json.Marshaler = (*Map)(nil) + var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -20,3 +26,13 @@ func (m *Map) ToJSON() ([]byte, error) { func (m *Map) FromJSON(data []byte) error { return m.tree.FromJSON(data) } + +// @implements json.Unmarshaler +func (m *Map) UnmarshalJSON(bytes []byte) error { + return m.FromJSON(bytes) +} + +// @implements json.Marshaler +func (m *Map) MarshalJSON() ([]byte, error) { + return m.ToJSON() +} diff --git a/sets/hashset/serialization.go b/sets/hashset/serialization.go index 7b8506d..f93b0cb 100644 --- a/sets/hashset/serialization.go +++ b/sets/hashset/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) + var _ json.Marshaler = (*Set)(nil) + var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -29,3 +31,13 @@ func (set *Set) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (set *Set) UnmarshalJSON(bytes []byte) error { + return set.FromJSON(bytes) +} + +// @implements json.Marshaler +func (set *Set) MarshalJSON() ([]byte, error) { + return set.ToJSON() +} diff --git a/sets/linkedhashset/serialization.go b/sets/linkedhashset/serialization.go index 7e7d291..4e84be9 100644 --- a/sets/linkedhashset/serialization.go +++ b/sets/linkedhashset/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) + var _ json.Marshaler = (*Set)(nil) + var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -29,3 +31,13 @@ func (set *Set) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (set *Set) UnmarshalJSON(bytes []byte) error { + return set.FromJSON(bytes) +} + +// @implements json.Marshaler +func (set *Set) MarshalJSON() ([]byte, error) { + return set.ToJSON() +} diff --git a/sets/treeset/serialization.go b/sets/treeset/serialization.go index a53bfcc..a74ad6d 100644 --- a/sets/treeset/serialization.go +++ b/sets/treeset/serialization.go @@ -12,6 +12,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) + var _ json.Marshaler = (*Set)(nil) + var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -29,3 +31,13 @@ func (set *Set) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (set *Set) UnmarshalJSON(bytes []byte) error { + return set.FromJSON(bytes) +} + +// @implements json.Marshaler +func (set *Set) MarshalJSON() ([]byte, error) { + return set.ToJSON() +} diff --git a/stacks/arraystack/serialization.go b/stacks/arraystack/serialization.go index c4ff549..6d26fa7 100644 --- a/stacks/arraystack/serialization.go +++ b/stacks/arraystack/serialization.go @@ -4,11 +4,17 @@ package arraystack -import "github.com/emirpasic/gods/containers" +import ( + "encoding/json" + + "github.com/emirpasic/gods/containers" +) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Stack)(nil) var _ containers.JSONDeserializer = (*Stack)(nil) + var _ json.Marshaler = (*Stack)(nil) + var _ json.Unmarshaler = (*Stack)(nil) } // ToJSON outputs the JSON representation of the stack. @@ -20,3 +26,13 @@ func (stack *Stack) ToJSON() ([]byte, error) { func (stack *Stack) FromJSON(data []byte) error { return stack.list.FromJSON(data) } + +// @implements json.Unmarshaler +func (stack *Stack) UnmarshalJSON(bytes []byte) error { + return stack.FromJSON(bytes) +} + +// @implements json.Marshaler +func (stack *Stack) MarshalJSON() ([]byte, error) { + return stack.ToJSON() +} diff --git a/stacks/linkedliststack/serialization.go b/stacks/linkedliststack/serialization.go index 63337a1..fce1511 100644 --- a/stacks/linkedliststack/serialization.go +++ b/stacks/linkedliststack/serialization.go @@ -4,11 +4,17 @@ package linkedliststack -import "github.com/emirpasic/gods/containers" +import ( + "encoding/json" + + "github.com/emirpasic/gods/containers" +) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Stack)(nil) var _ containers.JSONDeserializer = (*Stack)(nil) + var _ json.Marshaler = (*Stack)(nil) + var _ json.Unmarshaler = (*Stack)(nil) } // ToJSON outputs the JSON representation of the stack. @@ -20,3 +26,13 @@ func (stack *Stack) ToJSON() ([]byte, error) { func (stack *Stack) FromJSON(data []byte) error { return stack.list.FromJSON(data) } + +// @implements json.Unmarshaler +func (stack *Stack) UnmarshalJSON(bytes []byte) error { + return stack.FromJSON(bytes) +} + +// @implements json.Marshaler +func (stack *Stack) MarshalJSON() ([]byte, error) { + return stack.ToJSON() +} diff --git a/trees/avltree/serialization.go b/trees/avltree/serialization.go index 363de7f..79d4e5e 100644 --- a/trees/avltree/serialization.go +++ b/trees/avltree/serialization.go @@ -13,6 +13,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) + var _ json.Marshaler = (*Tree)(nil) + var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -37,3 +39,13 @@ func (tree *Tree) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (tree *Tree) UnmarshalJSON(bytes []byte) error { + return tree.FromJSON(bytes) +} + +// @implements json.Marshaler +func (tree *Tree) MarshalJSON() ([]byte, error) { + return tree.ToJSON() +} diff --git a/trees/binaryheap/serialization.go b/trees/binaryheap/serialization.go index 00d0c77..e0d2a93 100644 --- a/trees/binaryheap/serialization.go +++ b/trees/binaryheap/serialization.go @@ -4,11 +4,17 @@ package binaryheap -import "github.com/emirpasic/gods/containers" +import ( + "encoding/json" + + "github.com/emirpasic/gods/containers" +) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Heap)(nil) var _ containers.JSONDeserializer = (*Heap)(nil) + var _ json.Marshaler = (*Heap)(nil) + var _ json.Unmarshaler = (*Heap)(nil) } // ToJSON outputs the JSON representation of the heap. @@ -20,3 +26,13 @@ func (heap *Heap) ToJSON() ([]byte, error) { func (heap *Heap) FromJSON(data []byte) error { return heap.list.FromJSON(data) } + +// @implements json.Unmarshaler +func (heap *Heap) UnmarshalJSON(bytes []byte) error { + return heap.FromJSON(bytes) +} + +// @implements json.Marshaler +func (heap *Heap) MarshalJSON() ([]byte, error) { + return heap.ToJSON() +} diff --git a/trees/btree/serialization.go b/trees/btree/serialization.go index 4385167..75ef728 100644 --- a/trees/btree/serialization.go +++ b/trees/btree/serialization.go @@ -13,6 +13,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) + var _ json.Marshaler = (*Tree)(nil) + var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -37,3 +39,13 @@ func (tree *Tree) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (tree *Tree) UnmarshalJSON(bytes []byte) error { + return tree.FromJSON(bytes) +} + +// @implements json.Marshaler +func (tree *Tree) MarshalJSON() ([]byte, error) { + return tree.ToJSON() +} diff --git a/trees/redblacktree/serialization.go b/trees/redblacktree/serialization.go index a1b8a77..84c4821 100644 --- a/trees/redblacktree/serialization.go +++ b/trees/redblacktree/serialization.go @@ -13,6 +13,8 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) + var _ json.Marshaler = (*Tree)(nil) + var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -37,3 +39,13 @@ func (tree *Tree) FromJSON(data []byte) error { } return err } + +// @implements json.Unmarshaler +func (tree *Tree) UnmarshalJSON(bytes []byte) error { + return tree.FromJSON(bytes) +} + +// @implements json.Marshaler +func (tree *Tree) MarshalJSON() ([]byte, error) { + return tree.ToJSON() +} From 1f0b87f0e17d460400ba4ab1f1b9f172ef39bafa Mon Sep 17 00:00:00 2001 From: Emir Pasic Date: Tue, 12 Apr 2022 04:31:44 +0200 Subject: [PATCH 2/2] Implements json.Marshaler and json.Unmarshaler interfaces --- containers/serialization.go | 4 ++++ lists/arraylist/arraylist_test.go | 10 ++++++++-- lists/arraylist/serialization.go | 6 ++---- lists/doublylinkedlist/doublylinkedlist_test.go | 10 ++++++++-- lists/doublylinkedlist/serialization.go | 6 ++---- lists/singlylinkedlist/serialization.go | 6 ++---- lists/singlylinkedlist/singlylinkedlist_test.go | 10 ++++++++-- maps/hashbidimap/hashbidimap_test.go | 10 ++++++++-- maps/hashbidimap/serialization.go | 6 ++---- maps/hashmap/hashmap_test.go | 10 ++++++++-- maps/hashmap/serialization.go | 6 ++---- maps/linkedhashmap/linkedhashmap_test.go | 11 +++++++++++ maps/linkedhashmap/serialization.go | 6 ++---- maps/treebidimap/serialization.go | 6 ++---- maps/treebidimap/treebidimap_test.go | 11 +++++++++++ maps/treemap/serialization.go | 8 ++------ maps/treemap/treemap_test.go | 11 +++++++++++ sets/hashset/hashset_test.go | 10 ++++++++-- sets/hashset/serialization.go | 6 ++---- sets/linkedhashset/linkedhashset_test.go | 10 ++++++++-- sets/linkedhashset/serialization.go | 6 ++---- sets/treeset/serialization.go | 6 ++---- sets/treeset/treeset_test.go | 10 ++++++++-- stacks/arraystack/arraystack_test.go | 10 ++++++++-- stacks/arraystack/serialization.go | 8 ++------ stacks/linkedliststack/linkedliststack_test.go | 10 ++++++++-- stacks/linkedliststack/serialization.go | 8 ++------ trees/avltree/avltree_test.go | 10 ++++++++-- trees/avltree/serialization.go | 6 ++---- trees/binaryheap/binaryheap_test.go | 10 ++++++++-- trees/binaryheap/serialization.go | 8 ++------ trees/btree/btree_test.go | 10 ++++++++-- trees/btree/serialization.go | 6 ++---- trees/redblacktree/redblacktree_test.go | 10 ++++++++-- trees/redblacktree/serialization.go | 6 ++---- 35 files changed, 183 insertions(+), 104 deletions(-) diff --git a/containers/serialization.go b/containers/serialization.go index d7c90c8..fd9cbe2 100644 --- a/containers/serialization.go +++ b/containers/serialization.go @@ -8,10 +8,14 @@ package containers type JSONSerializer interface { // ToJSON outputs the JSON representation of containers's elements. ToJSON() ([]byte, error) + // MarshalJSON @implements json.Marshaler + MarshalJSON() ([]byte, error) } // JSONDeserializer provides JSON deserialization type JSONDeserializer interface { // FromJSON populates containers's elements from the input JSON representation. FromJSON([]byte) error + // UnmarshalJSON @implements json.Unmarshaler + UnmarshalJSON([]byte) error } diff --git a/lists/arraylist/arraylist_test.go b/lists/arraylist/arraylist_test.go index 88d7689..2a704d1 100644 --- a/lists/arraylist/arraylist_test.go +++ b/lists/arraylist/arraylist_test.go @@ -5,6 +5,7 @@ package arraylist import ( + "encoding/json" "fmt" "github.com/emirpasic/gods/utils" "strings" @@ -620,11 +621,16 @@ func TestListSerialization(t *testing.T) { assert() - json, err := list.ToJSON() + bytes, err := list.ToJSON() assert() - err = list.FromJSON(json) + err = list.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", list}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, list *List, size int) { diff --git a/lists/arraylist/serialization.go b/lists/arraylist/serialization.go index eeaaa4d..402298f 100644 --- a/lists/arraylist/serialization.go +++ b/lists/arraylist/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) - var _ json.Marshaler = (*List)(nil) - var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -30,12 +28,12 @@ func (list *List) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (list *List) UnmarshalJSON(bytes []byte) error { return list.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (list *List) MarshalJSON() ([]byte, error) { return list.ToJSON() } diff --git a/lists/doublylinkedlist/doublylinkedlist_test.go b/lists/doublylinkedlist/doublylinkedlist_test.go index 2e6b0c9..911da77 100644 --- a/lists/doublylinkedlist/doublylinkedlist_test.go +++ b/lists/doublylinkedlist/doublylinkedlist_test.go @@ -5,6 +5,7 @@ package doublylinkedlist import ( + "encoding/json" "fmt" "strings" "testing" @@ -626,11 +627,16 @@ func TestListSerialization(t *testing.T) { assert() - json, err := list.ToJSON() + bytes, err := list.ToJSON() assert() - err = list.FromJSON(json) + err = list.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", list}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, list *List, size int) { diff --git a/lists/doublylinkedlist/serialization.go b/lists/doublylinkedlist/serialization.go index a61d9ba..ce0fb01 100644 --- a/lists/doublylinkedlist/serialization.go +++ b/lists/doublylinkedlist/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) - var _ json.Marshaler = (*List)(nil) - var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -32,12 +30,12 @@ func (list *List) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (list *List) UnmarshalJSON(bytes []byte) error { return list.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (list *List) MarshalJSON() ([]byte, error) { return list.ToJSON() } diff --git a/lists/singlylinkedlist/serialization.go b/lists/singlylinkedlist/serialization.go index 74ce75f..adcc575 100644 --- a/lists/singlylinkedlist/serialization.go +++ b/lists/singlylinkedlist/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*List)(nil) var _ containers.JSONDeserializer = (*List)(nil) - var _ json.Marshaler = (*List)(nil) - var _ json.Unmarshaler = (*List)(nil) } // ToJSON outputs the JSON representation of list's elements. @@ -32,12 +30,12 @@ func (list *List) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (list *List) UnmarshalJSON(bytes []byte) error { return list.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (list *List) MarshalJSON() ([]byte, error) { return list.ToJSON() } diff --git a/lists/singlylinkedlist/singlylinkedlist_test.go b/lists/singlylinkedlist/singlylinkedlist_test.go index 3023a8e..97eb78b 100644 --- a/lists/singlylinkedlist/singlylinkedlist_test.go +++ b/lists/singlylinkedlist/singlylinkedlist_test.go @@ -5,6 +5,7 @@ package singlylinkedlist import ( + "encoding/json" "fmt" "strings" "testing" @@ -489,11 +490,16 @@ func TestListSerialization(t *testing.T) { assert() - json, err := list.ToJSON() + bytes, err := list.ToJSON() assert() - err = list.FromJSON(json) + err = list.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", list}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, list *List, size int) { diff --git a/maps/hashbidimap/hashbidimap_test.go b/maps/hashbidimap/hashbidimap_test.go index 96e4688..8b607f4 100644 --- a/maps/hashbidimap/hashbidimap_test.go +++ b/maps/hashbidimap/hashbidimap_test.go @@ -5,6 +5,7 @@ package hashbidimap import ( + "encoding/json" "fmt" "testing" ) @@ -174,11 +175,16 @@ func TestMapSerialization(t *testing.T) { assert() - json, err := m.ToJSON() + bytes, err := m.ToJSON() assert() - err = m.FromJSON(json) + err = m.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", m}) + if err != nil { + t.Errorf("Got error %v", err) + } } func sameElements(a []interface{}, b []interface{}) bool { diff --git a/maps/hashbidimap/serialization.go b/maps/hashbidimap/serialization.go index e05c4e8..dff7801 100644 --- a/maps/hashbidimap/serialization.go +++ b/maps/hashbidimap/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) - var _ json.Marshaler = (*Map)(nil) - var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -34,12 +32,12 @@ func (m *Map) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (m *Map) UnmarshalJSON(bytes []byte) error { return m.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (m *Map) MarshalJSON() ([]byte, error) { return m.ToJSON() } diff --git a/maps/hashmap/hashmap_test.go b/maps/hashmap/hashmap_test.go index 7122574..1496680 100644 --- a/maps/hashmap/hashmap_test.go +++ b/maps/hashmap/hashmap_test.go @@ -5,6 +5,7 @@ package hashmap import ( + "encoding/json" "fmt" "testing" ) @@ -142,11 +143,16 @@ func TestMapSerialization(t *testing.T) { assert() - json, err := m.ToJSON() + bytes, err := m.ToJSON() assert() - err = m.FromJSON(json) + err = m.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", m}) + if err != nil { + t.Errorf("Got error %v", err) + } } func sameElements(a []interface{}, b []interface{}) bool { diff --git a/maps/hashmap/serialization.go b/maps/hashmap/serialization.go index 8fe78fa..dc2e259 100644 --- a/maps/hashmap/serialization.go +++ b/maps/hashmap/serialization.go @@ -13,8 +13,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) - var _ json.Marshaler = (*Map)(nil) - var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -39,12 +37,12 @@ func (m *Map) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (m *Map) UnmarshalJSON(bytes []byte) error { return m.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (m *Map) MarshalJSON() ([]byte, error) { return m.ToJSON() } diff --git a/maps/linkedhashmap/linkedhashmap_test.go b/maps/linkedhashmap/linkedhashmap_test.go index 912e7f3..ac7b994 100644 --- a/maps/linkedhashmap/linkedhashmap_test.go +++ b/maps/linkedhashmap/linkedhashmap_test.go @@ -5,6 +5,7 @@ package linkedhashmap import ( + "encoding/json" "fmt" "strings" "testing" @@ -571,6 +572,16 @@ func TestMapSerialization(t *testing.T) { } assertSerialization(deserialized, "C", t) } + + m := New() + m.Put("a", 1.0) + m.Put("b", 2.0) + m.Put("c", 3.0) + + _, err := json.Marshal([]interface{}{"a", "b", "c", m}) + if err != nil { + t.Errorf("Got error %v", err) + } } //noinspection GoBoolExpressions diff --git a/maps/linkedhashmap/serialization.go b/maps/linkedhashmap/serialization.go index a628b91..805421d 100644 --- a/maps/linkedhashmap/serialization.go +++ b/maps/linkedhashmap/serialization.go @@ -14,8 +14,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) - var _ json.Marshaler = (*Map)(nil) - var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of map. @@ -104,12 +102,12 @@ func (m *Map) FromJSON(data []byte) error { return nil } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (m *Map) UnmarshalJSON(bytes []byte) error { return m.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (m *Map) MarshalJSON() ([]byte, error) { return m.ToJSON() } diff --git a/maps/treebidimap/serialization.go b/maps/treebidimap/serialization.go index 488d2a0..e7ee0c2 100644 --- a/maps/treebidimap/serialization.go +++ b/maps/treebidimap/serialization.go @@ -13,8 +13,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) - var _ json.Marshaler = (*Map)(nil) - var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -40,12 +38,12 @@ func (m *Map) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (m *Map) UnmarshalJSON(bytes []byte) error { return m.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (m *Map) MarshalJSON() ([]byte, error) { return m.ToJSON() } diff --git a/maps/treebidimap/treebidimap_test.go b/maps/treebidimap/treebidimap_test.go index e1150fc..acd3270 100644 --- a/maps/treebidimap/treebidimap_test.go +++ b/maps/treebidimap/treebidimap_test.go @@ -5,6 +5,7 @@ package treebidimap import ( + "encoding/json" "fmt" "github.com/emirpasic/gods/utils" "strings" @@ -604,6 +605,16 @@ func TestMapSerialization(t *testing.T) { } assertSerialization(deserialized, "C", t) } + + m := NewWith(utils.StringComparator, utils.Float64Comparator) + m.Put("a", 1.0) + m.Put("b", 2.0) + m.Put("c", 3.0) + + _, err := json.Marshal([]interface{}{"a", "b", "c", m}) + if err != nil { + t.Errorf("Got error %v", err) + } } //noinspection GoBoolExpressions diff --git a/maps/treemap/serialization.go b/maps/treemap/serialization.go index d6b2d10..619a6a7 100644 --- a/maps/treemap/serialization.go +++ b/maps/treemap/serialization.go @@ -5,16 +5,12 @@ package treemap import ( - "encoding/json" - "github.com/emirpasic/gods/containers" ) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Map)(nil) var _ containers.JSONDeserializer = (*Map)(nil) - var _ json.Marshaler = (*Map)(nil) - var _ json.Unmarshaler = (*Map)(nil) } // ToJSON outputs the JSON representation of the map. @@ -27,12 +23,12 @@ func (m *Map) FromJSON(data []byte) error { return m.tree.FromJSON(data) } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (m *Map) UnmarshalJSON(bytes []byte) error { return m.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (m *Map) MarshalJSON() ([]byte, error) { return m.ToJSON() } diff --git a/maps/treemap/treemap_test.go b/maps/treemap/treemap_test.go index 05155a2..92e9612 100644 --- a/maps/treemap/treemap_test.go +++ b/maps/treemap/treemap_test.go @@ -5,6 +5,7 @@ package treemap import ( + "encoding/json" "fmt" "strings" "testing" @@ -627,6 +628,16 @@ func TestMapSerialization(t *testing.T) { } assertSerialization(deserialized, "C", t) } + + m := NewWithStringComparator() + m.Put("a", 1.0) + m.Put("b", 2.0) + m.Put("c", 3.0) + + _, err := json.Marshal([]interface{}{"a", "b", "c", m}) + if err != nil { + t.Errorf("Got error %v", err) + } } //noinspection GoBoolExpressions diff --git a/sets/hashset/hashset_test.go b/sets/hashset/hashset_test.go index cf63c89..4351338 100644 --- a/sets/hashset/hashset_test.go +++ b/sets/hashset/hashset_test.go @@ -5,6 +5,7 @@ package hashset import ( + "encoding/json" "testing" ) @@ -98,11 +99,16 @@ func TestSetSerialization(t *testing.T) { assert() - json, err := set.ToJSON() + bytes, err := set.ToJSON() assert() - err = set.FromJSON(json) + err = set.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", set}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkContains(b *testing.B, set *Set, size int) { diff --git a/sets/hashset/serialization.go b/sets/hashset/serialization.go index f93b0cb..b0353e8 100644 --- a/sets/hashset/serialization.go +++ b/sets/hashset/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) - var _ json.Marshaler = (*Set)(nil) - var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -32,12 +30,12 @@ func (set *Set) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (set *Set) UnmarshalJSON(bytes []byte) error { return set.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (set *Set) MarshalJSON() ([]byte, error) { return set.ToJSON() } diff --git a/sets/linkedhashset/linkedhashset_test.go b/sets/linkedhashset/linkedhashset_test.go index b77e5ec..59db9ad 100644 --- a/sets/linkedhashset/linkedhashset_test.go +++ b/sets/linkedhashset/linkedhashset_test.go @@ -5,6 +5,7 @@ package linkedhashset import ( + "encoding/json" "fmt" "strings" "testing" @@ -452,11 +453,16 @@ func TestSetSerialization(t *testing.T) { assert() - json, err := set.ToJSON() + bytes, err := set.ToJSON() assert() - err = set.FromJSON(json) + err = set.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", set}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkContains(b *testing.B, set *Set, size int) { diff --git a/sets/linkedhashset/serialization.go b/sets/linkedhashset/serialization.go index 4e84be9..33b3fef 100644 --- a/sets/linkedhashset/serialization.go +++ b/sets/linkedhashset/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) - var _ json.Marshaler = (*Set)(nil) - var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -32,12 +30,12 @@ func (set *Set) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (set *Set) UnmarshalJSON(bytes []byte) error { return set.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (set *Set) MarshalJSON() ([]byte, error) { return set.ToJSON() } diff --git a/sets/treeset/serialization.go b/sets/treeset/serialization.go index a74ad6d..a17eb78 100644 --- a/sets/treeset/serialization.go +++ b/sets/treeset/serialization.go @@ -12,8 +12,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Set)(nil) var _ containers.JSONDeserializer = (*Set)(nil) - var _ json.Marshaler = (*Set)(nil) - var _ json.Unmarshaler = (*Set)(nil) } // ToJSON outputs the JSON representation of the set. @@ -32,12 +30,12 @@ func (set *Set) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (set *Set) UnmarshalJSON(bytes []byte) error { return set.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (set *Set) MarshalJSON() ([]byte, error) { return set.ToJSON() } diff --git a/sets/treeset/treeset_test.go b/sets/treeset/treeset_test.go index 8571887..20a6f6a 100644 --- a/sets/treeset/treeset_test.go +++ b/sets/treeset/treeset_test.go @@ -5,6 +5,7 @@ package treeset import ( + "encoding/json" "fmt" "strings" "testing" @@ -461,11 +462,16 @@ func TestSetSerialization(t *testing.T) { assert() - json, err := set.ToJSON() + bytes, err := set.ToJSON() assert() - err = set.FromJSON(json) + err = set.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", set}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkContains(b *testing.B, set *Set, size int) { diff --git a/stacks/arraystack/arraystack_test.go b/stacks/arraystack/arraystack_test.go index 0596217..d15e7eb 100644 --- a/stacks/arraystack/arraystack_test.go +++ b/stacks/arraystack/arraystack_test.go @@ -5,6 +5,7 @@ package arraystack import ( + "encoding/json" "fmt" "strings" "testing" @@ -360,11 +361,16 @@ func TestStackSerialization(t *testing.T) { assert() - json, err := stack.ToJSON() + bytes, err := stack.ToJSON() assert() - err = stack.FromJSON(json) + err = stack.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", stack}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkPush(b *testing.B, stack *Stack, size int) { diff --git a/stacks/arraystack/serialization.go b/stacks/arraystack/serialization.go index 6d26fa7..1456c9e 100644 --- a/stacks/arraystack/serialization.go +++ b/stacks/arraystack/serialization.go @@ -5,16 +5,12 @@ package arraystack import ( - "encoding/json" - "github.com/emirpasic/gods/containers" ) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Stack)(nil) var _ containers.JSONDeserializer = (*Stack)(nil) - var _ json.Marshaler = (*Stack)(nil) - var _ json.Unmarshaler = (*Stack)(nil) } // ToJSON outputs the JSON representation of the stack. @@ -27,12 +23,12 @@ func (stack *Stack) FromJSON(data []byte) error { return stack.list.FromJSON(data) } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (stack *Stack) UnmarshalJSON(bytes []byte) error { return stack.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (stack *Stack) MarshalJSON() ([]byte, error) { return stack.ToJSON() } diff --git a/stacks/linkedliststack/linkedliststack_test.go b/stacks/linkedliststack/linkedliststack_test.go index aeebc31..6b34e39 100644 --- a/stacks/linkedliststack/linkedliststack_test.go +++ b/stacks/linkedliststack/linkedliststack_test.go @@ -5,6 +5,7 @@ package linkedliststack import ( + "encoding/json" "fmt" "strings" "testing" @@ -222,11 +223,16 @@ func TestStackSerialization(t *testing.T) { assert() - json, err := stack.ToJSON() + bytes, err := stack.ToJSON() assert() - err = stack.FromJSON(json) + err = stack.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", stack}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkPush(b *testing.B, stack *Stack, size int) { diff --git a/stacks/linkedliststack/serialization.go b/stacks/linkedliststack/serialization.go index fce1511..3beb7a8 100644 --- a/stacks/linkedliststack/serialization.go +++ b/stacks/linkedliststack/serialization.go @@ -5,16 +5,12 @@ package linkedliststack import ( - "encoding/json" - "github.com/emirpasic/gods/containers" ) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Stack)(nil) var _ containers.JSONDeserializer = (*Stack)(nil) - var _ json.Marshaler = (*Stack)(nil) - var _ json.Unmarshaler = (*Stack)(nil) } // ToJSON outputs the JSON representation of the stack. @@ -27,12 +23,12 @@ func (stack *Stack) FromJSON(data []byte) error { return stack.list.FromJSON(data) } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (stack *Stack) UnmarshalJSON(bytes []byte) error { return stack.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (stack *Stack) MarshalJSON() ([]byte, error) { return stack.ToJSON() } diff --git a/trees/avltree/avltree_test.go b/trees/avltree/avltree_test.go index 9cc300a..37bdd2f 100644 --- a/trees/avltree/avltree_test.go +++ b/trees/avltree/avltree_test.go @@ -4,6 +4,7 @@ package avltree import ( + "encoding/json" "fmt" "strings" "testing" @@ -731,11 +732,16 @@ func TestAVLTreeSerialization(t *testing.T) { assert() - json, err := tree.ToJSON() + bytes, err := tree.ToJSON() assert() - err = tree.FromJSON(json) + err = tree.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", tree}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, tree *Tree, size int) { diff --git a/trees/avltree/serialization.go b/trees/avltree/serialization.go index 79d4e5e..1ccd4a8 100644 --- a/trees/avltree/serialization.go +++ b/trees/avltree/serialization.go @@ -13,8 +13,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) - var _ json.Marshaler = (*Tree)(nil) - var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -40,12 +38,12 @@ func (tree *Tree) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (tree *Tree) UnmarshalJSON(bytes []byte) error { return tree.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (tree *Tree) MarshalJSON() ([]byte, error) { return tree.ToJSON() } diff --git a/trees/binaryheap/binaryheap_test.go b/trees/binaryheap/binaryheap_test.go index 7a3d060..e14794f 100644 --- a/trees/binaryheap/binaryheap_test.go +++ b/trees/binaryheap/binaryheap_test.go @@ -5,6 +5,7 @@ package binaryheap import ( + "encoding/json" "math/rand" "strings" "testing" @@ -391,11 +392,16 @@ func TestBinaryHeapSerialization(t *testing.T) { assert() - json, err := heap.ToJSON() + bytes, err := heap.ToJSON() assert() - err = heap.FromJSON(json) + err = heap.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", heap}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkPush(b *testing.B, heap *Heap, size int) { diff --git a/trees/binaryheap/serialization.go b/trees/binaryheap/serialization.go index e0d2a93..30ccb25 100644 --- a/trees/binaryheap/serialization.go +++ b/trees/binaryheap/serialization.go @@ -5,16 +5,12 @@ package binaryheap import ( - "encoding/json" - "github.com/emirpasic/gods/containers" ) func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Heap)(nil) var _ containers.JSONDeserializer = (*Heap)(nil) - var _ json.Marshaler = (*Heap)(nil) - var _ json.Unmarshaler = (*Heap)(nil) } // ToJSON outputs the JSON representation of the heap. @@ -27,12 +23,12 @@ func (heap *Heap) FromJSON(data []byte) error { return heap.list.FromJSON(data) } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (heap *Heap) UnmarshalJSON(bytes []byte) error { return heap.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (heap *Heap) MarshalJSON() ([]byte, error) { return heap.ToJSON() } diff --git a/trees/btree/btree_test.go b/trees/btree/btree_test.go index 5bf5cb4..49c6ab5 100644 --- a/trees/btree/btree_test.go +++ b/trees/btree/btree_test.go @@ -5,6 +5,7 @@ package btree import ( + "encoding/json" "fmt" "strings" "testing" @@ -1251,11 +1252,16 @@ func TestBTreeSerialization(t *testing.T) { assert() - json, err := tree.ToJSON() + bytes, err := tree.ToJSON() assert() - err = tree.FromJSON(json) + err = tree.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", tree}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, tree *Tree, size int) { diff --git a/trees/btree/serialization.go b/trees/btree/serialization.go index 75ef728..5ff7175 100644 --- a/trees/btree/serialization.go +++ b/trees/btree/serialization.go @@ -13,8 +13,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) - var _ json.Marshaler = (*Tree)(nil) - var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -40,12 +38,12 @@ func (tree *Tree) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (tree *Tree) UnmarshalJSON(bytes []byte) error { return tree.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (tree *Tree) MarshalJSON() ([]byte, error) { return tree.ToJSON() } diff --git a/trees/redblacktree/redblacktree_test.go b/trees/redblacktree/redblacktree_test.go index 3abe6c1..c717648 100644 --- a/trees/redblacktree/redblacktree_test.go +++ b/trees/redblacktree/redblacktree_test.go @@ -5,6 +5,7 @@ package redblacktree import ( + "encoding/json" "fmt" "strings" "testing" @@ -734,11 +735,16 @@ func TestRedBlackTreeSerialization(t *testing.T) { assert() - json, err := tree.ToJSON() + bytes, err := tree.ToJSON() assert() - err = tree.FromJSON(json) + err = tree.FromJSON(bytes) assert() + + bytes, err = json.Marshal([]interface{}{"a", "b", "c", tree}) + if err != nil { + t.Errorf("Got error %v", err) + } } func benchmarkGet(b *testing.B, tree *Tree, size int) { diff --git a/trees/redblacktree/serialization.go b/trees/redblacktree/serialization.go index 84c4821..da13777 100644 --- a/trees/redblacktree/serialization.go +++ b/trees/redblacktree/serialization.go @@ -13,8 +13,6 @@ import ( func assertSerializationImplementation() { var _ containers.JSONSerializer = (*Tree)(nil) var _ containers.JSONDeserializer = (*Tree)(nil) - var _ json.Marshaler = (*Tree)(nil) - var _ json.Unmarshaler = (*Tree)(nil) } // ToJSON outputs the JSON representation of the tree. @@ -40,12 +38,12 @@ func (tree *Tree) FromJSON(data []byte) error { return err } -// @implements json.Unmarshaler +// UnmarshalJSON @implements json.Unmarshaler func (tree *Tree) UnmarshalJSON(bytes []byte) error { return tree.FromJSON(bytes) } -// @implements json.Marshaler +// MarshalJSON @implements json.Marshaler func (tree *Tree) MarshalJSON() ([]byte, error) { return tree.ToJSON() }