1
0
mirror of https://github.com/taigrr/gopher-os synced 2025-01-18 04:43:13 -08:00
gopher-os/kernel/mem/pmm/frame_test.go
2017-05-31 14:16:51 +01:00

32 lines
1.0 KiB
Go

package pmm
import (
"testing"
"github.com/achilleasa/gopher-os/kernel/mem"
)
func TestFrameMethods(t *testing.T) {
for order := mem.PageOrder(0); order < mem.PageOrder(10); order++ {
for frameIndex := uint64(0); frameIndex < 128; frameIndex++ {
frame := Frame(frameIndex | (uint64(order) << 56))
if !frame.IsValid() {
t.Errorf("[order %d] expected frame %d to be valid", order, frameIndex)
}
if got := frame.PageOrder(); got != order {
t.Errorf("[order %d] expected frame (%d, index: %d) call to PageOrder() to return %d; got %d", order, frame, frameIndex, order, got)
}
if exp, got := uintptr(frameIndex<<mem.PageShift), frame.Address(); got != exp {
t.Errorf("[order %d] expected frame (%d, index: %d) call to Address() to return %x; got %x", order, frame, frameIndex, exp, got)
}
if exp, got := mem.Size(mem.PageSize<<order), frame.Size(); got != exp {
t.Errorf("[order %d] expected frame (%d, index: %d) call to Size() to return %d; got %d", order, frame, frameIndex, exp, got)
}
}
}
}