tonkeeper的toogo库的Hashmap序列化有bug

package tonapiservice

import (
	"fmt"
	"testing"

	"github.com/tonkeeper/tongo/boc"
	"github.com/tonkeeper/tongo/tlb"
)

func TestHashmapE(t *testing.T) {
	// Hashmap的序列化有bug,数据一样的情况下,有时候会提示not enouth bits.

	c := boc.NewCell()
	//write function id to cell
	if err := c.WriteUint(uint64(0), 32); err != nil {
		panic(err)
	}

	type BuyInfo struct {
		StartLuckNum uint16 // 开始的彩票号码,从1开始
		Amount       uint16 // 购买的nifi数量
	}

	// go map
	orders := map[uint32]BuyInfo{
		1:  {StartLuckNum: 1, Amount: 2},
		2:  {StartLuckNum: 3, Amount: 4},
		3:  {StartLuckNum: 5, Amount: 6},
		4:  {StartLuckNum: 7, Amount: 8},
		5:  {StartLuckNum: 9, Amount: 10},
		6:  {StartLuckNum: 11, Amount: 12},
		7:  {StartLuckNum: 13, Amount: 14},
		8:  {StartLuckNum: 15, Amount: 16},
		9:  {StartLuckNum: 17, Amount: 18},
		10: {StartLuckNum: 19, Amount: 20},
	}

	type Msg struct {
		RoundId uint32
		Orders  tlb.Hashmap[tlb.Uint32, BuyInfo] // 订单号码:购买信息
	}

	// elb map
	msg := Msg{
		RoundId: 10000,
	}
	var keys []tlb.Uint32
	var values []BuyInfo
	for key, value := range orders {
		keys = append(keys, tlb.Uint32(key))
		values = append(values, value)
	}
	msg.Orders = tlb.NewHashmap(keys, values)

	// 序列化
	if err := tlb.Marshal(c, msg); err != nil {
		panic(err)
	}

	b, _ := c.ToBoc()
	fmt.Println(b)
}

 

这个代码有时候会提示not enouth bits,有时候又正常。

posted @ 2024-10-19 17:00  若-飞  阅读(4)  评论(0编辑  收藏  举报