goapple2/disk/disk_test.go

59 lines
1.4 KiB
Go

package disk
import (
"math/rand"
"testing"
)
func TestPreNybble(t *testing.T) {
var source [256]byte
for i := range source {
source[i] = byte(i)
}
target := PreNybble(source[:])
for i := range target {
if target[i] > 0x3F {
t.Errorf("target[%d] too large: 0x%02X", i, target[i])
}
}
}
func TestPrePostNybble(t *testing.T) {
var source [256]byte
for i := range source {
source[i] = byte(i)
}
target := PreNybble(source[:])
sourceCheck := PostNybble(target[:])
for i := range source {
if source[i] != sourceCheck[i] {
t.Errorf("source, sourceCheck differ at %d: 0x%02X != 0x%02X", i, source[i], sourceCheck[i])
}
}
}
func TestNybbleAndBack(t *testing.T) {
var randomDosDisk [DOS_DISK_BYTES]byte
for i := range randomDosDisk {
randomDosDisk[i] = byte(rand.Intn(256))
}
sectorOrder := Dos33PhysicalToLogicalSectorMap
tracks, err := dos16ToNybbleTracks(randomDosDisk[:], 0, DEFAULT_PRESYNC, DEFAULT_INTRASYNC, sectorOrder)
if err != nil {
t.Fatal(err)
}
nyb := NewNybble(tracks)
bytesOut, err := NybbleToDos16(nyb, sectorOrder)
if err != nil {
t.Fatal(err)
}
if len(bytesOut) != DOS_DISK_BYTES {
t.Fatalf("Expected %d bytes out as dos disk, got %d", DOS_DISK_BYTES, len(bytesOut))
}
for i := range bytesOut {
if bytesOut[i] != randomDosDisk[i] {
t.Fatalf("Difference at %d: %d should be %d", i, bytesOut[i], randomDosDisk[i])
}
}
}