Skip to content

Commit

Permalink
Progress
Browse files Browse the repository at this point in the history
  • Loading branch information
tentone committed Jul 10, 2024
1 parent f46e8b2 commit c430030
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 52 deletions.
18 changes: 12 additions & 6 deletions hierarchy_id.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,8 @@ func Parse(data []byte) (HierarchyId, error) {
fmt.Println(" - Found pattern ", pattern)

var value int64
value, err = DecodeValue(pattern, bin)
value, err = DecodeValue(pattern.Pattern, bin)
value += pattern.Min
if err != nil {
return nil, err
}
Expand All @@ -45,11 +46,16 @@ func Parse(data []byte) (HierarchyId, error) {
levels = append(levels, int(value))

// Remove already read data from binary string
bin = bin[0 : len(bin)-len(pattern)]
bin = bin[0 : len(bin)-len(pattern.Pattern)]

fmt.Println(" - Remaining data to analyse ", bin)
}

// Reverse list of levels
for i, j := 0, len(levels)-1; i < j; i, j = i+1, j-1 {
levels[i], levels[j] = levels[j], levels[i]
}

return levels, nil
}

Expand All @@ -76,9 +82,9 @@ func DecodeValue(pattern string, bin string) (int64, error) {
// Test pattern for binary data
//
// Return the pattern that fits the binary data (if any), the length of the pattern and an error.
func TestPatterns(bin string) (string, error) {
func TestPatterns(bin string) (*HierarchyIdPattern, error) {
if len(bin) == 0 {
return "", errors.New("Binary string is empty")
return nil, errors.New("Binary string is empty")
}

// Check wich pattern fits the start of the binary string (if any)
Expand Down Expand Up @@ -113,11 +119,11 @@ func TestPatterns(bin string) (string, error) {
}

if patternMatch {
return pattern, nil
return &Patterns[i], nil
}
}

return "", nil
return nil, nil
}

// Receives a byte array and prints as binary (0 and 1) data.
Expand Down
92 changes: 46 additions & 46 deletions hierarchy_id_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ func TestTestPatterns(t *testing.T) {
t.Errorf("Error testing %v: %v", d.input, err)
}

if result != d.output {
if result.Pattern != d.output {
t.Errorf("Expected %v to return %v, got %v", d.input, d.output, result)
}
}
Expand Down Expand Up @@ -132,52 +132,52 @@ func TestParse(t *testing.T) {
{[]int{2}, "68"},
{[]int{3}, "78"},
{[]int{4}, "84"},
// {[]int{5}, "8C"},
// {[]int{6}, "94"},
// {[]int{7}, "9C"},
// {[]int{8}, "A2"},
// {[]int{9}, "A6"},
// {[]int{10}, "AA"},
// {[]int{11}, "AE"},
// {[]int{12}, "B2"},
// {[]int{13}, "B6"},
// {[]int{14}, "BA"},
// {[]int{15}, "BE"},
// {[]int{16}, "C110"},
// {[]int{17}, "C130"},
// {[]int{18}, "C150"},
// {[]int{19}, "C170"},
// {[]int{20}, "C190"},
// {[]int{21}, "C1B0"},
// {[]int{22}, "C1D0"},
// {[]int{23}, "C1F0"},
// {[]int{24}, "C310"},
// {[]int{32}, "C910"},
// {[]int{40}, "CB10"},
// {[]int{48}, "D110"},
// {[]int{56}, "D310"},
// {[]int{64}, "D910"},
// {[]int{72}, "DB10"},
// {[]int{80}, "E00440"},
// {[]int{88}, "E00C40"},
// {[]int{96}, "E02440"},
// {[]int{128}, "E06440"},
// {[]int{136}, "E06C40"},
// {[]int{192}, "E0E440"},
// {[]int{320}, "E2E440"},
// {[]int{576}, "E6E440"},
// {[]int{1088}, "EEE440"},
// {[]int{1104}, "F00088"},
// {[]int{2128}, "F20088"},
// {[]int{3152}, "F40088"},
// {[]int{4176}, "F60088"},
// {[]int{5200}, "F80000000220"},
{[]int{5}, "8C"},
{[]int{6}, "94"},
{[]int{7}, "9C"},
{[]int{8}, "A2"},
{[]int{9}, "A6"},
{[]int{10}, "AA"},
{[]int{11}, "AE"},
{[]int{12}, "B2"},
{[]int{13}, "B6"},
{[]int{14}, "BA"},
{[]int{15}, "BE"},
{[]int{16}, "C110"},
{[]int{17}, "C130"},
{[]int{18}, "C150"},
{[]int{19}, "C170"},
{[]int{20}, "C190"},
{[]int{21}, "C1B0"},
{[]int{22}, "C1D0"},
{[]int{23}, "C1F0"},
{[]int{24}, "C310"},
{[]int{32}, "C910"},
{[]int{40}, "CB10"},
{[]int{48}, "D110"},
{[]int{56}, "D310"},
{[]int{64}, "D910"},
{[]int{72}, "DB10"},
{[]int{80}, "E00440"},
{[]int{88}, "E00C40"},
{[]int{96}, "E02440"},
{[]int{128}, "E06440"},
{[]int{136}, "E06C40"},
{[]int{192}, "E0E440"},
{[]int{320}, "E2E440"},
{[]int{576}, "E6E440"},
{[]int{1088}, "EEE440"},
{[]int{1104}, "F00088"},
{[]int{2128}, "F20088"},
{[]int{3152}, "F40088"},
{[]int{4176}, "F60088"},
{[]int{5200}, "F80000000220"},
{[]int{3, 1}, "7AC0"},
// {[]int{1, 1}, "5AC0"},
// {[]int{2, 1}, "6AC0"},
// {[]int{2, 1, 1}, "6AD6"},
// {[]int{1, 1, 2}, "5ADA"},
// {[]int{1, 1, 3}, "5ADE"},
{[]int{1, 1}, "5AC0"},
{[]int{2, 1}, "6AC0"},
{[]int{2, 1, 1}, "6AD6"},
{[]int{1, 1, 2}, "5ADA"},
{[]int{1, 1, 3}, "5ADE"},
// {[]int{1, 2, 754}, "5B7A9150"},
// {[]int{1, 1, 4}, "5AE1"},
// {[]int{1, 1, 1}, "5AD6"},
Expand Down

0 comments on commit c430030

Please sign in to comment.