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.

modes_test.go 2.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. // Copyright (c) 2018 Shivaram Lingamneni
  2. // released under the MIT license
  3. package modes
  4. import (
  5. "reflect"
  6. "testing"
  7. )
  8. func TestParseChannelModeChanges(t *testing.T) {
  9. modes, unknown := ParseChannelModeChanges("+h", "wrmsr")
  10. if len(unknown) > 0 {
  11. t.Errorf("unexpected unknown mode change: %v", unknown)
  12. }
  13. expected := ModeChange{
  14. Op: Add,
  15. Mode: Halfop,
  16. Arg: "wrmsr",
  17. }
  18. if len(modes) != 1 || modes[0] != expected {
  19. t.Errorf("unexpected mode change: %v", modes)
  20. }
  21. modes, unknown = ParseChannelModeChanges("-v", "shivaram")
  22. if len(unknown) > 0 {
  23. t.Errorf("unexpected unknown mode change: %v", unknown)
  24. }
  25. expected = ModeChange{
  26. Op: Remove,
  27. Mode: Voice,
  28. Arg: "shivaram",
  29. }
  30. if len(modes) != 1 || modes[0] != expected {
  31. t.Errorf("unexpected mode change: %v", modes)
  32. }
  33. modes, unknown = ParseChannelModeChanges("+tx")
  34. if len(unknown) != 1 || !unknown['x'] {
  35. t.Errorf("expected that x is an unknown mode, instead: %v", unknown)
  36. }
  37. expected = ModeChange{
  38. Op: Add,
  39. Mode: OpOnlyTopic,
  40. Arg: "",
  41. }
  42. if len(modes) != 1 || modes[0] != expected {
  43. t.Errorf("unexpected mode change: %v", modes)
  44. }
  45. }
  46. func TestSetMode(t *testing.T) {
  47. set := NewModeSet()
  48. if applied := set.SetMode(Invisible, false); applied != false {
  49. t.Errorf("all modes should be false by default")
  50. }
  51. if applied := set.SetMode(Invisible, true); applied != true {
  52. t.Errorf("initial SetMode call should return true")
  53. }
  54. set.SetMode(Operator, true)
  55. if applied := set.SetMode(Invisible, true); applied != false {
  56. t.Errorf("redundant SetMode call should return false")
  57. }
  58. expected1 := []Mode{Invisible, Operator}
  59. expected2 := []Mode{Operator, Invisible}
  60. if allModes := set.AllModes(); !(reflect.DeepEqual(allModes, expected1) || reflect.DeepEqual(allModes, expected2)) {
  61. t.Errorf("unexpected AllModes value: %v", allModes)
  62. }
  63. if modeString := set.String(); !(modeString == "io" || modeString == "oi") {
  64. t.Errorf("unexpected modestring: %s", modeString)
  65. }
  66. }
  67. func TestNilReceivers(t *testing.T) {
  68. set := NewModeSet()
  69. set = nil
  70. if set.HasMode(Invisible) {
  71. t.Errorf("nil ModeSet should not have any modes")
  72. }
  73. str := set.String()
  74. if str != "" {
  75. t.Errorf("nil Modeset should have empty String(), got %v instead", str)
  76. }
  77. }