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.
 
 
 

100 lines
2.4 KiB

  1. package worker
  2. import (
  3. "bytes"
  4. "testing"
  5. )
  6. var (
  7. outpackcases = map[uint32]map[string]string{
  8. dtCanDo: map[string]string{
  9. "src": "\x00REQ\x00\x00\x00\x01\x00\x00\x00\x01a",
  10. "data": "a",
  11. },
  12. dtCanDoTimeout: map[string]string{
  13. "src": "\x00REQ\x00\x00\x00\x17\x00\x00\x00\x06a\x00\x00\x00\x00\x01",
  14. "data": "a\x00\x00\x00\x00\x01",
  15. },
  16. dtCantDo: map[string]string{
  17. "src": "\x00REQ\x00\x00\x00\x02\x00\x00\x00\x01a",
  18. "data": "a",
  19. },
  20. dtResetAbilities: map[string]string{
  21. "src": "\x00REQ\x00\x00\x00\x03\x00\x00\x00\x00",
  22. },
  23. dtPreSleep: map[string]string{
  24. "src": "\x00REQ\x00\x00\x00\x04\x00\x00\x00\x00",
  25. },
  26. dtGrabJob: map[string]string{
  27. "src": "\x00REQ\x00\x00\x00\x09\x00\x00\x00\x00",
  28. },
  29. dtGrabJobUniq: map[string]string{
  30. "src": "\x00REQ\x00\x00\x00\x1E\x00\x00\x00\x00",
  31. },
  32. dtWorkData: map[string]string{
  33. "src": "\x00REQ\x00\x00\x00\x1C\x00\x00\x00\x03a\x00b",
  34. "data": "a\x00b",
  35. },
  36. dtWorkWarning: map[string]string{
  37. "src": "\x00REQ\x00\x00\x00\x1D\x00\x00\x00\x03a\x00b",
  38. "data": "a\x00b",
  39. },
  40. dtWorkStatus: map[string]string{
  41. "src": "\x00REQ\x00\x00\x00\x0C\x00\x00\x00\x08a\x0050\x00100",
  42. "data": "a\x0050\x00100",
  43. },
  44. dtWorkComplete: map[string]string{
  45. "src": "\x00REQ\x00\x00\x00\x0D\x00\x00\x00\x03a\x00b",
  46. "data": "a\x00b",
  47. },
  48. dtWorkFail: map[string]string{
  49. "src": "\x00REQ\x00\x00\x00\x0E\x00\x00\x00\x01a",
  50. "handle": "a",
  51. },
  52. dtWorkException: map[string]string{
  53. "src": "\x00REQ\x00\x00\x00\x19\x00\x00\x00\x03a\x00b",
  54. "data": "a\x00b",
  55. },
  56. dtSetClientId: map[string]string{
  57. "src": "\x00REQ\x00\x00\x00\x16\x00\x00\x00\x01a",
  58. "data": "a",
  59. },
  60. dtAllYours: map[string]string{
  61. "src": "\x00REQ\x00\x00\x00\x18\x00\x00\x00\x00",
  62. },
  63. }
  64. )
  65. func TestOutPack(t *testing.T) {
  66. for k, v := range outpackcases {
  67. outpack := getOutPack()
  68. outpack.dataType = k
  69. if handle, ok := v["handle"]; ok {
  70. outpack.handle = handle
  71. }
  72. if data, ok := v["data"]; ok {
  73. outpack.data = []byte(data)
  74. }
  75. data := outpack.Encode()
  76. if bytes.Compare([]byte(v["src"]), data) != 0 {
  77. t.Errorf("%d: %X expected, %X got.", k, v["src"], data)
  78. }
  79. }
  80. }
  81. func BenchmarkEncode(b *testing.B) {
  82. for i := 0; i < b.N; i++ {
  83. for k, v := range outpackcases {
  84. outpack := getOutPack()
  85. outpack.dataType = k
  86. if handle, ok := v["handle"]; ok {
  87. outpack.handle = handle
  88. }
  89. if data, ok := v["data"]; ok {
  90. outpack.data = []byte(data)
  91. }
  92. outpack.Encode()
  93. }
  94. }
  95. }