Update corpus mapping rules
Change-Id: I445798472f4494ab29db796fa19ad2b09339b1ac
diff --git a/config/config_test.go b/config/config_test.go
index 3a7ad32..4ba8913 100644
--- a/config/config_test.go
+++ b/config/config_test.go
@@ -6,6 +6,7 @@
"testing"
"github.com/KorAP/Koral-Mapper/ast"
+ "github.com/KorAP/Koral-Mapper/parser"
"github.com/rs/zerolog/log"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -949,3 +950,33 @@
assert.Error(t, err)
assert.Contains(t, err.Error(), "failed to parse corpus mapping rule")
}
+
+func TestParseCorpusMappingsWithFieldAFieldB(t *testing.T) {
+ list := &MappingList{
+ ID: "test-keyed",
+ Type: "corpus",
+ FieldA: "wikiCat",
+ FieldB: "textClass",
+ Mappings: []MappingRule{
+ "Entertainment <> ((kultur & musik) | (kultur & film))",
+ },
+ }
+
+ results, err := list.ParseCorpusMappings()
+ require.NoError(t, err)
+ require.Len(t, results, 1)
+
+ upper := results[0].Upper.(*parser.CorpusField)
+ assert.Equal(t, "wikiCat", upper.Key)
+ assert.Equal(t, "Entertainment", upper.Value)
+
+ group := results[0].Lower.(*parser.CorpusGroup)
+ assert.Equal(t, "or", group.Operation)
+ require.Len(t, group.Operands, 2)
+
+ and1 := group.Operands[0].(*parser.CorpusGroup)
+ assert.Equal(t, "textClass", and1.Operands[0].(*parser.CorpusField).Key)
+ assert.Equal(t, "kultur", and1.Operands[0].(*parser.CorpusField).Value)
+ assert.Equal(t, "textClass", and1.Operands[1].(*parser.CorpusField).Key)
+ assert.Equal(t, "musik", and1.Operands[1].(*parser.CorpusField).Value)
+}