Use Gender=Fem,Masc,NonBin when appropriate

Change-Id: I457814066595ec5b054de85f5cd068d1005fe65a
diff --git a/test/test.js b/test/test.js
index 94391a3..31a39e2 100644
--- a/test/test.js
+++ b/test/test.js
@@ -6,41 +6,41 @@
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
 
-    // Genderstern singular noun: Bürger*in → lemma Bürger*in, NOUN NN Gender=NonBin|Number=Sing
-    expect(stdout).toContain('Bürger*in\tBürger*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    // Genderstern singular noun: Bürger*in → lemma Bürger*in, NOUN NN Gender=Fem,Masc,NonBin|Number=Sing
+    expect(stdout).toContain('Bürger*in\tBürger*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // Long compound: Jugendpsychiater*in
-    expect(stdout).toContain('Jugendpsychiater*in\tJugendpsychiater*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Jugendpsychiater*in\tJugendpsychiater*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // Compound with umlaut base: Generalstaatsanwält*in
-    expect(stdout).toContain('Generalstaatsanwält*in\tGeneralstaatsanwält*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Generalstaatsanwält*in\tGeneralstaatsanwält*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // Nachfolger*in
-    expect(stdout).toContain('Nachfolger*in\tNachfolger*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Nachfolger*in\tNachfolger*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // With umlaut base: Antragssteller*in (no umlaut but long compound)
-    expect(stdout).toContain('Antragssteller*in\tAntragssteller*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Antragssteller*in\tAntragssteller*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
   });
 
   test('Full mode: Genderstern plural nouns → lemma uses singular, Number=Plur', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
     // Fachärzt*innen → lemma Fachärzt*in
-    expect(stdout).toContain('Fachärzt*innen\tFachärzt*in\tNOUN\tNN\tGender=NonBin|Number=Plur');
+    expect(stdout).toContain('Fachärzt*innen\tFachärzt*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Plur');
   });
 
   test('Full mode: Doppelpunkt nouns', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
     // Doppelpunkt singular
-    expect(stdout).toContain('Anhänger:in\tAnhänger:in\tNOUN\tNN\tGender=NonBin|Number=Sing');
-    expect(stdout).toContain('Wirt:in\tWirt:in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Anhänger:in\tAnhänger:in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
+    expect(stdout).toContain('Wirt:in\tWirt:in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // Doppelpunkt plural  
-    expect(stdout).toContain('Lehrer:innen\tLehrer:in\tNOUN\tNN\tGender=NonBin|Number=Plur');
+    expect(stdout).toContain('Lehrer:innen\tLehrer:in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Plur');
     // Long compound with umlaut base
-    expect(stdout).toContain('Menschenrechtsanwält:innen\tMenschenrechtsanwält:in\tNOUN\tNN\tGender=NonBin|Number=Plur');
+    expect(stdout).toContain('Menschenrechtsanwält:innen\tMenschenrechtsanwält:in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Plur');
   });
 
   test('Full mode: Unterstrich plural nouns', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
-    expect(stdout).toContain('Autor_innen\tAutor_in\tNOUN\tNN\tGender=NonBin|Number=Plur');
+    expect(stdout).toContain('Autor_innen\tAutor_in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Plur');
   });
 
   test('Full mode: Binnen-I nouns (binary intended → Gender=Masc,Fem)', () => {
@@ -73,37 +73,37 @@
   test('Full mode: gendered determiners/pronouns (non-binary intended)', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
-    // jede*r → DET PIAT Gender=NonBin, lemma jede*r
-    expect(stdout).toContain('jede*r\tjede*r\tDET\tPIAT\tGender=NonBin');
+    // jede*r → DET PIAT Gender=Fem,Masc,NonBin, lemma jede*r
+    expect(stdout).toContain('jede*r\tjede*r\tDET\tPIAT\tGender=Fem,Masc,NonBin');
     const jeder_count = (stdout.match(/jede\*r\tjede\*r/g) || []).length;
     expect(jeder_count).toBe(2);  // appears in two sentences
-    // eine*n → DET ART Gender=NonBin  (non-binary via *)
-    expect(stdout).toContain('eine*n\teine*n\tDET\tART\tGender=NonBin');
-    // jede:r → DET PIAT Gender=NonBin
-    expect(stdout).toContain('jede:r\tjede:r\tDET\tPIAT\tGender=NonBin');
-    // die*der → DET ART Gender=NonBin  (* marker → NonBin even for merged forms)
-    expect(stdout).toContain('die*der\tdie*der\tDET\tART\tGender=NonBin');
+    // eine*n → DET ART Gender=Fem,Masc,NonBin  (non-binary via *)
+    expect(stdout).toContain('eine*n\teine*n\tDET\tART\tGender=Fem,Masc,NonBin');
+    // jede:r → DET PIAT Gender=Fem,Masc,NonBin
+    expect(stdout).toContain('jede:r\tjede:r\tDET\tPIAT\tGender=Fem,Masc,NonBin');
+    // die*der → DET ART Gender=Fem,Masc,NonBin  (* marker → inclusive even for merged forms)
+    expect(stdout).toContain('die*der\tdie*der\tDET\tART\tGender=Fem,Masc,NonBin');
   });
 
-  test('Full mode: neo-pronoun (sie*er → PRON PPER Gender=NonBin)', () => {
+  test('Full mode: neo-pronoun (sie*er → PRON PPER Gender=Fem,Masc,NonBin)', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
-    expect(stdout).toContain('sie*er\tsie*er\tPRON\tPPER\tGender=NonBin');
+    expect(stdout).toContain('sie*er\tsie*er\tPRON\tPPER\tGender=Fem,Masc,NonBin');
   });
 
-  test('Full mode: neo-pronoun lexicon forms (PRON PPER Gender=NonBin|PronType=Prs)', () => {
+  test('Full mode: neo-pronoun lexicon forms (PRON PPER Gender=Fem,Masc,NonBin|PronType=Prs)', () => {
     const command = 'node src/index.js < test/data/gender.conllu';
     const stdout = execSync(command).toString();
     // sier: NOM of sier-paradigm
-    expect(stdout).toContain('sier\tsier\tPRON\tPPER\tGender=NonBin|PronType=Prs');
+    expect(stdout).toContain('sier\tsier\tPRON\tPPER\tGender=Fem,Masc,NonBin|PronType=Prs');
     // xier: NOM of xier-paradigm
-    expect(stdout).toContain('xier\txier\tPRON\tPPER\tGender=NonBin|PronType=Prs');
+    expect(stdout).toContain('xier\txier\tPRON\tPPER\tGender=Fem,Masc,NonBin|PronType=Prs');
     // oj: NOM of oj-paradigm
-    expect(stdout).toContain('oj\toj\tPRON\tPPER\tGender=NonBin|PronType=Prs');
+    expect(stdout).toContain('oj\toj\tPRON\tPPER\tGender=Fem,Masc,NonBin|PronType=Prs');
     // el: NOM of el-paradigm
-    expect(stdout).toContain('el\tel\tPRON\tPPER\tGender=NonBin|PronType=Prs');
+    expect(stdout).toContain('el\tel\tPRON\tPPER\tGender=Fem,Masc,NonBin|PronType=Prs');
     // hen: NOM of hen-paradigm
-    expect(stdout).toContain('hen\then\tPRON\tPPER\tGender=NonBin|PronType=Prs');
+    expect(stdout).toContain('hen\then\tPRON\tPPER\tGender=Fem,Masc,NonBin|PronType=Prs');
   });
 
   test('Full mode: foundry comment changed to gender', () => {
@@ -159,7 +159,7 @@
 
 `;
     const stdout = execSync('node src/index.js', { input: testInput }).toString();
-    expect(stdout).toContain('Lehrer*innen\tLehrer*in\tNOUN\tNN\tGender=NonBin|Number=Plur');
+    expect(stdout).toContain('Lehrer*innen\tLehrer*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Plur');
     // Regular noun 'Lehrerin' must not be incorrectly tagged
     expect(stdout).toContain('Lehrerin\t_\tNOUN\tNN\t_');
   });
@@ -177,9 +177,9 @@
 `;
     const stdout = execSync('node src/index.js', { input: testInput }).toString();
     // jede*r: missing feats should be filled in
-    expect(stdout).toContain('jede*r\tjede*r\tDET\tPIAT\tGender=NonBin');
+    expect(stdout).toContain('jede*r\tjede*r\tDET\tPIAT\tGender=Fem,Masc,NonBin');
     // Arzt*in: umlaut base, missing everything
-    expect(stdout).toContain('Arzt*in\tArzt*in\tNOUN\tNN\tGender=NonBin|Number=Sing');
+    expect(stdout).toContain('Arzt*in\tArzt*in\tNOUN\tNN\tGender=Fem,Masc,NonBin|Number=Sing');
     // Ärztin (regular moviertes Femininum, no gender marker): unchanged
     expect(stdout).toContain('Ärztin\tÄrztin\tNOUN\tNN\tGender=Fem|Number=Sing');
     // jede (without gender marker): unchanged