write mca region file (test and optimization)
This commit is contained in:
@ -3,7 +3,7 @@ package region
|
||||
import (
|
||||
"bytes"
|
||||
"compress/zlib"
|
||||
"io/ioutil"
|
||||
"github.com/Tnze/go-mc/nbt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
@ -26,46 +26,43 @@ func TestReadRegion(t *testing.T) {
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer r.Close()
|
||||
|
||||
s, err := r.ReadSector(In(31, 0))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
for i := 0; i < 32; i++ {
|
||||
for j := 0; j < 32; j++ {
|
||||
s, err := r.ReadSector(In(i, j))
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
r, err := zlib.NewReader(bytes.NewReader(s[1:]))
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
var b interface{}
|
||||
err = nbt.NewDecoder(r).Decode(&b)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
//t.Log(b)
|
||||
}
|
||||
}
|
||||
|
||||
reader, err := zlib.NewReader(bytes.NewReader(s[1:]))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
s, err = ioutil.ReadAll(reader)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
t.Log(s)
|
||||
}
|
||||
|
||||
func TestSectorsFinder(t *testing.T) {
|
||||
sectors := []byte{
|
||||
1, 1,
|
||||
0, 1, //2
|
||||
0, 0, 1, //4
|
||||
0, 0, 0, 1, 1, //7
|
||||
0, 0, 0, 0, 0, 1, //12
|
||||
0, 0, 0, 0, 0, 0, 0, //18
|
||||
func TestFindSpace(t *testing.T) {
|
||||
r := &Region{
|
||||
sectors: map[int32]bool{
|
||||
0: true, 1: true,
|
||||
2: false, 3: true,
|
||||
4: false, 5: false, 6: true,
|
||||
7: false, 8: false, 9: false, 10: true, 11: true,
|
||||
12: false, 13: false, 14: false, 15: false, 16: false, 17: true,
|
||||
18: false, 19: false, 20: false, 21: false, 22: false, 23: false, 24: false,
|
||||
},
|
||||
}
|
||||
|
||||
scan := func(need int) (index int) {
|
||||
for i := 0; i < need; i++ {
|
||||
if sectors[index+i] != 0 {
|
||||
index += i + 1
|
||||
i = -1 // 0 for next loop
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
for _, test := range []struct{ need, index int }{
|
||||
for _, test := range []struct{ need, index int32 }{
|
||||
{0, 0},
|
||||
{1, 2},
|
||||
{2, 4},
|
||||
@ -74,7 +71,7 @@ func TestSectorsFinder(t *testing.T) {
|
||||
{5, 12},
|
||||
{6, 18},
|
||||
} {
|
||||
i := scan(test.need)
|
||||
i := r.findSpace(test.need)
|
||||
if i != test.index {
|
||||
t.Errorf("scan sctors fail: get %d, want %d", i, test.index)
|
||||
}
|
||||
|
Reference in New Issue
Block a user