clientsmap_test.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. // Copyright (C) 2019-2023 Nicola Murino
  2. //
  3. // This program is free software: you can redistribute it and/or modify
  4. // it under the terms of the GNU Affero General Public License as published
  5. // by the Free Software Foundation, version 3.
  6. //
  7. // This program is distributed in the hope that it will be useful,
  8. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. // GNU Affero General Public License for more details.
  11. //
  12. // You should have received a copy of the GNU Affero General Public License
  13. // along with this program. If not, see <https://www.gnu.org/licenses/>.
  14. package common
  15. import (
  16. "testing"
  17. "github.com/stretchr/testify/assert"
  18. )
  19. func TestClientsMap(t *testing.T) {
  20. m := clientsMap{
  21. clients: make(map[string]int),
  22. }
  23. ip1 := "192.168.1.1"
  24. ip2 := "192.168.1.2"
  25. m.add(ip1)
  26. assert.Equal(t, int32(1), m.getTotal())
  27. assert.Equal(t, 1, m.getTotalFrom(ip1))
  28. assert.Equal(t, 0, m.getTotalFrom(ip2))
  29. m.add(ip1)
  30. m.add(ip2)
  31. assert.Equal(t, int32(3), m.getTotal())
  32. assert.Equal(t, 2, m.getTotalFrom(ip1))
  33. assert.Equal(t, 1, m.getTotalFrom(ip2))
  34. m.add(ip1)
  35. m.add(ip1)
  36. m.add(ip2)
  37. assert.Equal(t, int32(6), m.getTotal())
  38. assert.Equal(t, 4, m.getTotalFrom(ip1))
  39. assert.Equal(t, 2, m.getTotalFrom(ip2))
  40. m.remove(ip2)
  41. assert.Equal(t, int32(5), m.getTotal())
  42. assert.Equal(t, 4, m.getTotalFrom(ip1))
  43. assert.Equal(t, 1, m.getTotalFrom(ip2))
  44. m.remove("unknown")
  45. assert.Equal(t, int32(5), m.getTotal())
  46. assert.Equal(t, 4, m.getTotalFrom(ip1))
  47. assert.Equal(t, 1, m.getTotalFrom(ip2))
  48. m.remove(ip2)
  49. assert.Equal(t, int32(4), m.getTotal())
  50. assert.Equal(t, 4, m.getTotalFrom(ip1))
  51. assert.Equal(t, 0, m.getTotalFrom(ip2))
  52. m.remove(ip1)
  53. m.remove(ip1)
  54. m.remove(ip1)
  55. assert.Equal(t, int32(1), m.getTotal())
  56. assert.Equal(t, 1, m.getTotalFrom(ip1))
  57. assert.Equal(t, 0, m.getTotalFrom(ip2))
  58. m.remove(ip1)
  59. assert.Equal(t, int32(0), m.getTotal())
  60. assert.Equal(t, 0, m.getTotalFrom(ip1))
  61. assert.Equal(t, 0, m.getTotalFrom(ip2))
  62. }