This is an automated email from the ASF dual-hosted git repository. sruehl pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/plc4x.git
The following commit(s) were added to refs/heads/develop by this push: new 152caa3 plc4go: optimized hex output 152caa3 is described below commit 152caa3a9f5095338c9f82db6acc62ad929e4349 Author: Sebastian Rühl <sru...@apache.org> AuthorDate: Sat Apr 17 21:22:03 2021 +0200 plc4go: optimized hex output + use | to divide index from data + reduced size required for bytes from 4 to 3 --- plc4go/internal/plc4go/s7/s7Io_test.go | 6 +- plc4go/internal/plc4go/spi/utils/hex.go | 19 +- plc4go/internal/plc4go/spi/utils/hex_test.go | 312 +++++++++++++-------------- 3 files changed, 170 insertions(+), 167 deletions(-) diff --git a/plc4go/internal/plc4go/s7/s7Io_test.go b/plc4go/internal/plc4go/s7/s7Io_test.go index 515ef0c..ecd1d68 100644 --- a/plc4go/internal/plc4go/s7/s7Io_test.go +++ b/plc4go/internal/plc4go/s7/s7Io_test.go @@ -89,9 +89,9 @@ func TestS7MessageBytes(t *testing.T) { ╚═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ `, wantDump: ` -00 03 00 00 1d 05 f0 0d c0 01 0c '..........' -10 32 03 00 00 00 0b 00 02 00 05 '2.........' -20 00 00 04 04 ff 03 00 01 01 '......... ' +00|03 00 00 1d 05 f0 0d c0 01 0c '..........' +10|32 03 00 00 00 0b 00 02 00 05 '2.........' +20|00 00 04 04 ff 03 00 01 01 '......... ' `, }, } diff --git a/plc4go/internal/plc4go/spi/utils/hex.go b/plc4go/internal/plc4go/spi/utils/hex.go index 80e9a81..592ac17 100644 --- a/plc4go/internal/plc4go/spi/utils/hex.go +++ b/plc4go/internal/plc4go/spi/utils/hex.go @@ -30,17 +30,20 @@ import ( ) // DefaultWidth defaults to a default screen dumps size -const DefaultWidth = 56 // 10 bytes per line on a []byte < 999 +const DefaultWidth = 46 // 10 bytes per line on a []byte < 999 // boxLineOverheat Overheat per line when drawing boxes const boxLineOverheat = 1 + 1 -// byteWidth required size of runes required to print one bytes 2 hex digits + 2 blanks -const byteWidth = 2 + 2 - -// blank size of blank +// blankWidth blank size of blank const blankWidth = 1 +// byteWidth required size of runes required to print one bytes 2 hex digits + 1 blanks +const byteWidth = 2 + 1 + +// pipeWidth size of the pipe char +const pipeWidth = 1 + // DebugHex set to true to get debug messages var DebugHex bool @@ -82,12 +85,12 @@ func DumpFixedWidth(data []byte, desiredCharWidth int) string { maxBytesPerRow, indexWidth := calculateBytesPerRowAndIndexWidth(len(data), desiredCharWidth) for byteIndex, rowIndex := 0, 0; byteIndex < len(data); byteIndex, rowIndex = byteIndex+maxBytesPerRow, rowIndex+1 { - indexString := fmt.Sprintf("%0*d ", indexWidth, byteIndex) + indexString := fmt.Sprintf("%0*d|", indexWidth, byteIndex) hexString += indexString for columnIndex := 0; columnIndex < maxBytesPerRow; columnIndex++ { absoluteIndex := byteIndex + columnIndex if absoluteIndex < len(data) { - hexString += fmt.Sprintf("%02x ", data[absoluteIndex]) + hexString += fmt.Sprintf("%02x ", data[absoluteIndex]) } else { // align with empty byte representation hexString += strings.Repeat(" ", byteWidth) @@ -112,7 +115,7 @@ func calculateBytesPerRowAndIndexWidth(numberOfBytes, desiredStringWidth int) (i log.Debug().Msgf("Calculating max row and index for %d number of bytes and a desired string width of %d", numberOfBytes, desiredStringWidth) } indexDigits := int(math.Log10(float64(numberOfBytes))) + 1 - requiredIndexWidth := indexDigits + blankWidth + requiredIndexWidth := indexDigits + pipeWidth if DebugHex { log.Debug().Msgf("index width %d for indexDigits %d for bytes %d", requiredIndexWidth, indexDigits, numberOfBytes) } diff --git a/plc4go/internal/plc4go/spi/utils/hex_test.go b/plc4go/internal/plc4go/spi/utils/hex_test.go index e8f5cf2..a00f694 100644 --- a/plc4go/internal/plc4go/spi/utils/hex_test.go +++ b/plc4go/internal/plc4go/spi/utils/hex_test.go @@ -44,10 +44,10 @@ func TestDump(t *testing.T) { data: []byte("1234567890abcdefghijklmnopqrstuvwxyz"), }, want: ` -00 31 32 33 34 35 36 37 38 39 30 '1234567890' -10 61 62 63 64 65 66 67 68 69 6a 'abcdefghij' -20 6b 6c 6d 6e 6f 70 71 72 73 74 'klmnopqrst' -30 75 76 77 78 79 7a 'uvwxyz ' +00|31 32 33 34 35 36 37 38 39 30 '1234567890' +10|61 62 63 64 65 66 67 68 69 6a 'abcdefghij' +20|6b 6c 6d 6e 6f 70 71 72 73 74 'klmnopqrst' +30|75 76 77 78 79 7a 'uvwxyz ' `, }, { @@ -56,113 +56,113 @@ func TestDump(t *testing.T) { data: []byte(strings.Repeat("Lorem ipsum", 90)), }, want: ` -000 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -010 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -020 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -030 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -040 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -050 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -060 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -070 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -080 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -090 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -100 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -110 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -120 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -130 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -140 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -150 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -160 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -170 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -180 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -190 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -200 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -210 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -220 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -230 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -240 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -250 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -260 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -270 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -280 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -290 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -300 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -310 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -320 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -330 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -340 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -350 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -360 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -370 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -380 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -390 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -400 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -410 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -420 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -430 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -440 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -450 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -460 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -470 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -480 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -490 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -500 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -510 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -520 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -530 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -540 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -550 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -560 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -570 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -580 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -590 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -600 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -610 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -620 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -630 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -640 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -650 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -660 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -670 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -680 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -690 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -700 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -710 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -720 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -730 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -740 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -750 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -760 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -770 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -780 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -790 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -800 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -810 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -820 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -830 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -840 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -850 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -860 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -870 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' -880 4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' -890 6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' -900 75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' -910 73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' -920 70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' -930 69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' -940 20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' -950 6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' -960 65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' -970 72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' -980 6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +000|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +010|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +020|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +030|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +040|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +050|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +060|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +070|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +080|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +090|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +100|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +110|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +120|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +130|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +140|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +150|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +160|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +170|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +180|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +190|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +200|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +210|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +220|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +230|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +240|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +250|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +260|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +270|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +280|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +290|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +300|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +310|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +320|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +330|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +340|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +350|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +360|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +370|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +380|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +390|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +400|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +410|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +420|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +430|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +440|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +450|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +460|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +470|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +480|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +490|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +500|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +510|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +520|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +530|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +540|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +550|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +560|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +570|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +580|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +590|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +600|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +610|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +620|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +630|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +640|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +650|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +660|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +670|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +680|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +690|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +700|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +710|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +720|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +730|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +740|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +750|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +760|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +770|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +780|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +790|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +800|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +810|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +820|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +830|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +840|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +850|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +860|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +870|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' +880|4c 6f 72 65 6d 20 69 70 73 75 'Lorem ipsu' +890|6d 4c 6f 72 65 6d 20 69 70 73 'mLorem ips' +900|75 6d 4c 6f 72 65 6d 20 69 70 'umLorem ip' +910|73 75 6d 4c 6f 72 65 6d 20 69 'sumLorem i' +920|70 73 75 6d 4c 6f 72 65 6d 20 'psumLorem ' +930|69 70 73 75 6d 4c 6f 72 65 6d 'ipsumLorem' +940|20 69 70 73 75 6d 4c 6f 72 65 ' ipsumLore' +950|6d 20 69 70 73 75 6d 4c 6f 72 'm ipsumLor' +960|65 6d 20 69 70 73 75 6d 4c 6f 'em ipsumLo' +970|72 65 6d 20 69 70 73 75 6d 4c 'rem ipsumL' +980|6f 72 65 6d 20 69 70 73 75 6d 'orem ipsum' `, }, { - name: "minimum size", + name: "no size", args: args{ []byte("a"), }, - want: "0 61 'a '", + want: "0|61 'a '", }, } for _, tt := range tests { @@ -229,24 +229,24 @@ func TestBoxedDump(t *testing.T) { data: []byte("1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aa1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aab"), }, want: ` -╔═super nice data════════════════════════════════════════╗ -║000 31 32 33 34 35 36 37 38 39 30 '1234567890'║ -║010 61 62 63 64 65 66 67 68 69 6a 'abcdefghij'║ -║020 6b 6c 6d 6e 6f 70 71 72 73 74 'klmnopqrst'║ -║030 75 76 77 78 79 7a d3 31 32 33 'uvwxyz.123'║ -║040 34 35 36 37 38 39 30 61 62 63 '4567890abc'║ -║050 64 65 66 67 68 69 6a 6b 6c 6d 'defghijklm'║ -║060 6e 6f 70 71 72 73 74 75 76 77 'nopqrstuvw'║ -║070 78 79 7a d3 61 61 31 32 33 34 'xyz.aa1234'║ -║080 35 36 37 38 39 30 61 62 63 64 '567890abcd'║ -║090 65 66 67 68 69 6a 6b 6c 6d 6e 'efghijklmn'║ -║100 6f 70 71 72 73 74 75 76 77 78 'opqrstuvwx'║ -║110 79 7a d3 31 32 33 34 35 36 37 'yz.1234567'║ -║120 38 39 30 61 62 63 64 65 66 67 '890abcdefg'║ -║130 68 69 6a 6b 6c 6d 6e 6f 70 71 'hijklmnopq'║ -║140 72 73 74 75 76 77 78 79 7a d3 'rstuvwxyz.'║ -║150 61 61 62 'aab '║ -╚════════════════════════════════════════════════════════╝ +╔═super nice data══════════════════════════════╗ +║000|31 32 33 34 35 36 37 38 39 30 '1234567890'║ +║010|61 62 63 64 65 66 67 68 69 6a 'abcdefghij'║ +║020|6b 6c 6d 6e 6f 70 71 72 73 74 'klmnopqrst'║ +║030|75 76 77 78 79 7a d3 31 32 33 'uvwxyz.123'║ +║040|34 35 36 37 38 39 30 61 62 63 '4567890abc'║ +║050|64 65 66 67 68 69 6a 6b 6c 6d 'defghijklm'║ +║060|6e 6f 70 71 72 73 74 75 76 77 'nopqrstuvw'║ +║070|78 79 7a d3 61 61 31 32 33 34 'xyz.aa1234'║ +║080|35 36 37 38 39 30 61 62 63 64 '567890abcd'║ +║090|65 66 67 68 69 6a 6b 6c 6d 6e 'efghijklmn'║ +║100|6f 70 71 72 73 74 75 76 77 78 'opqrstuvwx'║ +║110|79 7a d3 31 32 33 34 35 36 37 'yz.1234567'║ +║120|38 39 30 61 62 63 64 65 66 67 '890abcdefg'║ +║130|68 69 6a 6b 6c 6d 6e 6f 70 71 'hijklmnopq'║ +║140|72 73 74 75 76 77 78 79 7a d3 'rstuvwxyz.'║ +║150|61 61 62 'aab '║ +╚══════════════════════════════════════════════╝ `, }, } @@ -275,18 +275,18 @@ func TestBoxedDumpFixedWidth(t *testing.T) { args: args{ name: "super nice data", data: []byte("1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aa1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aab"), - charWidth: 136, + charWidth: 110, }, want: ` -╔═super nice data══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ -║ 000 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f '1234567890abcdefghijklmno' ║ -║ 025 70 71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 'pqrstuvwxyz.1234567890abc' ║ -║ 050 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 'defghijklmnopqrstuvwxyz.a' ║ -║ 075 61 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 'a1234567890abcdefghijklmn' ║ -║ 100 6f 70 71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 'opqrstuvwxyz.1234567890ab' ║ -║ 125 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 'cdefghijklmnopqrstuvwxyz.' ║ -║ 150 61 61 62 'aab ' ║ -╚══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ +╔═super nice data════════════════════════════════════════════════════════════════════════════════════════════╗ +║ 000|31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f '1234567890abcdefghijklmno' ║ +║ 025|70 71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 'pqrstuvwxyz.1234567890abc' ║ +║ 050|64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 'defghijklmnopqrstuvwxyz.a' ║ +║ 075|61 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 'a1234567890abcdefghijklmn' ║ +║ 100|6f 70 71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 'opqrstuvwxyz.1234567890ab' ║ +║ 125|63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 'cdefghijklmnopqrstuvwxyz.' ║ +║ 150|61 61 62 'aab ' ║ +╚════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ `, }, } @@ -328,18 +328,18 @@ func TestDumpAnything(t *testing.T) { }}, }, want: ` -000 25 ff 81 03 01 02 ff 82 00 01 '%.........' -010 04 01 01 41 01 0c 00 01 01 42 '...A.....B' -020 01 0c 00 01 01 43 01 0c 00 01 '.....C....' -030 01 44 01 ff 84 00 00 00 37 ff '.D......7.' -040 83 03 01 01 1d 73 74 72 75 63 '.....struc' -050 74 20 7b 20 45 20 73 74 72 69 't { E stri' -060 6e 67 3b 20 46 20 73 74 72 69 'ng; F stri' -070 6e 67 20 7d 01 ff 84 00 01 02 'ng }......' -080 01 01 45 01 0c 00 01 01 46 01 '..E.....F.' -090 0c 00 00 00 14 ff 82 01 01 61 '.........a' -100 01 01 62 01 01 63 01 01 01 65 '..b..c...e' -110 01 01 66 00 00 '..f.. ' +000|25 ff 81 03 01 02 ff 82 00 01 '%.........' +010|04 01 01 41 01 0c 00 01 01 42 '...A.....B' +020|01 0c 00 01 01 43 01 0c 00 01 '.....C....' +030|01 44 01 ff 84 00 00 00 37 ff '.D......7.' +040|83 03 01 01 1d 73 74 72 75 63 '.....struc' +050|74 20 7b 20 45 20 73 74 72 69 't { E stri' +060|6e 67 3b 20 46 20 73 74 72 69 'ng; F stri' +070|6e 67 20 7d 01 ff 84 00 01 02 'ng }......' +080|01 01 45 01 0c 00 01 01 46 01 '..E.....F.' +090|0c 00 00 00 14 ff 82 01 01 61 '.........a' +100|01 01 62 01 01 63 01 01 01 65 '..b..c...e' +110|01 01 66 00 00 '..f.. ' `, }, { @@ -375,15 +375,15 @@ func TestDumpFixedWidth(t *testing.T) { name: "Test Dump", args: args{ data: []byte("1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aa1234567890abcdefghijklmnopqrstuvwxyz\3231234567890abcdefghijklmnopqrstuvwxyz\323aab"), - charWidth: 136, + charWidth: 110, }, want: ` -000 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 '1234567890abcdefghijklmnop' -026 71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 'qrstuvwxyz.1234567890abcde' -052 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 61 31 32 'fghijklmnopqrstuvwxyz.aa12' -078 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 '34567890abcdefghijklmnopqr' -104 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 'stuvwxyz.1234567890abcdefg' -130 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 61 62 'hijklmnopqrstuvwxyz.aab ' +000|31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 '1234567890abcdefghijklmnop' +026|71 72 73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 'qrstuvwxyz.1234567890abcde' +052|66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 61 31 32 'fghijklmnopqrstuvwxyz.aa12' +078|33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 71 72 '34567890abcdefghijklmnopqr' +104|73 74 75 76 77 78 79 7a d3 31 32 33 34 35 36 37 38 39 30 61 62 63 64 65 66 67 'stuvwxyz.1234567890abcdefg' +130|68 69 6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 7a d3 61 61 62 'hijklmnopqrstuvwxyz.aab ' `, }, { @@ -392,7 +392,7 @@ func TestDumpFixedWidth(t *testing.T) { []byte("a"), 1, }, - want: "0 61 'a'", + want: "0|61 'a'", }, } for _, tt := range tests { @@ -464,7 +464,7 @@ func Test_MinMax(t *testing.T) { data: []byte{0x1}, charWidth: -1, }, - want: "0 01 '.'", + want: "0|01 '.'", }, { name: "12", @@ -564,7 +564,7 @@ func Test_calculateBytesPerRowAndIndexWidth(t *testing.T) { numberOfBytes: 100, desiredCharWidth: math.MaxInt32, }, - wantMaxBytesPerRow: 429496728, + wantMaxBytesPerRow: 536870910, wantIndexWidth: 3, }, { @@ -582,7 +582,7 @@ func Test_calculateBytesPerRowAndIndexWidth(t *testing.T) { numberOfBytes: 153, desiredCharWidth: 136, }, - wantMaxBytesPerRow: 26, + wantMaxBytesPerRow: 32, wantIndexWidth: 3, }, {