zworld/engine/renderapi/cache/allocator/allocator_test.go

50 lines
1.4 KiB
Go
Raw Permalink Normal View History

2024-01-14 22:56:06 +08:00
package allocator_test
import (
. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
"zworld/engine/renderapi/cache/allocator"
)
var _ = Describe("", func() {
It("allocates!", func() {
fl := allocator.New(1024)
block, err := fl.Alloc(16)
Expect(err).ToNot(HaveOccurred())
Expect(block.Size).To(Equal(256))
err = fl.Free(block.Offset)
Expect(err).ToNot(HaveOccurred())
block2, err := fl.Alloc(257)
Expect(err).ToNot(HaveOccurred())
Expect(block2.Size).To(Equal(512))
})
It("allocates correct sizes", func() {
fl := allocator.New(1024)
block, err := fl.Alloc(257)
Expect(err).ToNot(HaveOccurred())
Expect(block.Size).To(Equal(512))
})
It("assigns tiers correctly", func() {
Expect(allocator.GetBucketTier(allocator.MinAlloc)).To(Equal(0))
Expect(allocator.GetBucketTier(allocator.MinAlloc + 1)).To(Equal(1))
Expect(allocator.GetBucketTier(2 * allocator.MinAlloc)).To(Equal(1))
Expect(allocator.GetBucketTier(2*allocator.MinAlloc + 1)).To(Equal(2))
})
It("checks powers of two", func() {
Expect(allocator.IsPowerOfTwo(2)).To(BeTrue())
Expect(allocator.IsPowerOfTwo(4)).To(BeTrue())
Expect(allocator.IsPowerOfTwo(8)).To(BeTrue())
Expect(allocator.IsPowerOfTwo(16)).To(BeTrue())
Expect(allocator.IsPowerOfTwo(0)).To(BeFalse())
Expect(allocator.IsPowerOfTwo(3)).To(BeFalse())
Expect(allocator.IsPowerOfTwo(121)).To(BeFalse())
})
})