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

本文详细介绍了go开源项目groupcache中的ByteView测试代码,包括如何通过Of函数创建ByteView实例,以及如何使用TestByteViewEqual和TestByteViewSlice进行单元测试验证。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值