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  }