Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use tick for json string; add test examples #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 32 additions & 2 deletions mapslice_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ func TestMarshal(t *testing.T) {
t.Fatal(err)
}

e := "{\"abc\":123,\"def\":456,\"ghi\":789}"
e := `{"abc":123,"def":456,"ghi":789}`
zamicol marked this conversation as resolved.
Show resolved Hide resolved
r := string(b)

if r != e {
Expand All @@ -39,7 +39,7 @@ func TestMarshalError(t *testing.T) {

func TestUnmarshal(t *testing.T) {
ms := MapSlice{}
if err := json.Unmarshal([]byte("{\"abc\":123,\"def\":456,\"ghi\":789}"), &ms); err != nil {
if err := json.Unmarshal([]byte(`{"abc":123,"def":456,"ghi":789}`), &ms); err != nil {
t.Fatal(err)
}

Expand All @@ -50,3 +50,33 @@ func TestUnmarshal(t *testing.T) {
t.Errorf("expected: %s\ngot: %s", e, r)
}
}

func ExampleMapSlice_MarshalJSON() {
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would put these in a separate test file with package mapslice_test that way you would have to import mapslice. This would serve better as an example.

Copy link
Author

@zamicol zamicol Jul 22, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Go, I think this is fairly idiomatic, and the example will show in the doc. https://go.dev/blog/examples

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's a nitpick but consider a beginner that want to copy/paste it won't work out of the box.

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm fine with not doing it just giving you the reason I mentioned it.

Copy link
Author

@zamicol zamicol Jul 25, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll include a Go playground link in the README with a copy/pasteable example with the same example that's in the README.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@ake-persson, I came across something from Joe Tsai that is what I think you wanted. I removed the _example folder, and created file example_test.go, with package mapslice_test. The tests will appear in the docs and they import package mapslice-json as requested.

I think that covers everything. 👍

ms := MapSlice{
MapItem{"abc", 123, 0},
zamicol marked this conversation as resolved.
Show resolved Hide resolved
MapItem{"def", 456, 0},
MapItem{"ghi", 789, 0},
}

b, err := json.Marshal(ms)
if err != nil {
zamicol marked this conversation as resolved.
Show resolved Hide resolved
fmt.Println(err)
}

fmt.Printf("%s", b)
zamicol marked this conversation as resolved.
Show resolved Hide resolved

// Output:
// {"abc":123,"def":456,"ghi":789}
}

func ExampleMapSlice_UnmarshalJSON() {
var ms = MapSlice{}

if err := json.Unmarshal([]byte(`{"abc":123,"def":456,"ghi":789}`), &ms); err != nil {
fmt.Println(err)
zamicol marked this conversation as resolved.
Show resolved Hide resolved
}

fmt.Println(ms)
// Output:
zamicol marked this conversation as resolved.
Show resolved Hide resolved
// [{abc 123} {def 456} {ghi 789}]
}