本文整理汇总了Golang中github.com/cznic/fileutil.IsEOF函数的典型用法代码示例。如果您正苦于以下问题:Golang IsEOF函数的具体用法?Golang IsEOF怎么用?Golang IsEOF使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了IsEOF函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: WriteAt
func (f *bitFiler) WriteAt(b []byte, off int64) (n int, err error) {
off0 := off
pgI := off >> bfBits
pgO := int(off & bfMask)
n = len(b)
rem := n
var nc int
for rem != 0 {
pg := f.m[pgI]
if pg == nil {
pg = &bitPage{}
if f.parent != nil {
_, err = f.parent.ReadAt(pg.data[:], off&^bfMask)
if err != nil && !fileutil.IsEOF(err) {
return
}
err = nil
}
f.m[pgI] = pg
}
nc = copy(pg.data[pgO:], b)
pgI++
pg.dirty = true
for i := pgO; i < pgO+nc; i++ {
pg.flags[i>>3] |= bitmask[i&7]
}
pgO = 0
rem -= nc
b = b[nc:]
off += int64(nc)
}
f.size = mathutil.MaxInt64(f.size, off0+int64(n))
return
}
开发者ID:sinfomicien,项目名称:rkt,代码行数:35,代码来源:xact.go
示例2: Read
// Read returns the next Source ScannerRune.
func (s *Source) Read() (r ScannerRune) {
for {
r.Position = s.Position()
r.Rune, r.Size, r.Err = s.tos.reader.ReadRune()
if r.Err == nil || !fileutil.IsEOF(r.Err) {
p := &s.tos.position
p.Offset += r.Size
if r.Rune != '\n' {
p.Column++
} else {
p.Line++
p.Column = 1
}
return
}
// err == os.EOF, try parent source
if sp := len(s.stack) - 1; sp >= 0 {
s.tos = s.stack[sp]
s.stack = s.stack[:sp]
} else {
r.Rune, r.Size = 0, 0
return
}
}
}
开发者ID:cznic,项目名称:lexer,代码行数:27,代码来源:source.go
示例3: getc
func (l *lex) getc() (b byte, err error) {
switch b = l.current; b {
case 0:
break
case '\n':
l.line++
l.column = 0
fallthrough
default:
l.column++
l.buf = append(l.buf, b)
}
l.current = 0
b, err = l.src.ReadByte()
if err != nil {
b = 0
if !fileutil.IsEOF(err) {
return
}
err = nil
}
l.ofs++
l.current = b
return
}
开发者ID:cznic,项目名称:dns,代码行数:25,代码来源:pcat.go
示例4: ReadAt
func (f *bitFiler) ReadAt(b []byte, off int64) (n int, err error) {
avail := f.size - off
pgI := off >> bfBits
pgO := int(off & bfMask)
rem := len(b)
if int64(rem) >= avail {
rem = int(avail)
err = io.EOF
}
for rem != 0 && avail > 0 {
pg := f.m[pgI]
if pg == nil {
pg = &bitPage{}
pg.pdata = buffer.CGet(bfSize)
pg.data = *pg.pdata
if f.parent != nil {
_, err = f.parent.ReadAt(pg.data, off&^bfMask)
if err != nil && !fileutil.IsEOF(err) {
return
}
err = nil
}
f.m[pgI] = pg
}
nc := copy(b[:mathutil.Min(rem, bfSize)], pg.data[pgO:])
pgI++
pgO = 0
rem -= nc
n += nc
b = b[nc:]
off += int64(nc)
}
return
}
开发者ID:brgmnn,项目名称:syncthing,代码行数:35,代码来源:xact.go
示例5: WriteAt
func (f *bitFiler) WriteAt(b []byte, off int64) (n int, err error) {
off0 := off
pgI := off >> bfBits
pgO := int(off & bfMask)
n = len(b)
rem := n
var nc int
for rem != 0 {
pg := f.m[pgI]
if pg == nil {
pg = &bitPage{}
pg.pdata = buffer.CGet(bfSize)
pg.data = *pg.pdata
if f.parent != nil {
_, err = f.parent.ReadAt(pg.data, off&^bfMask)
if err != nil && !fileutil.IsEOF(err) {
return
}
err = nil
}
f.m[pgI] = pg
}
nc = copy(pg.data[pgO:], b)
pgI++
pg.dirty = true
pgO = 0
rem -= nc
b = b[nc:]
off += int64(nc)
}
f.size = mathutil.MaxInt64(f.size, off0+int64(n))
return
}
开发者ID:brgmnn,项目名称:syncthing,代码行数:34,代码来源:xact.go
示例6: readFrom
func readFrom(f Interface, r io.Reader) (n int64, err error) {
f.Truncate(0)
p := buffer.Get(copyBufSize)
b := *p
defer buffer.Put(p)
var off int64
var werr error
for {
rn, rerr := r.Read(b)
if rn != 0 {
_, werr = f.WriteAt(b[:rn], off)
n += int64(rn)
off += int64(rn)
}
if rerr != nil {
if !fileutil.IsEOF(rerr) {
err = rerr
}
break
}
if werr != nil {
err = werr
break
}
}
return n, err
}
开发者ID:brgmnn,项目名称:syncthing,代码行数:29,代码来源:file.go
示例7: writeTo
func writeTo(f Interface, w io.Writer) (n int64, err error) {
p := buffer.Get(copyBufSize)
b := *p
defer buffer.Put(p)
var off int64
var werr error
for {
rn, rerr := f.ReadAt(b, off)
if rn != 0 {
_, werr = w.Write(b[:rn])
n += int64(rn)
off += int64(rn)
}
if rerr != nil {
if !fileutil.IsEOF(rerr) {
err = rerr
}
break
}
if werr != nil {
err = werr
break
}
}
return n, err
}
开发者ID:brgmnn,项目名称:syncthing,代码行数:28,代码来源:file.go
示例8: WriteTo
// WriteTo is a helper to copy/persist File's content to w. If w is also
// an io.WriterAt then WriteTo may attempt to _not_ write any big, for some
// value of big, runs of zeros, i.e. it will attempt to punch holes, where
// possible, in `w` if that happens to be a freshly created or to zero length
// truncated OS file. 'n' reports the number of bytes written to 'w'.
func (f *File) WriteTo(w io.Writer) (n int64, err error) {
var (
b [pgSize]byte
wn, rn int
off int64
rerr error
)
if wa, ok := w.(io.WriterAt); ok {
fsize, err := f.Size()
if err != nil {
return n, err
}
lastPgI := fsize >> pgBits
for pgI := int64(0); pgI <= lastPgI; pgI++ {
sz := pgSize
if pgI == lastPgI {
sz = int(fsize & pgMask)
}
v, err := (*Array)(f).Get(pgI)
if err != nil {
return n, err
}
pg, _ := v.([]byte)
if len(pg) != 0 {
wn, err = wa.WriteAt(pg[:sz], off)
if err != nil {
return n, err
}
n += int64(wn)
off += int64(sz)
if wn != sz {
return n, io.ErrShortWrite
}
}
}
return n, err
}
var werr error
for rerr == nil {
if rn, rerr = f.ReadAt(b[:], off); rn != 0 {
off += int64(rn)
if wn, werr = w.Write(b[:rn]); werr != nil {
return n, werr
}
n += int64(wn)
}
}
if !fileutil.IsEOF(rerr) {
err = rerr
}
return
}
开发者ID:pmezard,项目名称:exp,代码行数:63,代码来源:file.go
示例9: WriteTo
// WriteTo is a helper to copy/persist MemFiler's content to w. If w is also
// an io.WriterAt then WriteTo may attempt to _not_ write any big, for some
// value of big, runs of zeros, i.e. it will attempt to punch holes, where
// possible, in `w` if that happens to be a freshly created or to zero length
// truncated OS file. 'n' reports the number of bytes written to 'w'.
func (f *MemFiler) WriteTo(w io.Writer) (n int64, err error) {
var (
b [pgSize]byte
wn, rn int
off int64
rerr error
)
if wa, ok := w.(io.WriterAt); ok {
lastPgI := f.size >> pgBits
for pgI := int64(0); pgI <= lastPgI; pgI++ {
sz := pgSize
if pgI == lastPgI {
sz = int(f.size & pgMask)
}
pg := f.m[pgI]
if pg != nil {
wn, err = wa.WriteAt(pg[:sz], off)
if err != nil {
return
}
n += int64(wn)
off += int64(sz)
if wn != sz {
return n, io.ErrShortWrite
}
}
}
return
}
var werr error
for rerr == nil {
if rn, rerr = f.ReadAt(b[:], off); rn != 0 {
off += int64(rn)
if wn, werr = w.Write(b[:rn]); werr != nil {
return n, werr
}
n += int64(wn)
}
}
if !fileutil.IsEOF(rerr) {
err = rerr
}
return
}
开发者ID:sinfomicien,项目名称:rkt,代码行数:53,代码来源:memfiler.go
示例10: getc
func (l *lex) getc(c byte) byte {
if c != 0 {
l.buf = append(l.buf, c)
}
if b, err := l.src.ReadByte(); err == nil {
l.peek = b
if b == '\n' {
l.begin(sc_LINE_START)
l.line++
l.column = 1
} else {
l.column++
}
return b
} else {
if fileutil.IsEOF(err) {
l.peek = 0
return 0
}
panic(err)
}
}
开发者ID:cznic,项目名称:dns,代码行数:22,代码来源:scanner.go
示例11: Scan
// Scan scans a pcat formatted text file from src, assuming file name is
// 'name'. Handler 'handler' is called for every Record found in src. If
// handler returns false the scanning process is aborted and Scan returns err
// == nil. If there is any error detected while scanning then the scanning is
// aborted as well and the error is returned.
func Scan(name string, src io.ByteReader, handler func(*Record) bool) (err error) {
l := newLex(src)
defer func() {
if e := recover(); e != nil {
x, ok := e.(error)
if !ok || !fileutil.IsEOF(x) {
err = fmt.Errorf("%s:%d:%d %s", name, l.line, l.column, e)
}
}
}()
for {
var r *Record
switch r, err = l.scan(); {
case err != nil:
panic(err)
case r == nil || !handler(r):
return
}
}
panic("unreachable")
}
开发者ID:cznic,项目名称:dns,代码行数:28,代码来源:pcat.go
示例12: ReadFrom
// ReadFrom is a helper to populate MemFiler's content from r. 'n' reports the
// number of bytes read from 'r'.
func (f *MemFiler) ReadFrom(r io.Reader) (n int64, err error) {
if err = f.Truncate(0); err != nil {
return
}
var (
b [pgSize]byte
rn int
off int64
)
var rerr error
for rerr == nil {
if rn, rerr = r.Read(b[:]); rn != 0 {
f.WriteAt(b[:rn], off)
off += int64(rn)
n += int64(rn)
}
}
if !fileutil.IsEOF(rerr) {
err = rerr
}
return
}
开发者ID:sinfomicien,项目名称:rkt,代码行数:26,代码来源:memfiler.go
示例13: TestseekLast
func TestseekLast(t *testing.T) {
bt := NewBTree(nil)
enum, err := bt.seekFirst()
if !fileutil.IsEOF(err) {
t.Fatal(err)
}
bt.Set([]byte("a"), []byte("b"))
enum, err = bt.seekFirst()
if err != nil {
t.Fatal(err)
}
err = enum.prev()
if !fileutil.IsEOF(err) {
t.Fatal(err)
}
err = enum.next()
if !fileutil.IsEOF(err) {
t.Fatal(err)
}
k, v, err := enum.current()
if err != nil {
t.Fatal(err)
}
if string(k) != "a" || string(v) != "b" {
t.Fatal(k, v)
}
bt.Set([]byte("c"), []byte("d"))
enum, err = bt.seekLast()
if err != nil {
t.Fatal(err)
}
err = enum.next()
if !fileutil.IsEOF(err) {
t.Fatal(err)
}
k, v, err = enum.current()
if err != nil {
t.Fatal(err)
}
if string(k) != "c" || string(v) != "d" {
t.Fatal(k, v)
}
err = enum.prev()
if err != nil {
t.Fatal(err)
}
k, v, err = enum.current()
if err != nil {
t.Fatal(err)
}
if string(k) != "a" || string(v) != "b" {
t.Fatal(k, v)
}
}
开发者ID:klizhentas,项目名称:acbuild,代码行数:67,代码来源:btree_test.go
示例14: TestbTreePrev
func TestbTreePrev(t *testing.T) {
N := int64(*testN)
tree := NewBTree(nil)
enum, _, err := tree.seek(enc8(0))
if err != nil {
t.Fatal(err)
}
if _, _, err = enum.current(); !fileutil.IsEOF(err) {
t.Fatal(err)
}
if err = enum.next(); !fileutil.IsEOF(err) {
t.Fatal(err)
}
if err = enum.prev(); !fileutil.IsEOF(err) {
t.Fatal(err)
}
// Fill
for i := int64(1); i <= N; i++ {
tree.Set(enc8(10*i), enc8(10*i+1))
}
var eq bool
enum, eq, err = tree.seek(enc8(0))
if err != nil {
t.Fatal(err)
}
if eq {
t.Fatal(eq)
}
// index: 0
if _, _, err = enum.current(); err != nil {
t.Fatal(err)
}
if err = enum.prev(); !fileutil.IsEOF(err) {
t.Fatal(err)
}
enum, eq, err = tree.seek(enc8(N * 10))
if err != nil {
t.Fatal(err)
}
if !eq {
t.Fatal(eq)
}
// index: N-1
if _, _, err = enum.current(); err != nil {
t.Fatal(err)
}
if err = enum.prev(); N > 1 && err != nil {
t.Fatal(err)
}
enum, eq, err = tree.seek(enc8(N*10 + 1))
if err != nil {
t.Fatal(err)
}
if eq {
t.Fatal(eq)
}
// index: N
if _, _, err = enum.current(); !fileutil.IsEOF(err) {
t.Fatal(err)
}
if err = enum.prev(); err != nil {
t.Fatal(err)
}
enum, _, err = tree.seek(enc8(N * 10))
if err != nil {
t.Fatal(err)
}
for i := N; i >= 1; i-- {
expKey, expValue := enc8(10*i), enc8(10*i+1)
k, v, err := enum.current()
if err != nil {
t.Fatal(err)
}
if !bytes.Equal(k, expKey) {
t.Fatalf("%d k|% x| expK|% x| %s\n", i, k, expKey, tree.root.String(tree.store))
}
if !bytes.Equal(v, expValue) {
t.Fatal(i)
//.........这里部分代码省略.........
开发者ID:klizhentas,项目名称:acbuild,代码行数:101,代码来源:btree_test.go
示例15: TestSeekPrev
func TestSeekPrev(t *testing.T) {
// seeking within 3 keys: 10, 20, 30
table := []struct {
k int
hit bool
keys []int
}{
{5, false, []int{10}},
{10, true, []int{10}},
{15, false, []int{20, 10}},
{20, true, []int{20, 10}},
{25, false, []int{30, 20, 10}},
{30, true, []int{30, 20, 10}},
{35, false, []int{}},
}
for i, test := range table {
down := test.keys
db, err := CreateMem(opts())
if err != nil {
t.Fatal(i, err)
}
if err := db.Set(n2b(10), n2b(100)); err != nil {
t.Fatal(i, err)
}
if err := db.Set(n2b(20), n2b(200)); err != nil {
t.Fatal(i, err)
}
if err := db.Set(n2b(30), n2b(300)); err != nil {
t.Fatal(i, err)
}
for brokenSerial := 0; brokenSerial < 16; brokenSerial++ {
en, hit, err := db.Seek(n2b(test.k))
if err != nil {
t.Fatal(err)
}
if g, e := hit, test.hit; g != e {
t.Fatal(i, g, e)
}
j := 0
for {
if brokenSerial&(1<<uint(j)) != 0 {
if err := db.Set(n2b(20), n2b(200)); err != nil {
t.Fatal(i, err)
}
}
k, v, err := en.Prev()
if err != nil {
if !fileutil.IsEOF(err) {
t.Fatal(i, err)
}
break
}
if g, e := len(k), 8; g != e {
t.Fatal(i, g, e)
}
if j >= len(down) {
t.Fatal(i, j, brokenSerial)
}
if g, e := b2n(k), down[j]; g != e {
t.Fatal(i, j, brokenSerial, g, e)
}
if g, e := len(v), 8; g != e {
t.Fatal(i, g, e)
}
if g, e := b2n(v), 10*down[j]; g != e {
t.Fatal(i, g, e)
}
j++
}
if g, e := j, len(down); g != e {
t.Fatal(i, j, g, e)
}
}
}
}
开发者ID:mervin0502,项目名称:kv,代码行数:93,代码来源:all_test.go
示例16: testFilerReadAtWriteAt
func testFilerReadAtWriteAt(t *testing.T, nf newFunc) {
f := nf()
t.Log(f.Name())
defer func() {
if err := f.Close(); err != nil {
t.Error(err)
}
}()
if _, ok := f.(*RollbackFiler); ok {
if err := f.BeginUpdate(); err != nil {
t.Fatal(err)
}
defer func() {
if err := f.EndUpdate(); err != nil {
t.Error(err)
}
}()
}
const (
N = 1 << 16
M = 2e2
)
s := make([]byte, N)
e := make([]byte, N)
rnd := rand.New(rand.NewSource(42))
for i := range e {
s[i] = byte(rnd.Intn(256))
}
n2 := 0
for i := 0; i < M; i++ {
var from, to int
for {
from = rnd.Intn(N)
to = rnd.Intn(N)
if from != to {
break
}
}
if from > to {
from, to = to, from
}
for i := range s[from:to] {
s[from+i] = byte(rnd.Intn(256))
}
copy(e[from:to], s[from:to])
if to > n2 {
n2 = to
}
n, err := f.WriteAt(s[from:to], int64(from))
if err != nil {
t.Error(err)
return
}
if g, e := n, to-from; g != e {
t.Error(g, e)
return
}
}
fsz, err := f.Size()
if err != nil {
t.Error(err)
return
}
if g, e := fsz, int64(n2); g != e {
t.Error(g, e)
return
}
b := make([]byte, n2)
for i := 0; i <= M; i++ {
from := rnd.Intn(n2)
to := rnd.Intn(n2)
if from > to {
from, to = to, from
}
if i == M {
from, to = 0, n2
}
n, err := f.ReadAt(b[from:to], int64(from))
if err != nil && (!fileutil.IsEOF(err) && n != 0) {
fsz, err = f.Size()
if err != nil {
t.Error(err)
return
}
t.Error(fsz, from, to, err)
return
}
if g, e := n, to-from; g != e {
t.Error(g, e)
return
//.........这里部分代码省略.........
开发者ID:klizhentas,项目名称:acbuild,代码行数:101,代码来源:filer_test.go
示例17: NewL
// NewL parses a .l source fname from src, returns L or an error if any.
// Currently it is not reentrant and not invokable more than once in an application
// (which is assumed tolerable for a "lex" tool).
// The unoptdfa argument allows to disable optimization of the produced DFA.
// The mode32 parameter is not yet supported and must be false.
func NewL(fname string, src io.RuneReader, unoptdfa, mode32 bool) (l *L, err error) {
if mode32 {
return nil, errors.New("lex.NewL: mode32 unsupported yet")
}
nodfaopt, bits32 = unoptdfa, mode32
l = &L{}
if !hook {
defer func() {
if e := recover(); e != nil {
l = nil
err = e.(error)
}
}()
}
// Support \r\n line separators too
in := []rune{}
loop:
for {
r, _, err := src.ReadRune()
switch {
case err == nil:
in = append(in, r)
case fileutil.IsEOF(err):
break loop
default:
return nil, err
}
}
src = bytes.NewBufferString(strings.Replace(string(in), "\r\n", "\n", -1))
scanner := lxr.Scanner(fname, src)
if y := yyParse(newTokenizer(scanner)); y != 0 || len(errors_) != 0 {
return nil, errors.New(strings.Join(errors_, "\n"))
}
computePartialDFAs()
if len(errors_) != 0 {
return nil, errors.New(strings.Join(errors_, "\n"))
}
computeAllNfa()
allDfa = allNfa.powerSet()
for _, irule := range allDfa.acceptRule {
delete(unreachableRules, irule)
}
for irule := range unreachableRules {
logErr(fmt.Sprintf("%s - pattern `%s` unreachable", rulePos[irule], rules[irule].pattern))
}
if len(errors_) != 0 {
return nil, errors.New(strings.Join(errors_, "\n"))
}
l.DefCode = defCode
l.UserCode = usrCode
l.StartConditions = iStarts
l.StartConditionsStates = make(map[int]*lexer.NfaState)
l.StartConditionsBolStates = make(map[int]*lexer.NfaState)
for _, edge0 := range allDfa.nfa.in.Consuming {
switch edge := edge0.(type) {
default:
panic(errors.New("internal error"))
case *lexer.RuneEdge:
if _, ok := l.StartConditionsStates[int(edge.Rune)]; ok {
panic(errors.New("internal error"))
}
if edge.Rune < 128 {
l.StartConditionsStates[int(edge.Rune)] = edge.Target()
} else {
l.StartConditionsBolStates[int(edge.Rune)-128] = edge.Target()
}
case *lexer.RangesEdge:
for _, rng := range edge.Ranges.R32 {
for arune := rng.Lo; arune <= rng.Hi; arune += rng.Stride {
if _, ok := l.StartConditionsStates[int(arune)]; ok {
panic(errors.New("internal error"))
}
if arune < 128 {
l.StartConditionsStates[int(arune)] = edge.Target()
} else {
l.StartConditionsBolStates[int(arune)-128] = edge.Target()
}
}
}
}
}
for _, rule := range rules {
l.Rules = append(l.Rules, Rule{Conds: rule.conds, Pattern: rule.pattern, RE: rule.re, Action: rule.action, BOL: rule.bol, EOL: rule.eol})
}
l.Dfa = allDfa.nfa.nfa[1:]
l.Accepts = map[*lexer.NfaState]int{}
for id, state := range allDfa.accept {
//.........这里部分代码省略.........
开发者ID:cznic,项目名称:lex,代码行数:101,代码来源:lex.go
示例18: noEof
func noEof(e error) (err error) {
if !fileutil.IsEOF(e) {
err = e
}
return
}
开发者ID:mervin0502,项目名称:kv,代码行数:6,代码来源:etc.go
示例19: TestEnumeratorPrev
func TestEnumeratorPrev(t *testing.T) {
// seeking within 3 keys: 10, 20, 30
table := []struct {
k int
hit bool
keys []int
}{
{5, false, []int{10}},
{10, true, []int{10}},
{15, false, []int{20, 10}},
{20, true, []int{20, 10}},
{25, false, []int{30, 20, 10}},
{30, true, []int{30, 20, 10}},
{35, false, []int{}},
}
for i, test := range table {
dn := test.keys
r := TreeNew(cmp)
r.Set(10, 100)
r.Set(20, 200)
r.Set(30, 300)
for verChange := 0; verChange < 16; verChange++ {
en, hit := r.Seek(test.k)
if g, e := hit, test.hit; g != e {
t.Fatal(i, g, e)
}
j := 0
for {
if verChange&(1<<uint(j)) != 0 {
r.Set(20, 200)
}
k, v, err := en.Prev()
if err != nil {
if !fileutil.IsEOF(err) {
t.Fatal(i, err)
}
break
}
if j >= len(dn) {
t.Fatal(i, j, verChange)
}
if g, e := k, dn[j]; g != e {
t.Fatal(i, j, verChange, g, e)
}
if g, e := v, 10*dn[j]; g != e {
t.Fatal(i, g, e)
}
j++
}
if g, e := j, len(dn); g != e {
t.Fatal(i, j, g, e)
}
}
}
}
开发者ID:kortschak,项目名称:b,代码行数:69,代码来源:all_test.go
示例20: TestRollbackFiler3
func TestRollbackFiler3(t *testing.T) {
var r *RollbackFiler
f := NewMemFiler()
checkpoint := func(sz int64) (err error) {
return f.Truncate(sz)
}
r, err := NewRollbackFiler(f, checkpoint, f)
if err != nil {
t.Fatal(err)
}
n, err := r.ReadAt([]byte{0}, 0)
if n != 0 || !fileutil.IsEOF(err) {
t.Fatal(n, err)
}
n, err = r.ReadAt([]byte{0}, 1e6)
if n != 0 || !fileutil.IsEOF(err) {
t.Fatal(n, err)
}
if err = r.BeginUpdate(); err != nil { // BeginUpdate: 0 -> 1
t.Fatal(err)
}
rng := rand.New(rand.NewSource(42))
buf := rndBytes(rng, 100)
if n, err := r.WriteAt(buf, 1e6); n != 100 || err != nil {
t.Fatal(err)
}
buf = make([]byte, 100)
if n, err := r.ReadAt(buf, 1e6-200); n != 100 || err != nil {
t.Fatal(err)
}
for i, v := range buf {
if v != 0 {
t.Fatal(i, v)
}
}
if err := r.Truncate(1e5); err != nil {
t.Fatal(err)
}
if err = r.BeginUpdate(); err != nil { // BeginUpdate: 1 -> 2
t.Fatal(err)
}
if n, err := r.ReadAt(buf, 1e6); n != 0 || err == nil {
t.Fatal(n, err)
}
if err := r.Truncate(2e6); err != nil {
t.Fatal(err)
}
if err = r.BeginUpdate(); err != nil { // BeginUpdate: 2 -> 3
t.Fatal(err)
}
if n, err := r.ReadAt(buf, 1e6); n == 0 || err != nil {
t.Fatal(n, err)
}
for i, v := range buf {
if v != 0 {
t.Fatal(i, v)
}
}
}
开发者ID:klizhentas,项目名称:acbuild,代码行数:75,代码来源:xact_test.go
注:本文中的github.com/cznic/fileutil.IsEOF函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论