implement and test sql db accessor
This commit is contained in:
22
util/util.go
22
util/util.go
@@ -117,6 +117,17 @@ func Uint64ArrToByteArr(intArr []uint64) []byte {
|
||||
return byteArr
|
||||
}
|
||||
|
||||
func IntArrToByteArr(intArr []int) []byte {
|
||||
byteArr := make([]byte, len(intArr)*4)
|
||||
for idx, val := range intArr {
|
||||
uval := uint32(val)
|
||||
startIdx := idx * 4
|
||||
endIdx := (idx + 1) * 4
|
||||
binary.LittleEndian.PutUint32(byteArr[startIdx:endIdx], uval)
|
||||
}
|
||||
return byteArr
|
||||
}
|
||||
|
||||
func ByteArrToUint64Arr(byteArr []byte) []uint64 {
|
||||
intArr := make([]uint64, len(byteArr)/8)
|
||||
for idx := 0; idx < len(intArr); idx++ {
|
||||
@@ -127,6 +138,17 @@ func ByteArrToUint64Arr(byteArr []byte) []uint64 {
|
||||
return intArr
|
||||
}
|
||||
|
||||
func ByteArrToIntArr(byteArr []byte) []int {
|
||||
intArr := make([]int, len(byteArr)/4)
|
||||
for idx := 0; idx < len(intArr); idx++ {
|
||||
startIdx := idx * 4
|
||||
endIdx := (idx + 1) * 4
|
||||
uval := binary.LittleEndian.Uint32(byteArr[startIdx:endIdx])
|
||||
intArr[idx] = int(uval)
|
||||
}
|
||||
return intArr
|
||||
}
|
||||
|
||||
func IndexOf[T uint64 | int](arr []T, el T) int {
|
||||
for idx, val := range arr {
|
||||
if val == el {
|
||||
|
||||
@@ -44,3 +44,11 @@ func TestMatrixTranspose(t *testing.T) {
|
||||
assert.Equal(t, expectedFlatMat[idx], flatMat[idx])
|
||||
}
|
||||
}
|
||||
|
||||
func TestIntToByteAndBack(t *testing.T) {
|
||||
origIntArr := []int{1, 2, 3, 4, 5}
|
||||
byteArr := IntArrToByteArr(origIntArr)
|
||||
intArr := ByteArrToIntArr(byteArr)
|
||||
|
||||
assert.ElementsMatch(t, origIntArr, intArr)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user