github.com/zuoyebang/bitalosdb@v1.1.1-0.20240516111551-79a8c4d8ce20/bithash/table_test.go (about) 1 // Copyright 2021 The Bitalosdb author(hustxrb@163.com) and other contributors. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package bithash 16 17 import ( 18 "fmt" 19 "testing" 20 21 "github.com/zuoyebang/bitalosdb/internal/vfs" 22 ) 23 24 var testMemFs = vfs.NewMem() 25 var testFs = vfs.Default 26 27 func TestFooter(t *testing.T) { 28 f0, err := testMemFs.Create("filename") 29 if err != nil { 30 panic(err) 31 } 32 var ft = footer{ 33 metaBH: BlockHandle{5, 4}, 34 } 35 buf := make([]byte, bithashFooterLen) 36 data := ft.encode(buf) 37 fmt.Println("write data:", data) 38 f0.Write([]byte("hello")) 39 n, err := f0.Write(data) 40 if err != nil { 41 panic(err) 42 } 43 if err := f0.Sync(); err != nil { 44 panic(err) 45 } 46 fmt.Println("n:", n) 47 if err := f0.Close(); err != nil { 48 panic(err) 49 } 50 f1, err := testMemFs.Open("filename") 51 if err != nil { 52 panic(err) 53 } 54 ftt, err := readTableFooter(f1) 55 if err != nil { 56 panic(err) 57 } 58 fmt.Printf("read footer:%+v", ftt) 59 } 60 61 func TestFooterEncodeDecode(t *testing.T) { 62 var ft = footer{ 63 metaBH: BlockHandle{1, 2}, 64 } 65 buf := make([]byte, bithashFooterLen) 66 newbuf := ft.encode(buf) 67 fmt.Println("encode:", newbuf) 68 f, err := decodeTableFooter(newbuf, bithashFooterLen) 69 if err != nil { 70 panic(err) 71 } 72 fmt.Printf("decode result:%+v", f) 73 }