github.com/vmantese/terrgroup@v0.0.4/transform_test.go (about) 1 package terrgroup 2 3 import ( 4 "crypto/sha256" 5 "fmt" 6 "reflect" 7 "sort" 8 "testing" 9 ) 10 11 12 13 14 15 16 type HashesStrings []string 17 18 func (h HashesStrings) Length() int{ 19 return len(h) 20 } 21 22 func (h HashesStrings) Transform(i int) (interface{},error){ 23 encoder := sha256.New() 24 if _,err := encoder.Write([]byte(h[i]));err != nil{ 25 return nil,err 26 } 27 return string(encoder.Sum([]byte{})),nil 28 } 29 30 type HashHolder []string 31 32 func (h *HashHolder) Append(i interface{}){ 33 if str,ok := i.(string);ok{ 34 *h = append(*h,str) 35 } 36 } 37 38 func (h HashHolder) InjectAt(i int,j interface{}){ 39 if str,ok := j.(string);ok{ 40 h[i] = str 41 } 42 } 43 44 func makeSha256(s string) (string,error){ 45 encoder := sha256.New() 46 if _,err := encoder.Write([]byte(s));err != nil{ 47 return "",err 48 } 49 return string(encoder.Sum([]byte{})),nil 50 } 51 52 53 func tt() []string{ 54 hh := new(HashHolder) 55 return *hh 56 } 57 58 func TestGroup_GoTransform(t *testing.T) { 59 var sg Group 60 stringsToBeHashed := []string{"first string to be hashed","second string to be hashed"} 61 hash1,_ := makeSha256(stringsToBeHashed[0]) 62 hash2,_ := makeSha256(stringsToBeHashed[1]) 63 expectedHashes := []string{hash1,hash2} 64 actualHashes := HashHolder{} 65 err := sg.GoTransform(HashesStrings(stringsToBeHashed),&actualHashes) 66 sort.Strings(actualHashes) 67 sort.Strings(expectedHashes) 68 if err != nil{ 69 t.Fail() 70 } 71 if reflect.DeepEqual(expectedHashes,actualHashes){ 72 fmt.Println(expectedHashes,actualHashes) 73 t.Fail() 74 } 75 76 77 } 78 79 func TestGroup_GoExactTransform(t *testing.T) { 80 var sg Group 81 stringsToBeHashed := []string{"first string to be hashed","second string to be hashed"} 82 hash1,_ := makeSha256(stringsToBeHashed[0]) 83 hash2,_ := makeSha256(stringsToBeHashed[1]) 84 expectedHashes := []string{hash1,hash2} 85 actualHashes := make(HashHolder,2) 86 err := sg.GoExactTransform(HashesStrings(stringsToBeHashed),actualHashes) 87 sort.Strings(actualHashes) 88 sort.Strings(expectedHashes) 89 if err != nil{ 90 t.Fail() 91 } 92 if reflect.DeepEqual(expectedHashes,actualHashes){ 93 fmt.Println(expectedHashes,actualHashes) 94 t.Fail() 95 } 96 97 } 98 99 100 func BenchmarkGroup_GoTransform(b *testing.B) { 101 102 }