13.go开源groupcache项目笔记——byteview_test测试代码
TestByteView
创建一个字符串数组"","x","yy"
两套循环,对比字符串数组和ByteView结构体。
判断是否一一相等。
Of函数
Of函数用于被testbyteview调用。
返回byteview.
入参为interface,可以是任何类型。
然后从中获取其byte[]数组,并返回带数组的结构体ByteView.
如果入参没有byte[]数组,则返回入参中的字符串组成的结构体ByteView.
TestByteViewEqual
创建一个结构体数组
[]struct{
a interface{}//stringor[]byte
b interface{}//stringor[]byte
wantbool
}
然后创建不同的元素。
然后进行循环
每次获取其中一个赋值给tt.
然后获取其tt.a变量。
接着判断tt.b变量是否为空,如果不为空,则判断是否tt.a和tt.b相等。
如果tt.b变量为空,则判断tt.a和tt.b是否相等。
TestByteViewSlice
先定义一个结构体
tests:=[]struct{
in string
fromint
to interface{}//niltomeantheend(SliceFrom);elseint
wantstring
}
并初始化3组。
然后进行循环测试,每次循环复制给变量tt
然后从in的字符串中获取from到to的字符串,然后和期望的结果进行对比。
单独只有这两个文件执行会报一个错误如下:
.\byteview.go:49:undefined: cloneBytes
需要在加入如下函数:
funccloneBytes(b[]byte)[]byte{
c:=make([]byte,len(b))
copy(c,b)
returnc
}
测试结果
=== RUN TestByteView
--- PASS: TestByteView(0.00s)
=== RUN TestByteViewEqual
--- PASS: TestByteViewEqual(0.00s)
=== RUN TestByteViewSlice
--- PASS: TestByteViewSlice(0.00s)
PASS
ok 0.176s