|
- package decoder
-
- import (
- "testing"
-
- "github.com/AFASystems/presence/internal/pkg/model"
- )
-
- func newParserRegistry() *model.ParserRegistry {
- return &model.ParserRegistry{ParserList: make(map[string]model.BeaconParser)}
- }
-
- func TestParserRegistry_AddParser(t *testing.T) {
- registry := newParserRegistry()
- config := model.Config{
- Name: "test-parser",
- Min: 4,
- Max: 20,
- Pattern: []string{"0x02", "0x01"},
- Configs: map[string]model.ParserConfig{},
- }
-
- registry.Register("test-parser", config)
-
- if len(registry.ParserList) != 1 {
- t.Errorf("Expected 1 parser in registry, got %d", len(registry.ParserList))
- }
- if _, exists := registry.ParserList["test-parser"]; !exists {
- t.Error("Parser 'test-parser' should exist in registry")
- }
- }
-
- func TestParserRegistry_RemoveParser(t *testing.T) {
- registry := newParserRegistry()
- config := model.Config{Name: "test-parser", Min: 2, Max: 10, Pattern: []string{"0x02"}}
- registry.Register("test-parser", config)
-
- registry.Unregister("test-parser")
-
- if len(registry.ParserList) != 0 {
- t.Errorf("Expected 0 parsers in registry, got %d", len(registry.ParserList))
- }
- if _, exists := registry.ParserList["test-parser"]; exists {
- t.Error("Parser 'test-parser' should not exist in registry")
- }
- }
-
- func TestParserRegistry_UpdateParser(t *testing.T) {
- registry := newParserRegistry()
- config1 := model.Config{Name: "test-parser", Min: 2, Max: 10, Pattern: []string{"0x02"}}
- config2 := model.Config{Name: "test-parser", Min: 5, Max: 15, Pattern: []string{"0x03"}}
-
- registry.Register("test-parser", config1)
- registry.Register("test-parser", config2)
-
- if len(registry.ParserList) != 1 {
- t.Errorf("Expected 1 parser in registry, got %d", len(registry.ParserList))
- }
- if _, exists := registry.ParserList["test-parser"]; !exists {
- t.Error("Parser 'test-parser' should exist in registry")
- }
- }
-
- func TestParserRegistry_MultipleParsers(t *testing.T) {
- registry := newParserRegistry()
- parsers := []model.Config{
- {Name: "parser-1", Min: 2, Max: 10, Pattern: []string{"0x02"}},
- {Name: "parser-2", Min: 3, Max: 15, Pattern: []string{"0x03"}},
- {Name: "parser-3", Min: 4, Max: 20, Pattern: []string{"0x04"}},
- }
-
- for _, p := range parsers {
- registry.Register(p.Name, p)
- }
-
- if len(registry.ParserList) != 3 {
- t.Errorf("Expected 3 parsers in registry, got %d", len(registry.ParserList))
- }
- for _, p := range parsers {
- if _, exists := registry.ParserList[p.Name]; !exists {
- t.Errorf("Parser '%s' should exist in registry", p.Name)
- }
- }
- }
-
- func TestParserRegistry_RemoveNonExistent(t *testing.T) {
- registry := newParserRegistry()
- registry.Unregister("non-existent")
-
- if len(registry.ParserList) != 0 {
- t.Errorf("Expected 0 parsers, got %d", len(registry.ParserList))
- }
- }
-
- func TestParserRegistry_EmptyRegistry(t *testing.T) {
- registry := newParserRegistry()
-
- if len(registry.ParserList) != 0 {
- t.Errorf("Expected empty registry, got %d parsers", len(registry.ParserList))
- }
- registry.Unregister("anything")
- }
|