5
5
package gpt_test
6
6
7
7
import (
8
+ "encoding/binary"
8
9
"os"
9
10
"testing"
10
11
@@ -49,7 +50,7 @@ func (suite *GPTSuite) TestReset() {
49
50
50
51
suite .Require ().NoError (g .Write ())
51
52
52
- suite .checkMBRFlag (0x00 )
53
+ suite .validatePMBR (0x00 )
53
54
54
55
// re-read the partition table
55
56
g , err = gpt .Open (suite .Dev )
@@ -63,7 +64,7 @@ func (suite *GPTSuite) TestReset() {
63
64
64
65
suite .Require ().NoError (g .Write ())
65
66
66
- suite .checkMBRFlag (0x00 )
67
+ suite .validatePMBR (0x00 )
67
68
68
69
// re-read the partition table
69
70
g , err = gpt .Open (suite .Dev )
@@ -440,7 +441,7 @@ func (suite *GPTSuite) TestMarkPMBRBootable() {
440
441
441
442
suite .Require ().NoError (g .Write ())
442
443
443
- suite .checkMBRFlag (0x80 )
444
+ suite .validatePMBR (0x80 )
444
445
445
446
// re-read the partition table
446
447
g , err = gpt .Open (suite .Dev )
@@ -449,16 +450,26 @@ func (suite *GPTSuite) TestMarkPMBRBootable() {
449
450
suite .Require ().NoError (g .Read ())
450
451
suite .Require ().NoError (g .Write ())
451
452
452
- suite .checkMBRFlag (0x80 )
453
+ suite .validatePMBR (0x80 )
453
454
}
454
455
455
- func (suite * GPTSuite ) checkMBRFlag (flag byte ) {
456
- buf := make ([]byte , 1 )
456
+ func (suite * GPTSuite ) validatePMBR (flag byte ) {
457
+ buf := make ([]byte , 512 )
457
458
458
- _ , err := suite .Dev .ReadAt (buf , 446 )
459
+ n , err := suite .Dev .ReadAt (buf , 0 )
459
460
suite .Require ().NoError (err )
461
+ suite .Require ().EqualValues (512 , n )
460
462
461
- suite .Assert ().Equal (flag , buf [0 ])
463
+ partition := buf [446 :460 ]
464
+
465
+ suite .Assert ().Equal (flag , partition [0 ]) // active flag
466
+ suite .Assert ().Equal ([]byte {0x00 , 0x02 , 0x00 }, partition [1 :4 ]) // CHS start
467
+ suite .Assert ().Equal (byte (0xee ), partition [4 ]) // partition type
468
+ suite .Assert ().Equal ([]byte {0xff , 0xff , 0xff }, partition [5 :8 ]) // CHS end
469
+ suite .Assert ().Equal (uint32 (1 ), binary .LittleEndian .Uint32 (partition [8 :12 ])) // LBA start
470
+ suite .Assert ().Equal (uint32 (size / blockSize - 1 ), binary .LittleEndian .Uint32 (partition [12 :16 ])) // length in sectors
471
+
472
+ suite .Assert ().Equal ([]byte {0x55 , 0xaa }, buf [510 :512 ]) // boot signature
462
473
}
463
474
464
475
func TestGPTSuite (t * testing.T ) {
0 commit comments