(t *testing.T)
| 458 | } |
| 459 | |
| 460 | func TestReadWriteBlocks(t *testing.T) { |
| 461 | |
| 462 | id := uint64(10) |
| 463 | rng, _ := NewPseudoRand() |
| 464 | length := BlockSize*3 + 500 |
| 465 | part1 := RandBytes(rng, length) |
| 466 | |
| 467 | if err := write(db, id, 0, 0, part1); err != nil { |
| 468 | log.Fatal(err) |
| 469 | } |
| 470 | |
| 471 | readData, err := read(db, id, 0, uint64(length)) |
| 472 | if err != nil { |
| 473 | log.Fatal(err) |
| 474 | } |
| 475 | if !bytes.Equal(part1, readData) { |
| 476 | t.Errorf("bytes differ. lengths: %d, expected %d", len(readData), len(part1)) |
| 477 | } |
| 478 | |
| 479 | verboseData, err := getAllBlocks(db, id) |
| 480 | if err != nil { |
| 481 | log.Fatal(err) |
| 482 | } |
| 483 | if !bytes.Equal(verboseData, part1) { |
| 484 | t.Errorf("bytes differ. lengths: %d, expected %d", len(verboseData), len(part1)) |
| 485 | } |
| 486 | |
| 487 | // Write with hole in the middle. |
| 488 | part2 := make([]byte, BlockSize*2+250, BlockSize*2+250) |
| 489 | fullData := append(part1, part2...) |
| 490 | part3 := RandBytes(rng, BlockSize+123) |
| 491 | if err := write(db, id, uint64(len(part1)), uint64(len(fullData)), part3); err != nil { |
| 492 | log.Fatal(err) |
| 493 | } |
| 494 | fullData = append(fullData, part3...) |
| 495 | readData, err = read(db, id, 0, uint64(len(fullData))) |
| 496 | if err != nil { |
| 497 | log.Fatal(err) |
| 498 | } |
| 499 | if !bytes.Equal(fullData, readData) { |
| 500 | t.Errorf("bytes differ. lengths: %d, expected %d", len(readData), len(fullData)) |
| 501 | } |
| 502 | |
| 503 | verboseData, err = getAllBlocks(db, id) |
| 504 | if err != nil { |
| 505 | log.Fatal(err) |
| 506 | } |
| 507 | if !bytes.Equal(verboseData, fullData) { |
| 508 | t.Errorf("bytes differ. lengths: %d, expected %d", len(verboseData), len(fullData)) |
| 509 | } |
| 510 | |
| 511 | // Now write into the middle of the file. |
| 512 | part2 = RandBytes(rng, len(part2)) |
| 513 | if err := write(db, id, uint64(len(fullData)), uint64(len(part1)), part2); err != nil { |
| 514 | log.Fatal(err) |
| 515 | } |
| 516 | fullData = append(part1, part2...) |
| 517 | fullData = append(fullData, part3...) |
nothing calls this directly
no test coverage detected