113 lines
1.9 KiB
Go
113 lines
1.9 KiB
Go
package freelist
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func createFreeList() (_ *FreeList, err error) {
|
|
return New(Options{
|
|
PageSize: 20,
|
|
BaseFilePath: "test.basefree",
|
|
DeltaFilePath: "test.deltafree",
|
|
FrozenPageCount: 2,
|
|
})
|
|
}
|
|
|
|
func TestBuffer(t *testing.T) {
|
|
freeList, err := createFreeList()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
pageNumbers := []uint32{1, 2, 3, 4}
|
|
//pageNumbers := []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
|
|
|
|
err = freeList.AddPageNumbers(pageNumbers)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for range len(pageNumbers) + 1 {
|
|
pageNo, err := freeList.GetPageNumber()
|
|
fmt.Println(pageNo, err)
|
|
}
|
|
}
|
|
|
|
func TestSave(t *testing.T) {
|
|
freeList, err := createFreeList()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
pageNumbers := []uint32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
|
|
|
|
err = freeList.AddPageNumbers(pageNumbers)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = freeList.Merge()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
// for range len(pageNumbers) + 1 {
|
|
// pageNo, err := freeList.GetPageNumber()
|
|
// fmt.Println(pageNo, err)
|
|
// }
|
|
}
|
|
|
|
func TestDelta(t *testing.T) {
|
|
freeList, err := createFreeList()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
serialized := []byte{9, 0, 0, 0, 10, 0, 0, 0}
|
|
|
|
err = freeList.Restore(serialized)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
for range 3 {
|
|
pageNo, err := freeList.GetPageNumber()
|
|
fmt.Println(pageNo, err)
|
|
}
|
|
|
|
err = freeList.AddPageNumbers([]uint32{20, 21, 22})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = freeList.AddPageNumbers([]uint32{23, 24, 25, 26})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
serialized, err = freeList.Serialize()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
fmt.Println("free serialized:", serialized)
|
|
|
|
err = freeList.Merge()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// func TestGetFromFreeList(t *testing.T) {
|
|
// freeList, err := createFreeList()
|
|
// if err != nil {
|
|
// t.Fatal(err)
|
|
// }
|
|
|
|
// for range 4 {
|
|
// pageNo, err := freeList.GetPageNumber()
|
|
// fmt.Println(pageNo, err)
|
|
// }
|
|
// }
|