subset_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package resolver
  2. import (
  3. "strconv"
  4. "testing"
  5. "zero/core/mathx"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. func TestSubset(t *testing.T) {
  9. tests := []struct {
  10. name string
  11. set int
  12. sub int
  13. }{
  14. {
  15. name: "more vals to subset",
  16. set: 100,
  17. sub: 36,
  18. },
  19. {
  20. name: "less vals to subset",
  21. set: 100,
  22. sub: 200,
  23. },
  24. }
  25. for _, test := range tests {
  26. t.Run(test.name, func(t *testing.T) {
  27. var vals []string
  28. for i := 0; i < test.set; i++ {
  29. vals = append(vals, strconv.Itoa(i))
  30. }
  31. m := make(map[interface{}]int)
  32. for i := 0; i < 1000; i++ {
  33. set := subset(append([]string(nil), vals...), test.sub)
  34. for _, val := range set {
  35. m[val]++
  36. }
  37. }
  38. assert.True(t, mathx.CalcEntropy(m) > 0.95)
  39. })
  40. }
  41. }
  42. func TestSubsetLess(t *testing.T) {
  43. var vals []string
  44. for i := 0; i < 100; i++ {
  45. vals = append(vals, strconv.Itoa(i))
  46. }
  47. m := make(map[interface{}]int)
  48. for i := 0; i < 1000; i++ {
  49. set := subset(append([]string(nil), vals...), 200)
  50. for _, val := range set {
  51. m[val]++
  52. }
  53. }
  54. assert.True(t, mathx.CalcEntropy(m) > 0.95)
  55. }