feat(Go-Tool):新增根据二进制位数来存储奖励领取情况工具类,BitStoreTool、使用说明及其单测

This commit is contained in:
Huangzj
2020-10-28 17:10:55 +08:00
parent 9fadf43056
commit f13bd3d529
5 changed files with 451 additions and 0 deletions
+231
View File
@@ -0,0 +1,231 @@
/*
* @Author : huangzj
* @Time : 2020/10/27 15:19
* @Description
*/
package bitStore
import (
"Go-Tool/util/sort"
"fmt"
"testing"
)
func TestBitStore(t *testing.T) {
//fmt.Println("测试2档的情况")
//testTwo()
//fmt.Println()
//
//fmt.Println("测试10档的情况")
//testTen()
//fmt.Println()
//
//fmt.Println("测试18档的情况")
//testEighteen()
//fmt.Println()
//fmt.Println("测试33档的情况")
//testThirtyThree()
//fmt.Println()
//fmt.Println("测试58档的情况")
//testFiftyEight()
//fmt.Println()
fmt.Println("测试1000档的情况")
testOneThousand()
fmt.Println()
}
func newStoreMap(bitStore *BitStore) {
gearMap := bitStore.FindAllGearMap()
falseList := make([]int, 0)
for key, value := range gearMap {
if value == true {
falseList = append(falseList, key)
}
}
if len(falseList) == 0 {
fmt.Println("当前无未领取档位")
}
}
func getReceiveResult(bitStore *BitStore) {
gearMap1 := bitStore.FindAllGearMap()
keyList := make([]int, 0)
for key, value := range gearMap1 {
if value == true {
keyList = append(keyList, key)
}
}
sort.BubbleSort(keyList)
fmt.Println("已经领取的档位信息如下")
for value := range keyList {
fmt.Print(fmt.Sprintf("%d,", keyList[value]))
}
}
func testOneThousand() {
bitStore := NewBitStore(1000, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(3)
fmt.Println(fmt.Sprintf("这个时候领取结果 3应该返回true,结果是:%v", bitStore.IsGearReceive(3)))
bitStore.ReceiveByGear(8)
fmt.Println(fmt.Sprintf("这个时候领取结果 8应该返回true,结果是:%v", bitStore.IsGearReceive(8)))
bitStore.ReceiveByGear(16)
fmt.Println(fmt.Sprintf("这个时候领取结果 16应该返回true,结果是:%v", bitStore.IsGearReceive(16)))
bitStore.ReceiveByGear(18)
fmt.Println(fmt.Sprintf("这个时候领取结果 18应该返回true,结果是:%v", bitStore.IsGearReceive(18)))
bitStore.ReceiveByGear(27)
fmt.Println(fmt.Sprintf("这个时候领取结果 27应该返回true,结果是:%v", bitStore.IsGearReceive(27)))
bitStore.ReceiveByGear(32)
fmt.Println(fmt.Sprintf("这个时候领取结果 32应该返回true,结果是:%v", bitStore.IsGearReceive(32)))
bitStore.ReceiveByGear(33)
fmt.Println(fmt.Sprintf("这个时候领取结果 33应该返回true,结果是:%v", bitStore.IsGearReceive(33)))
bitStore.ReceiveByGear(53)
fmt.Println(fmt.Sprintf("这个时候领取结果 53应该返回true,结果是:%v", bitStore.IsGearReceive(53)))
bitStore.ReceiveByGear(44)
fmt.Println(fmt.Sprintf("这个时候领取结果 44应该返回true,结果是:%v", bitStore.IsGearReceive(44)))
bitStore.ReceiveByGear(48)
fmt.Println(fmt.Sprintf("判断当前数组是否动态增长,当前数组长度为:%d", len(bitStore.GearPickList)))
fmt.Println(fmt.Sprintf("这个时候领取结果 48应该返回true,结果是:%v", bitStore.IsGearReceive(48)))
bitStore.ReceiveByGear(123)
fmt.Println(fmt.Sprintf("这个时候领取结果 123应该返回true,结果是:%v", bitStore.IsGearReceive(123)))
fmt.Println(fmt.Sprintf("判断当前数组是否动态增长,当前数组长度为:%d", len(bitStore.GearPickList)))
getReceiveResult(bitStore)
fmt.Println()
bitStore.ReceiveByGear(376)
fmt.Println(fmt.Sprintf("这个时候领取结果 376应该返回true,结果是:%v", bitStore.IsGearReceive(376)))
fmt.Println(fmt.Sprintf("判断当前数组是否动态增长,当前数组长度为:%d", len(bitStore.GearPickList)))
bitStore.ReceiveByGear(588)
fmt.Println(fmt.Sprintf("这个时候领取结果 588应该返回true,结果是:%v", bitStore.IsGearReceive(588)))
fmt.Println(fmt.Sprintf("判断当前数组是否动态增长,当前数组长度为:%d", len(bitStore.GearPickList)))
bitStore.ReceiveByGear(997)
fmt.Println(fmt.Sprintf("这个时候领取结果 997应该返回true,结果是:%v", bitStore.IsGearReceive(997)))
fmt.Println()
getReceiveResult(bitStore)
}
func testFiftyEight() {
bitStore := NewBitStore(58, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(3)
fmt.Println(fmt.Sprintf("这个时候领取结果 3应该返回true,结果是:%v", bitStore.IsGearReceive(3)))
bitStore.ReceiveByGear(8)
fmt.Println(fmt.Sprintf("这个时候领取结果 8应该返回true,结果是:%v", bitStore.IsGearReceive(8)))
bitStore.ReceiveByGear(16)
fmt.Println(fmt.Sprintf("这个时候领取结果 16应该返回true,结果是:%v", bitStore.IsGearReceive(16)))
bitStore.ReceiveByGear(18)
fmt.Println(fmt.Sprintf("这个时候领取结果 18应该返回true,结果是:%v", bitStore.IsGearReceive(18)))
bitStore.ReceiveByGear(27)
fmt.Println(fmt.Sprintf("这个时候领取结果 27应该返回true,结果是:%v", bitStore.IsGearReceive(27)))
bitStore.ReceiveByGear(32)
fmt.Println(fmt.Sprintf("这个时候领取结果 32应该返回true,结果是:%v", bitStore.IsGearReceive(32)))
bitStore.ReceiveByGear(33)
fmt.Println(fmt.Sprintf("这个时候领取结果 33应该返回true,结果是:%v", bitStore.IsGearReceive(33)))
bitStore.ReceiveByGear(53)
fmt.Println(fmt.Sprintf("这个时候领取结果 53应该返回true,结果是:%v", bitStore.IsGearReceive(53)))
bitStore.ReceiveByGear(44)
fmt.Println(fmt.Sprintf("这个时候领取结果 44应该返回true,结果是:%v", bitStore.IsGearReceive(44)))
bitStore.ReceiveByGear(48)
fmt.Println(fmt.Sprintf("这个时候领取结果 48应该返回true,结果是:%v", bitStore.IsGearReceive(48)))
fmt.Println()
gearMap1 := bitStore.FindAllGearMap()
for key, value := range gearMap1 {
fmt.Println(fmt.Sprintf("当前map的key为%d,当前map的value为%v", key, value))
}
}
func testThirtyThree() {
bitStore := NewBitStore(33, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(3)
fmt.Println(fmt.Sprintf("这个时候领取结果 3应该返回true,结果是:%v", bitStore.IsGearReceive(3)))
bitStore.ReceiveByGear(8)
fmt.Println(fmt.Sprintf("这个时候领取结果 8应该返回true,结果是:%v", bitStore.IsGearReceive(8)))
bitStore.ReceiveByGear(16)
fmt.Println(fmt.Sprintf("这个时候领取结果 16应该返回true,结果是:%v", bitStore.IsGearReceive(16)))
bitStore.ReceiveByGear(18)
fmt.Println(fmt.Sprintf("这个时候领取结果 18应该返回true,结果是:%v", bitStore.IsGearReceive(18)))
bitStore.ReceiveByGear(27)
fmt.Println(fmt.Sprintf("这个时候领取结果 27应该返回true,结果是:%v", bitStore.IsGearReceive(27)))
bitStore.ReceiveByGear(32)
fmt.Println(fmt.Sprintf("这个时候领取结果 32应该返回true,结果是:%v", bitStore.IsGearReceive(32)))
bitStore.ReceiveByGear(33)
fmt.Println(fmt.Sprintf("这个时候领取结果 33应该返回true,结果是:%v", bitStore.IsGearReceive(33)))
fmt.Println()
gearMap1 := bitStore.FindAllGearMap()
for key, value := range gearMap1 {
fmt.Println(fmt.Sprintf("当前map的key为%d,当前map的value为%v", key, value))
}
}
func testEighteen() {
bitStore := NewBitStore(18, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(3)
fmt.Println(fmt.Sprintf("这个时候领取结果 3应该返回true,结果是:%v", bitStore.IsGearReceive(3)))
bitStore.ReceiveByGear(8)
fmt.Println(fmt.Sprintf("这个时候领取结果 8应该返回true,结果是:%v", bitStore.IsGearReceive(8)))
bitStore.ReceiveByGear(16)
fmt.Println(fmt.Sprintf("这个时候领取结果 16应该返回true,结果是:%v", bitStore.IsGearReceive(16)))
bitStore.ReceiveByGear(18)
fmt.Println(fmt.Sprintf("这个时候领取结果 18应该返回true,结果是:%v", bitStore.IsGearReceive(18)))
fmt.Println()
gearMap1 := bitStore.FindAllGearMap()
for key, value := range gearMap1 {
fmt.Println(fmt.Sprintf("当前map的key为%d,当前map的value为%v", key, value))
}
}
func testTen() {
bitStore := NewBitStore(10, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(3)
fmt.Println(fmt.Sprintf("这个时候领取结果 3应该返回true,结果是:%v", bitStore.IsGearReceive(3)))
fmt.Println()
bitStore.ReceiveByGear(7)
fmt.Println(fmt.Sprintf("这个时候领取结果 7应该返回true,结果是:%v", bitStore.IsGearReceive(7)))
fmt.Println()
gearMap1 := bitStore.FindAllGearMap()
for key, value := range gearMap1 {
fmt.Println(fmt.Sprintf("当前map的key为%d,当前map的value为%v", key, value))
}
}
func testTwo() {
bitStore := NewBitStore(2, nil)
newStoreMap(bitStore) //初始化的校验
fmt.Println()
bitStore.ReceiveByGear(1)
fmt.Println(fmt.Sprintf("这个时候领取结果 1应该返回true,结果是:%v", bitStore.IsGearReceive(1)))
fmt.Println()
gearMap1 := bitStore.FindAllGearMap()
for key, value := range gearMap1 {
fmt.Println(fmt.Sprintf("当前map的key为%d,当前map的value为%v", key, value))
}
}