util/sha256_test.go

168 lines
4.8 KiB
Go

package util
import (
"bytes"
"encoding/hex"
"fmt"
"io"
"strings"
"testing"
)
func TestSHA256(t *testing.T) {
// dd if=/dev/zero of=testfile/testFile1 bs=4KB count=4
// sha256sum testFile1
const fileSHA256 = "f85f2c34eb2843d2aa5951ee6e8e76985655b2e3ae2cbdd76bdfd654ecf19997"
testString := "Akvicor"
testStringP1 := "Akv"
testStringP2 := "icor"
testSHA256 := "36acc0924a190c77386cd819a3bff60251345e8654399f68e8b740a1afa62ff5"
testSHA256P1 := "5a01f2f1bd960f10e647fb9c78797836a9774683469ef759c303cd2934548563"
testBytes := []byte(testString)
testBytesP1 := []byte(testStringP1)
testBytesP2 := []byte(testStringP2)
fileSHA256Bytes, err := hex.DecodeString(fileSHA256)
if err != nil {
t.Errorf("fileSHA256Bytes: %v", err)
}
// test FromFile & SHA256Result
s1 := NewSHA256().FromFile("testfile/testFile1")
if s1.Error() != nil {
t.Errorf("FromFile failed: %v", s1.Error())
}
if s1.Lower() != fileSHA256 {
t.Errorf("FromFile failed: expected: [%s] got [%s]", fileSHA256, s1.Lower())
}
if s1.Upper() != strings.ToUpper(fileSHA256) {
t.Errorf("FromFile failed: expected: [%s] got [%s]", strings.ToUpper(fileSHA256), s1.Upper())
}
if !bytes.Equal(s1.Slice(), fileSHA256Bytes) {
t.Errorf("FromFile failed: expected: [%v] got [%v]", fileSHA256Bytes, s1.Slice())
}
ay := s1.Array()
if !bytes.Equal(ay[:], fileSHA256Bytes) {
t.Errorf("FromFile failed: expected: [%v] got [%v]", fileSHA256Bytes, ay)
}
// test FromFileChunk
s1 = NewSHA256().FromFileChunk("testfile/testFile1", 1024)
if s1.Error() != nil {
t.Errorf("FromFileChunk failed: %v", s1.Error())
}
if s1.Lower() != fileSHA256 {
t.Errorf("FromFileChunk failed: expected: [%s] got [%s]", fileSHA256, s1.Lower())
}
// test FromBytes
s1 = NewSHA256().FromBytes(testBytes)
if s1.Error() != nil {
t.Errorf("FromBytes failed: %v", s1.Error())
}
if s1.Lower() != testSHA256 {
t.Errorf("FromBytes failed: expected: [%s] got [%s]", testSHA256, s1.Lower())
}
// test FromString
s1 = NewSHA256().FromString(testString)
if s1.Error() != nil {
t.Errorf("FromString failed: %v", s1.Error())
}
if s1.Lower() != testSHA256 {
t.Errorf("FromString failed: expected: [%s] got [%s]", testSHA256, s1.Lower())
}
// test NewSHA256Pip.WriteBytes
mp := NewSHA256Pip()
err = mp.WriteBytes(testBytesP1)
if err != nil {
t.Errorf("NewSHA256Pip WriteBytes failed: %v", err)
}
err = mp.WriteBytes(testBytesP2)
if err != nil {
t.Errorf("NewSHA256Pip WriteBytes failed: %v", err)
}
s1 = mp.Result()
if s1.Error() != nil {
t.Errorf("NewSHA256Pip WriteBytes failed: %v", s1.Error())
}
if s1.Lower() != testSHA256 {
t.Errorf("NewSHA256Pip WriteBytes failed: expected: [%s] got [%s]", testSHA256, s1.Lower())
}
// test NewSHA256Pip.WriteString
mp = NewSHA256Pip()
err = mp.WriteString(testStringP1)
if err != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", err)
}
err = mp.WriteString(testStringP2)
if err != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", err)
}
s1 = mp.Result()
if s1.Error() != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", s1.Error())
}
if s1.Lower() != testSHA256 {
t.Errorf("NewSHA256Pip WriteString failed: expected: [%s] got [%s]", testSHA256, s1.Lower())
}
// test NewSHA256Pip.Result
mp = NewSHA256Pip()
err = mp.WriteString(testStringP1)
if err != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", err)
}
s1 = mp.Result()
if s1.Error() != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", s1.Error())
}
if s1.Lower() != testSHA256P1 {
t.Errorf("NewSHA256Pip WriteString failed: expected: [%s] got [%s]", testSHA256P1, s1.Lower())
}
err = mp.WriteString(testStringP2)
if err != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", err)
}
s1 = mp.Result()
if s1.Error() != nil {
t.Errorf("NewSHA256Pip WriteString failed: %v", s1.Error())
}
if s1.Lower() != testSHA256 {
t.Errorf("NewSHA256Pip WriteString failed: expected: [%s] got [%s]", testSHA256, s1.Lower())
}
}
func ExampleNewSHA256() {
s := NewSHA256()
res := s.FromString("Akvicor")
if res.Error() == nil {
fmt.Println(res.Lower())
fmt.Println(res.Upper())
fmt.Println(res.Slice())
}
// Output:
// 36acc0924a190c77386cd819a3bff60251345e8654399f68e8b740a1afa62ff5
// 36ACC0924A190C77386CD819A3BFF60251345E8654399F68E8B740A1AFA62FF5
// [54 172 192 146 74 25 12 119 56 108 216 25 163 191 246 2 81 52 94 134 84 57 159 104 232 183 64 161 175 166 47 245]
}
func ExampleNewSHA256Pip() {
sp := NewSHA256Pip()
_, err := io.WriteString(sp, "Akvicor")
if err != nil {
fmt.Println(err)
}
res := sp.Result()
if res.Error() == nil {
fmt.Println(res.Array())
fmt.Println(res.Slice())
}
// Output:
// [54 172 192 146 74 25 12 119 56 108 216 25 163 191 246 2 81 52 94 134 84 57 159 104 232 183 64 161 175 166 47 245]
// [54 172 192 146 74 25 12 119 56 108 216 25 163 191 246 2 81 52 94 134 84 57 159 104 232 183 64 161 175 166 47 245]
}