added flashpart unit test
This commit is contained in:
parent
cd14f2e2ee
commit
ac7580e620
6 changed files with 61 additions and 9 deletions
|
@ -42,7 +42,7 @@ func (command *S19TreeCommand) Execute(args []string) error {
|
|||
//
|
||||
fpHeader := flashpart.ParseFlashPartHeader(records[segment.SliceStart].Data)
|
||||
log.Info().Msg(
|
||||
fmt.Sprintf("Index: %d, Media-ID: 0x%02X, Partition Size: 0x%08X / %d bytes, Partition Tag: %s",
|
||||
fmt.Sprintf("Index: %d, Media-ID: 0x%02X, Partition Size: 0x%08X / %d bytes, Partition Tag: '%s'",
|
||||
index,
|
||||
fpHeader.MediaID,
|
||||
fpHeader.TotalSize,
|
||||
|
|
|
@ -3,12 +3,13 @@ package flashpart
|
|||
import "encoding/binary"
|
||||
|
||||
type FlashPartHeader struct {
|
||||
MediaID byte
|
||||
Byte1 byte
|
||||
Byte2 byte
|
||||
Byte3 byte
|
||||
MediaID byte
|
||||
Byte1 byte
|
||||
Byte2 byte
|
||||
Byte3 byte
|
||||
|
||||
TotalSize uint32
|
||||
RawSize uint32
|
||||
RawSize uint32 // total - 32
|
||||
VersionText string // 16byte
|
||||
|
||||
raw []byte
|
||||
|
@ -25,7 +26,7 @@ func ParseFlashPartHeader(data []byte) (fph *FlashPartHeader) {
|
|||
Byte3: data[3],
|
||||
|
||||
TotalSize: binary.LittleEndian.Uint32(data[4:8]),
|
||||
VersionText: string(data[15:]),
|
||||
VersionText: string(data[16:]),
|
||||
|
||||
raw: data,
|
||||
}
|
||||
|
@ -53,6 +54,22 @@ func (fph *FlashPartHeader) AdjustTotalSize(size uint32) {
|
|||
fph.raw[4+i] = b
|
||||
}
|
||||
}
|
||||
func (fph *FlashPartHeader) AdjustName(name string) {
|
||||
// truncate if too long
|
||||
if len(name) > 16 {
|
||||
name = name[:16]
|
||||
}
|
||||
|
||||
for i := 16; i < 32; i++ { // copy version string
|
||||
charIndex := i - 16
|
||||
if charIndex > len(name)-1 {
|
||||
fph.raw[i] = 0x20
|
||||
} else {
|
||||
fph.raw[i] = name[charIndex]
|
||||
}
|
||||
}
|
||||
fph.VersionText = string(fph.raw[16:])
|
||||
}
|
||||
func (fph *FlashPartHeader) GetBytes() []byte {
|
||||
return fph.raw
|
||||
}
|
||||
|
|
22
flashpart/flashpart_test.go
Normal file
22
flashpart/flashpart_test.go
Normal file
|
@ -0,0 +1,22 @@
|
|||
package flashpart_test
|
||||
|
||||
import (
|
||||
"encoding/hex"
|
||||
"testing"
|
||||
|
||||
"git.cheetah.cat/cheetah/moto-flash-data/flashpart"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func Test1(t *testing.T) {
|
||||
bytes, _ := hex.DecodeString("8032f60c2028140000000000000000006933342e3030302e3934323630202020")
|
||||
res := flashpart.ParseFlashPartHeader(bytes)
|
||||
|
||||
assert.Equal(t, uint8(0x80), res.MediaID)
|
||||
assert.Equal(t, uint32(0x142820), res.TotalSize)
|
||||
assert.Equal(t, "i34.000.94260 ", res.VersionText)
|
||||
|
||||
res.AdjustName("test")
|
||||
assert.Equal(t, "test ", res.VersionText)
|
||||
|
||||
}
|
6
go.mod
6
go.mod
|
@ -1,6 +1,6 @@
|
|||
module git.cheetah.cat/cheetah/moto-flash-data
|
||||
|
||||
go 1.20
|
||||
go 1.22.5
|
||||
|
||||
require (
|
||||
github.com/jessevdk/go-flags v1.5.0
|
||||
|
@ -8,7 +8,11 @@ require (
|
|||
)
|
||||
|
||||
require (
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/mattn/go-colorable v0.1.14 // indirect
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/stretchr/testify v1.10.0 // indirect
|
||||
golang.org/x/sys v0.29.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
|
9
go.sum
9
go.sum
|
@ -1,4 +1,6 @@
|
|||
github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc=
|
||||
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
|
||||
|
@ -10,12 +12,19 @@ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D
|
|||
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/rs/xid v1.5.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
|
||||
github.com/rs/zerolog v1.33.0 h1:1cU2KZkvPxNyfgEmhHAz/1A9Bz+llsdYzklWFzgp0r8=
|
||||
github.com/rs/zerolog v1.33.0/go.mod h1:/7mN4D5sKwJLZQ2b/znpjC3/GQWY/xaDXUM0kKWRHss=
|
||||
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||
golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
|
||||
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
|
|
@ -122,7 +122,7 @@ func (fr *S19Reader) Close() error {
|
|||
return fr.File.Close()
|
||||
}
|
||||
|
||||
func (_ *S19Reader) DetectAddressRanges(records []*SRecord) []AddressRange {
|
||||
func (*S19Reader) DetectAddressRanges(records []*SRecord) []AddressRange {
|
||||
// Sort records by address
|
||||
sort.Slice(records, func(i, j int) bool {
|
||||
return records[i].Address < records[j].Address
|
||||
|
|
Loading…
Add table
Reference in a new issue