50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
"unsafe"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
// go test -v homework_test.go
|
|
|
|
func Defragment(memory []byte, pointers []unsafe.Pointer) {
|
|
// need to implement
|
|
}
|
|
|
|
func TestDefragmentation(t *testing.T) {
|
|
var fragmentedMemory = []byte{
|
|
0xFF, 0x00, 0x00, 0x00,
|
|
0x00, 0xFF, 0x00, 0x00,
|
|
0x00, 0x00, 0xFF, 0x00,
|
|
0x00, 0x00, 0x00, 0xFF,
|
|
}
|
|
|
|
var fragmentedPointers = []unsafe.Pointer{
|
|
unsafe.Pointer(&fragmentedMemory[0]),
|
|
unsafe.Pointer(&fragmentedMemory[5]),
|
|
unsafe.Pointer(&fragmentedMemory[10]),
|
|
unsafe.Pointer(&fragmentedMemory[15]),
|
|
}
|
|
|
|
var defragmentedPointers = []unsafe.Pointer{
|
|
unsafe.Pointer(&fragmentedMemory[0]),
|
|
unsafe.Pointer(&fragmentedMemory[1]),
|
|
unsafe.Pointer(&fragmentedMemory[2]),
|
|
unsafe.Pointer(&fragmentedMemory[3]),
|
|
}
|
|
|
|
var defragmentedMemory = []byte{
|
|
0xFF, 0xFF, 0xFF, 0xFF,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0x00,
|
|
}
|
|
|
|
Defragment(fragmentedMemory, fragmentedPointers)
|
|
assert.True(t, reflect.DeepEqual(defragmentedMemory, fragmentedMemory))
|
|
assert.True(t, reflect.DeepEqual(defragmentedPointers, fragmentedPointers))
|
|
}
|