array_test.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. package array
  2. import (
  3. "fmt"
  4. "testing"
  5. )
  6. type keyValue struct {
  7. key string
  8. value string
  9. }
  10. type PubKeyValue struct {
  11. Key string
  12. Value string
  13. }
  14. // test array column
  15. func TestArrayColumn(t *testing.T) {
  16. /*dataMap := []PubKeyValue{
  17. {Key: "a", Value: "A"},
  18. {Key: "b", Value: "B"},
  19. }*/
  20. /*dataMap := map[string]map[string]string{
  21. "a": {"key": "a", "value": "A"},
  22. "b": {"key": "b", "value": "B"},
  23. }
  24. dest := map[string]string{}*/
  25. dataMap := []map[string]string{
  26. {"key": "a", "value": "A"},
  27. {"key": "b", "value": "B"},
  28. }
  29. dest := map[string]map[string]string{}
  30. Column(&dest, dataMap, "", "value")
  31. fmt.Println(dest)
  32. }
  33. // test array diff
  34. func TestArrayDiff(t *testing.T) {
  35. dataMap := map[string]keyValue{
  36. "a": {key: "a", value: "A"},
  37. "b": {key: "b", value: "B"},
  38. }
  39. dataMap1 := []keyValue{
  40. {key: "c", value: "C"},
  41. {key: "b", value: "B"},
  42. }
  43. dataMap2 := []string{
  44. "a", "b",
  45. }
  46. Diff(&dataMap, dataMap1, dataMap2)
  47. fmt.Println("dataMap", dataMap)
  48. }
  49. // test array intersect
  50. func TestArrayIntersect(t *testing.T) {
  51. dataMap := []keyValue{
  52. {key: "c", value: "C"},
  53. {key: "b", value: "B"},
  54. }
  55. dataMap1 := map[string]keyValue{
  56. "a": {key: "a", value: "A"},
  57. "b": {key: "b", value: "B"},
  58. "c": {key: "c", value: "C"},
  59. }
  60. dataMap2 := []string{
  61. "a", "b",
  62. }
  63. Intersect(&dataMap, dataMap1, &dataMap2)
  64. fmt.Println("dataMap", dataMap)
  65. }
  66. // test in array
  67. func TestInArray(t *testing.T) {
  68. /*data := map[int]string{1: "1"}
  69. dataMap := map[string]map[int]string{
  70. "a": {1: "1"},
  71. "b": {2: "2"},
  72. }*/
  73. /*dataMap := []keyValue{
  74. {key: "a", value: "A"},
  75. {key: "b", value: "B"},
  76. }
  77. data := keyValue{key: "b", value: "A"}*/
  78. dataMap := []string{"a", "b", "c"}
  79. data := "a"
  80. isExist := In(&data, dataMap)
  81. fmt.Println(isExist)
  82. }
  83. // test array array_merge
  84. func TestArrayMergeForSlice(t *testing.T) {
  85. dataMap := []map[int]string{
  86. {1: "1"},
  87. {2: "2"},
  88. }
  89. oDataMap1 := []map[int]string{
  90. {3: "3"},
  91. {4: "4"},
  92. }
  93. Merge(&dataMap, &oDataMap1)
  94. fmt.Println(dataMap)
  95. }
  96. // test map array_merge
  97. func TestArrayMergeForMap(t *testing.T) {
  98. dataMap := map[string]map[int]string{
  99. "a": {1: "1"},
  100. "b": {2: "2"},
  101. }
  102. oDataMap1 := map[string]map[int]string{
  103. "c": {3: "3"},
  104. "b": {4: "4"},
  105. }
  106. oDataMap2 := map[string]map[int]string{}
  107. oDataMap3 := map[string]map[int]string{
  108. "e": {5: "5"},
  109. "f": {6: "6"},
  110. }
  111. Merge(&dataMap, &oDataMap1, oDataMap2, oDataMap3)
  112. fmt.Println(dataMap)
  113. }
  114. // test slice array_values
  115. func TestArrayValuesForSlice(t *testing.T) {
  116. dataMap := []map[int]string{
  117. {1: "1", 2: "2"},
  118. {1: "1", 2: "2"},
  119. }
  120. var valueArr []map[int]string
  121. Values(dataMap, &valueArr)
  122. fmt.Println(valueArr)
  123. }
  124. // test Map array_values
  125. func TestArrayValuesForMap(t *testing.T) {
  126. /*dataMap := map[string]keyValue{
  127. "a":{key: "a", value: "A"},
  128. "b":{key: "b", value: "B"},
  129. }*/
  130. dataMap := map[string]map[int]string{
  131. "a": {1: "1", 2: "2"},
  132. "b": {1: "1", 2: "2"},
  133. }
  134. var valueArr []map[int]string
  135. Values(dataMap, &valueArr)
  136. fmt.Println(valueArr)
  137. /*fmt.Println(vValue.Elem().Type().Elem().Name(), dValue.Type().Elem().Name())
  138. fmt.Println(vValue.Elem().Type().Elem().PkgPath(), dValue.Type().Elem().PkgPath())*/
  139. }
  140. // test array_keys
  141. func TestArrayKeysForMap(t *testing.T) {
  142. dataMap := map[string]keyValue{
  143. "a": {key: "a", value: "A"},
  144. "b": {key: "b", value: "B"},
  145. }
  146. var keysArr []string
  147. Keys(dataMap, &keysArr)
  148. fmt.Println(keysArr)
  149. }
  150. // test array_unique
  151. func TestArrayUnique(t *testing.T) {
  152. /*dataMap := map[string]keyValue{
  153. "a": {key: "a", value: "A"},
  154. "b": {key: "b", value: "B"},
  155. "c": {key: "a", value: "A"},
  156. }*/
  157. dataMap := []keyValue{
  158. {key: "a", value: "A"},
  159. {key: "b", value: "B"},
  160. {key: "a", value: "A"},
  161. }
  162. Unique(&dataMap)
  163. fmt.Println(dataMap)
  164. }