controls_test.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package device
  2. import (
  3. "context"
  4. "testing"
  5. )
  6. func TestSetFlightPreservesRawCFUNZero(t *testing.T) {
  7. client := &transcriptClient{steps: []clientStep{
  8. {command: "AT+CFUN?", response: okResponse("+CFUN: 0")},
  9. {command: "AT+CFUN?", response: okResponse("+CFUN: 0")},
  10. }}
  11. manager, id := newStartedTestManager(t, client)
  12. result, err := manager.SetFlight(context.Background(), id, true)
  13. if err != nil {
  14. t.Fatalf("SetFlight: %v", err)
  15. }
  16. if result.Changed || result.PreviousMode != 0 || result.CurrentMode != 0 ||
  17. !result.FlightMode || !result.RadioOff {
  18. t.Fatalf("result = %#v", result)
  19. }
  20. client.assertDone(t)
  21. }
  22. func TestSetFlightRestoresPreviousFunctionalMode(t *testing.T) {
  23. client := &transcriptClient{steps: []clientStep{
  24. {command: "AT+CFUN?", response: okResponse("+CFUN: 1")},
  25. {command: "AT+CFUN=4", response: okResponse()},
  26. {command: "AT+CFUN?", response: okResponse("+CFUN: 4")},
  27. {command: "AT+CFUN?", response: okResponse("+CFUN: 4")},
  28. {command: "AT+CFUN=1", response: okResponse()},
  29. {command: "AT+CFUN?", response: okResponse("+CFUN: 1")},
  30. }}
  31. manager, id := newStartedTestManager(t, client)
  32. enabled, err := manager.SetFlight(context.Background(), id, true)
  33. if err != nil {
  34. t.Fatalf("enable flight mode: %v", err)
  35. }
  36. if !enabled.Changed || enabled.PreviousMode != 1 ||
  37. enabled.CurrentMode != 4 || !enabled.FlightMode {
  38. t.Fatalf("enable result = %#v", enabled)
  39. }
  40. disabled, err := manager.SetFlight(context.Background(), id, false)
  41. if err != nil {
  42. t.Fatalf("disable flight mode: %v", err)
  43. }
  44. if !disabled.Changed || disabled.PreviousMode != 4 ||
  45. disabled.CurrentMode != 1 || disabled.FlightMode {
  46. t.Fatalf("disable result = %#v", disabled)
  47. }
  48. client.assertDone(t)
  49. }
  50. func TestUSSDWaitsForAndDecodesCUSD(t *testing.T) {
  51. client := &transcriptClient{
  52. steps: []clientStep{{
  53. command: `AT+CUSD=1,"*100#",15`,
  54. response: okResponse(),
  55. }},
  56. urcs: []string{`+CUSD: 0,"004F004B",72`},
  57. }
  58. manager, id := newStartedTestManager(t, client)
  59. result, err := manager.USSD(context.Background(), id, "*100#")
  60. if err != nil {
  61. t.Fatalf("USSD: %v", err)
  62. }
  63. if result.Text != "OK" || result.Code != "*100#" ||
  64. result.DCS == nil || *result.DCS != 72 {
  65. t.Fatalf("result = %#v", result)
  66. }
  67. if _, err := manager.USSD(context.Background(), id, "*100#\rAT"); err == nil {
  68. t.Fatal("expected invalid service code rejection")
  69. }
  70. client.assertDone(t)
  71. }