mirror of
https://github.com/taigrr/gopher-os
synced 2025-01-18 04:43:13 -08:00
62 lines
1.2 KiB
Go
62 lines
1.2 KiB
Go
package vmm
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/achilleasa/gopher-os/kernel/mem/pmm"
|
|
)
|
|
|
|
func TestPageTableEntryFlags(t *testing.T) {
|
|
var (
|
|
pte pageTableEntry
|
|
flag1 = PageTableEntryFlag(1 << 10)
|
|
flag2 = PageTableEntryFlag(1 << 21)
|
|
)
|
|
|
|
if pte.HasAnyFlag(flag1 | flag2) {
|
|
t.Fatalf("expected HasAnyFlags to return false")
|
|
}
|
|
|
|
pte.SetFlags(flag1 | flag2)
|
|
|
|
if !pte.HasAnyFlag(flag1 | flag2) {
|
|
t.Fatalf("expected HasAnyFlags to return true")
|
|
}
|
|
|
|
if !pte.HasFlags(flag1 | flag2) {
|
|
t.Fatalf("expected HasFlags to return true")
|
|
}
|
|
|
|
pte.ClearFlags(flag1)
|
|
|
|
if !pte.HasAnyFlag(flag1 | flag2) {
|
|
t.Fatalf("expected HasAnyFlags to return true")
|
|
}
|
|
|
|
if pte.HasFlags(flag1 | flag2) {
|
|
t.Fatalf("expected HasFlags to return false")
|
|
}
|
|
|
|
pte.ClearFlags(flag1 | flag2)
|
|
|
|
if pte.HasAnyFlag(flag1 | flag2) {
|
|
t.Fatalf("expected HasAnyFlags to return false")
|
|
}
|
|
|
|
if pte.HasFlags(flag1 | flag2) {
|
|
t.Fatalf("expected HasFlags to return false")
|
|
}
|
|
}
|
|
|
|
func TestPageTableEntryFrameEncoding(t *testing.T) {
|
|
var (
|
|
pte pageTableEntry
|
|
physFrame = pmm.Frame(123)
|
|
)
|
|
|
|
pte.SetFrame(physFrame)
|
|
if got := pte.Frame(); got != physFrame {
|
|
t.Fatalf("expected pte.Frame() to return %v; got %v", physFrame, got)
|
|
}
|
|
}
|