mconnect - KDE Connect protocol implementation in Vala/C
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

71 lines
1.7 KiB

  1. // Licensed under the Apache License, Version 2.0 (the "License");
  2. // you may not use this file except in compliance with the License.
  3. // You may obtain a copy of the License at
  4. //
  5. // http://www.apache.org/licenses/LICENSE-2.0
  6. //
  7. // Unless required by applicable law or agreed to in writing, software
  8. // distributed under the License is distributed on an "AS IS" BASIS,
  9. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  10. // See the License for the specific language governing permissions and
  11. // limitations under the License.
  12. package packet_test
  13. import (
  14. "strings"
  15. "testing"
  16. "github.com/stretchr/testify/assert"
  17. "github.com/bboozzoo/mconnect/protocol/packet"
  18. )
  19. func TestUnmarshal(t *testing.T) {
  20. var p packet.Packet
  21. err := packet.Unmarshal([]byte(`foobar`), &p)
  22. assert.Error(t, err)
  23. p = packet.Packet{}
  24. err = packet.Unmarshal([]byte(`{}`), &p)
  25. assert.Error(t, err)
  26. p = packet.Packet{}
  27. err = packet.Unmarshal([]byte(`{"id": 123, "type": "foo","body":{}}`), &p)
  28. assert.NoError(t, err)
  29. assert.Equal(t, p, packet.Packet{
  30. Id: uint64(123),
  31. Type: "foo",
  32. Body: []byte("{}"),
  33. })
  34. }
  35. func TestDecoder(t *testing.T) {
  36. input := `
  37. {"id": 123, "type": "foo","body":{}}
  38. {"id": 456, "type": "bar","body":{"123": 123}}
  39. {"id": 678, "type": "baz"
  40. `
  41. d := packet.NewDecoder(strings.NewReader(input))
  42. p := packet.Packet{}
  43. err := d.Decode(&p)
  44. assert.NoError(t, err)
  45. assert.Equal(t, p, packet.Packet{
  46. Id: uint64(123),
  47. Type: "foo",
  48. Body: []byte("{}"),
  49. })
  50. p = packet.Packet{}
  51. err = d.Decode(&p)
  52. assert.NoError(t, err)
  53. assert.Equal(t, p, packet.Packet{
  54. Id: uint64(456),
  55. Type: "bar",
  56. Body: []byte(`{"123": 123}`),
  57. })
  58. p = packet.Packet{}
  59. err = d.Decode(&p)
  60. assert.Error(t, err)
  61. }