package tag import ( "bytes" "testing" "git.smesh.lol/nostr/pkg/hex" ) // upperHex renders src as uppercase hex. Equals carries separate branches for // the 'A'-'F' nibbles that a lowercase encoder never reaches. func upperHex(src []byte) (out []byte) { tbl := []byte("0123456789ABCDEF") out = []byte{:len(src) * 2} for i := range src { out[i*2] = tbl[int32(src[i]>>4)] out[i*2+1] = tbl[int32(src[i]&0x0F)] } return } const zeroHex64 = "0000000000000000000000000000000000000000000000000000000000000000" func TestNewAndFree(t *testing.T) { nt := New() if nt == nil { t.Fatal("New returned nil") } if nt.Len() != 0 { t.Fatalf("New().Len() = %d, want 0", nt.Len()) } nt.T = push(nt.T, []byte("k")) if nt.Len() != 1 { t.Fatalf("Len after push = %d, want 1", nt.Len()) } nt.Free() if nt.T != nil { t.Fatal("Free did not clear the slice") } if nt.Len() != 0 { t.Fatalf("Len after Free = %d, want 0", nt.Len()) } capped := NewWithCap(8) if capped.Len() != 0 { t.Fatalf("NewWithCap(8).Len() = %d, want 0", capped.Len()) } } func TestLenNilReceiver(t *testing.T) { var nt *T if nt.Len() != 0 { t.Fatalf("nil Len = %d, want 0", nt.Len()) } } func TestLenLessSwapContains(t *testing.T) { a := NewFromBytesSlice([]byte("a"), []byte("one")) b := NewFromBytesSlice([]byte("b"), []byte("two")) if a.Len() != 2 || b.Len() != 2 { t.Fatalf("Len: a=%d b=%d, want 2 each", a.Len(), b.Len()) } if !a.Less(0, 1) { t.Fatal("Less(0,1) should be true for a