13.go开源groupcache项目笔记——byteview_test测试代码

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

你可能感兴趣的:(go语言开源项目)