slice_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package ctn
  2. import (
  3. "testing"
  4. "sort"
  5. )
  6. func TestMapFilterReduce(t *testing.T) {
  7. s := [] int { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
  8. s = MapEach(s, func(i int) int {
  9. return i*10
  10. })
  11. s = Filter(s, func(i int) bool {
  12. return (i <= 40)
  13. })
  14. { sum := Reduce(s, int(1), func(sum int, i int) int {
  15. return (sum + i)
  16. })
  17. if sum != 101 {
  18. t.Fatalf("wrong result: %d", sum)
  19. } }
  20. }
  21. func TestMapEachDeflate(t *testing.T) {
  22. s := [] int { 1, 5, 8, 3, 6, 4, 9, 2 }
  23. expected := [] int { -1, -3, -4, -2 }
  24. s = MapEachDeflate(s, func(a int) (int, bool) {
  25. if (a <= 4) {
  26. return -a, true
  27. } else {
  28. return 0, false
  29. }
  30. })
  31. if len(s) != len(expected) {
  32. t.Fatalf("wrong result: %+v", s)
  33. }
  34. for i := range s {
  35. if s[i] != expected[i] {
  36. t.Fatalf("wrong result: %+v", s)
  37. }
  38. }
  39. }
  40. func TestRemoveFrom(t *testing.T) {
  41. s := [] int { 1, 1, 2, 3, 5, 8, 1, 1, 2, 3, 5, 8 }
  42. expected := [] int { 2, 3, 5, 8, 2, 3, 5, 8 }
  43. s = RemoveFrom(s, 1)
  44. if len(s) != len(expected) {
  45. t.Fatalf("wrong result: %+v", s)
  46. }
  47. for i := range s {
  48. if s[i] != expected[i] {
  49. t.Fatalf("wrong result: %+v", s)
  50. }
  51. }
  52. }
  53. func TestStableSort(t *testing.T) {
  54. u := [] int { 50, 55, 60, 65, 20, 30, 35, 80, 85, 90, 10, 12, 18, 70, 40 }
  55. v, _ := (StableSorted(u, func(a int, b int) bool {
  56. return ((a / 10) < (b / 10))
  57. }))
  58. sort.Slice(u, func(i, j int) bool {
  59. return (u[i] < u[j])
  60. })
  61. for i := range u {
  62. if u[i] != v[i] {
  63. t.Fatalf("wrong result: %+v", v)
  64. }
  65. }
  66. }