diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2021-08-10 18:52:46 -0700 |
|---|---|---|
| committer | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2021-08-10 13:52:46 -0700 |
| commit | 72dd37f1abb2b550aaaac48eac677403d5664797 (patch) | |
| tree | 5c431679475647f2f932f2934e6acd65090d2499 /hotline/news_test.go | |
| parent | 9d41bcdf29778eab3253f8e31670baf64ad389bf (diff) | |
Add tests and clean up
Diffstat (limited to 'hotline/news_test.go')
| -rw-r--r-- | hotline/news_test.go | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/hotline/news_test.go b/hotline/news_test.go new file mode 100644 index 0000000..02e11a9 --- /dev/null +++ b/hotline/news_test.go @@ -0,0 +1,100 @@ +package hotline + +import ( + "bytes" + "reflect" + "testing" +) + +func TestNewsCategoryListData15_MarshalBinary(t *testing.T) { + type fields struct { + Type []byte + Name string + Articles map[uint32]*NewsArtData + SubCats map[string]NewsCategoryListData15 + Count []byte + AddSN []byte + DeleteSN []byte + GUID []byte + } + tests := []struct { + name string + fields fields + wantData []byte + wantErr bool + }{ + { + name: "returns expected bytes when type is a bundle", + fields: fields{ + Type: []byte{0x00, 0x02}, + Articles: map[uint32]*NewsArtData{ + uint32(1): { + Title: "", + Poster: "", + Data: "", + }, + }, + Name: "foo", + }, + wantData: []byte{ + 0x00, 0x02, + 0x00, 0x01, + 0x03, + 0x66, 0x6f, 0x6f, + }, + wantErr: false, + }, + { + name: "returns expected bytes when type is a category", + fields: fields{ + Type: []byte{0x00, 0x03}, + Articles: map[uint32]*NewsArtData{ + uint32(1): { + Title: "", + Poster: "", + Data: "", + }, + }, + Name: "foo", + }, + wantData: []byte{ + 0x00, 0x03, + 0x00, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x02, + 0x03, + 0x66, 0x6f, 0x6f, + }, + wantErr: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + newscat := &NewsCategoryListData15{ + Type: tt.fields.Type, + Name: tt.fields.Name, + Articles: tt.fields.Articles, + SubCats: tt.fields.SubCats, + Count: tt.fields.Count, + AddSN: tt.fields.AddSN, + DeleteSN: tt.fields.DeleteSN, + GUID: tt.fields.GUID, + } + gotData, err := newscat.MarshalBinary() + if bytes.Equal(newscat.Type, []byte{0, 3}) { + // zero out the random GUID before comparison + for i := 4; i < 20; i++ { + gotData[i] = 0 + } + } + if (err != nil) != tt.wantErr { + t.Errorf("MarshalBinary() error = %v, wantErr %v", err, tt.wantErr) + return + } + if !reflect.DeepEqual(gotData, tt.wantData) { + t.Errorf("MarshalBinary() gotData = %v, want %v", gotData, tt.wantData) + } + }) + } +} |