lingo 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/.rspec +1 -0
  2. data/COPYING +663 -0
  3. data/ChangeLog +754 -0
  4. data/README +322 -0
  5. data/Rakefile +100 -0
  6. data/TODO +28 -0
  7. data/bin/lingo +5 -0
  8. data/bin/lingoctl +6 -0
  9. data/de.lang +121 -0
  10. data/de/lingo-abk.txt +74 -0
  11. data/de/lingo-dic.txt +56822 -0
  12. data/de/lingo-mul.txt +3209 -0
  13. data/de/lingo-syn.txt +14841 -0
  14. data/de/test_dic.txt +24 -0
  15. data/de/test_mul.txt +17 -0
  16. data/de/test_mul2.txt +2 -0
  17. data/de/test_singleword.txt +2 -0
  18. data/de/test_syn.txt +4 -0
  19. data/de/test_syn2.txt +1 -0
  20. data/de/user-dic.txt +10 -0
  21. data/en.lang +113 -0
  22. data/en/lingo-dic.txt +55434 -0
  23. data/en/lingo-mul.txt +456 -0
  24. data/en/user-dic.txt +5 -0
  25. data/info/Objekte.png +0 -0
  26. data/info/Typen.png +0 -0
  27. data/info/database.png +0 -0
  28. data/info/db_small.png +0 -0
  29. data/info/download.png +0 -0
  30. data/info/gpl-hdr.txt +27 -0
  31. data/info/kerze.png +0 -0
  32. data/info/language.png +0 -0
  33. data/info/lingo.png +0 -0
  34. data/info/logo.png +0 -0
  35. data/info/meeting.png +0 -0
  36. data/info/types.png +0 -0
  37. data/lib/lingo.rb +321 -0
  38. data/lib/lingo/attendee/abbreviator.rb +119 -0
  39. data/lib/lingo/attendee/debugger.rb +111 -0
  40. data/lib/lingo/attendee/decomposer.rb +101 -0
  41. data/lib/lingo/attendee/dehyphenizer.rb +167 -0
  42. data/lib/lingo/attendee/multiworder.rb +301 -0
  43. data/lib/lingo/attendee/noneword_filter.rb +103 -0
  44. data/lib/lingo/attendee/objectfilter.rb +86 -0
  45. data/lib/lingo/attendee/sequencer.rb +190 -0
  46. data/lib/lingo/attendee/synonymer.rb +105 -0
  47. data/lib/lingo/attendee/textreader.rb +237 -0
  48. data/lib/lingo/attendee/textwriter.rb +196 -0
  49. data/lib/lingo/attendee/tokenizer.rb +218 -0
  50. data/lib/lingo/attendee/variator.rb +185 -0
  51. data/lib/lingo/attendee/vector_filter.rb +158 -0
  52. data/lib/lingo/attendee/wordsearcher.rb +96 -0
  53. data/lib/lingo/attendees.rb +289 -0
  54. data/lib/lingo/cli.rb +62 -0
  55. data/lib/lingo/config.rb +104 -0
  56. data/lib/lingo/const.rb +131 -0
  57. data/lib/lingo/ctl.rb +173 -0
  58. data/lib/lingo/database.rb +587 -0
  59. data/lib/lingo/language.rb +530 -0
  60. data/lib/lingo/modules.rb +98 -0
  61. data/lib/lingo/types.rb +285 -0
  62. data/lib/lingo/utilities.rb +40 -0
  63. data/lib/lingo/version.rb +27 -0
  64. data/lingo-all.cfg +85 -0
  65. data/lingo-call.cfg +15 -0
  66. data/lingo.cfg +78 -0
  67. data/lingo.rb +3 -0
  68. data/lir.cfg +72 -0
  69. data/porter/stem.cfg +311 -0
  70. data/porter/stem.rb +150 -0
  71. data/spec/spec_helper.rb +0 -0
  72. data/test.cfg +79 -0
  73. data/test/attendee/ts_abbreviator.rb +35 -0
  74. data/test/attendee/ts_decomposer.rb +31 -0
  75. data/test/attendee/ts_multiworder.rb +390 -0
  76. data/test/attendee/ts_noneword_filter.rb +19 -0
  77. data/test/attendee/ts_objectfilter.rb +19 -0
  78. data/test/attendee/ts_sequencer.rb +43 -0
  79. data/test/attendee/ts_synonymer.rb +33 -0
  80. data/test/attendee/ts_textreader.rb +58 -0
  81. data/test/attendee/ts_textwriter.rb +98 -0
  82. data/test/attendee/ts_tokenizer.rb +32 -0
  83. data/test/attendee/ts_variator.rb +24 -0
  84. data/test/attendee/ts_vector_filter.rb +62 -0
  85. data/test/attendee/ts_wordsearcher.rb +119 -0
  86. data/test/lir.csv +3 -0
  87. data/test/lir.txt +12 -0
  88. data/test/lir2.txt +12 -0
  89. data/test/mul.txt +1 -0
  90. data/test/ref/artikel.mul +1 -0
  91. data/test/ref/artikel.non +159 -0
  92. data/test/ref/artikel.seq +270 -0
  93. data/test/ref/artikel.syn +16 -0
  94. data/test/ref/artikel.vec +928 -0
  95. data/test/ref/artikel.ven +928 -0
  96. data/test/ref/artikel.ver +928 -0
  97. data/test/ref/lir.csv +328 -0
  98. data/test/ref/lir.mul +1 -0
  99. data/test/ref/lir.non +274 -0
  100. data/test/ref/lir.seq +249 -0
  101. data/test/ref/lir.syn +94 -0
  102. data/test/test_helper.rb +113 -0
  103. data/test/ts_database.rb +269 -0
  104. data/test/ts_language.rb +396 -0
  105. data/txt/artikel-en.txt +157 -0
  106. data/txt/artikel.txt +170 -0
  107. data/txt/lir.txt +1317 -0
  108. metadata +211 -0
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Noneword_filter
8
+ #
9
+ class TestAttendeeNoneword_filter < AttendeeTestCase
10
+
11
+ def test_basic
12
+ @input = [wd('Eins|IDF'), wd('Zwei|?'), wd('Drei|IDF'), wd('Vier|?'), ai('EOF|')]
13
+ @expect = ['vier', 'zwei', ai('EOF|')]
14
+ meet({})
15
+ end
16
+
17
+ end
18
+ #
19
+ ################################################################################
@@ -0,0 +1,19 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Objectfilter
8
+ #
9
+ class TestAttendeeObjectfilter < AttendeeTestCase
10
+
11
+ def test_basic
12
+ @input = [wd('Eins|IDF'), wd('zwei|?'), wd('Drei|IDF'), wd('vier|?'), ai('EOF|')]
13
+ @expect = [wd('Eins|IDF'), wd('Drei|IDF'), ai('EOF|')]
14
+ meet({'objects'=>'obj.form =~ /^[A-Z]/'})
15
+ end
16
+
17
+ end
18
+ #
19
+ ################################################################################
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Sequencer
8
+ #
9
+ class TestAttendeeSequencer < AttendeeTestCase
10
+
11
+ def test_basic
12
+ @input = [
13
+ # AS
14
+ wd('Die|IDF', 'die|w'),
15
+ wd('helle|IDF', 'hell|a'),
16
+ wd('Sonne|IDF', 'sonne|s'),
17
+ tk('.|PUNC'),
18
+ # AK
19
+ wd('Der|IDF', 'der|w'),
20
+ wd('schöne|IDF', 'schön|a'),
21
+ wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
22
+ ai('EOF|')
23
+ ]
24
+ @expect = [
25
+ # AS
26
+ wd('Die|IDF', 'die|w'),
27
+ wd('sonne, hell|SEQ', 'sonne, hell|q'),
28
+ wd('helle|IDF', 'hell|a'),
29
+ wd('Sonne|IDF', 'sonne|s'),
30
+ tk('.|PUNC'),
31
+ # AK
32
+ wd('Der|IDF', 'der|w'),
33
+ wd('sonnenuntergang, schön|SEQ', 'sonnenuntergang, schön|q'),
34
+ wd('schöne|IDF', 'schön|a'),
35
+ wd('Sonnenuntergang|KOM', 'sonnenuntergang|k', 'sonne|s+', 'untergang|s+'),
36
+ ai('EOF|')
37
+ ]
38
+ meet({'stopper'=>'PUNC,OTHR', 'source'=>'sys-mul'})
39
+ end
40
+
41
+ end
42
+ #
43
+ ################################################################################
@@ -0,0 +1,33 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Synonymer
8
+ #
9
+ class TestAttendeeSynonymer < AttendeeTestCase
10
+
11
+ def test_basic
12
+ @input = [wd('abtastzeiten|IDF', 'abtastzeit|s')]
13
+ @expect = [wd('abtastzeiten|IDF', 'abtastzeit|s', 'abtastfrequenz|y', 'abtastperiode|y')]
14
+ meet({'source'=>'sys-syn', 'check'=>'-,MUL'})
15
+ # @expect.each_index {|i| assert_equal(@expect[i], @output[i]) }
16
+ end
17
+
18
+ def test_first
19
+ @input = [wd('Aktienanleihe|IDF', 'aktienanleihe|s')]
20
+ @expect = [wd('Aktienanleihe|IDF', 'aktienanleihe|s', 'aktien-anleihe|y',
21
+ 'reverse convertible bond|y', 'reverse convertibles|y')]
22
+ meet({'source'=>'sys-syn,tst-syn', 'check'=>'-,MUL', 'mode'=>'first'})
23
+ end
24
+
25
+ def test_all
26
+ @input = [wd('Kerlchen|IDF', 'kerlchen|s')]
27
+ @expect = [wd('Kerlchen|IDF', 'kerlchen|s', 'kerlchen|y', 'zwerg-nase|y')]
28
+ meet({'source'=>'sys-syn,tst-syn', 'check'=>'-,MUL', 'mode'=>'all'})
29
+ end
30
+
31
+ end
32
+ #
33
+ ################################################################################
@@ -0,0 +1,58 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Textreader
8
+ #
9
+ class TestAttendeeTextreader < AttendeeTestCase
10
+
11
+ def test_lir_file
12
+ @expect = [
13
+ ai('LIR-FORMAT|'), ai('FILE|test/lir.txt'),
14
+ ai('RECORD|00237'),
15
+ '020: GERHARD.',
16
+ '025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
17
+ '056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
18
+ ai('RECORD|00238'),
19
+ '020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
20
+ '025: das DFG-Projekt GERHARD.',
21
+ ai('RECORD|00239'),
22
+ '020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
23
+ '056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
24
+ ai('EOF|test/lir.txt')
25
+ ]
26
+ meet({'files'=>'test/lir.txt', 'lir-record-pattern'=>'^\[(\d+)\.\]'})
27
+ end
28
+
29
+ def test_lir_file_another_pattern
30
+ @expect = [
31
+ ai('LIR-FORMAT|'), ai('FILE|test/lir2.txt'),
32
+ ai('RECORD|00237'),
33
+ '020: GERHARD.',
34
+ '025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
35
+ '056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.',
36
+ ai('RECORD|00238'),
37
+ '020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
38
+ '025: das DFG-Projekt GERHARD.',
39
+ ai('RECORD|00239'),
40
+ '020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
41
+ '056: "Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.',
42
+ ai('EOF|test/lir2.txt')
43
+ ]
44
+ meet({'files'=>'test/lir2.txt', 'lir-record-pattern'=>'^\021(\d+)\022'})
45
+ end
46
+
47
+ def test_normal_file
48
+ @expect = [
49
+ ai('FILE|test/mul.txt'),
50
+ 'Die abstrakte Kunst ist schön.',
51
+ ai('EOF|test/mul.txt')
52
+ ]
53
+ meet({'files'=>'test/mul.txt'})
54
+ end
55
+
56
+ end
57
+ #
58
+ ################################################################################
@@ -0,0 +1,98 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Textwriter
8
+ #
9
+ class TestAttendeeTextwriter < AttendeeTestCase
10
+
11
+ def setup
12
+ @data = [
13
+ ai('FILE|test/test.txt'),
14
+ wd('Dies|IDF'),
15
+ wd('ist|IDF'),
16
+ wd('eine|IDF'),
17
+ wd('Zeile|IDF'),
18
+ tk('.|PUNC'),
19
+ ai('EOL|test/test.txt'),
20
+ wd('Dies|IDF'),
21
+ wd('ist|IDF'),
22
+ wd('eine|IDF'),
23
+ wd('zweite|IDF'),
24
+ wd('Zeile|IDF'),
25
+ tk('.|PUNC'),
26
+ ai('EOL|test/test.txt'),
27
+ ai('EOF|test/test.txt')
28
+ ]
29
+ end
30
+
31
+ def test_basic
32
+ @input = @data
33
+ @expect = [ "Dies,ist,eine,Zeile,.\n", "Dies,ist,eine,zweite,Zeile,.\n" ]
34
+ meet({'ext'=>'tst', 'sep'=>','}, false)
35
+
36
+ @output = File.readlines('test/test.tst', encoding: Lingo::ENC)
37
+ assert_equal(@expect, @output)
38
+ end
39
+
40
+ def test_complex
41
+ @input = @data
42
+ @expect = [ "Dies-ist-eine-Zeile-.\n", "Dies-ist-eine-zweite-Zeile-.\n" ]
43
+ meet({'ext'=>'yip', 'sep'=>'-'}, false)
44
+
45
+ @output = File.readlines('test/test.yip', encoding: Lingo::ENC)
46
+ assert_equal(@expect, @output)
47
+ end
48
+
49
+ def test_crlf
50
+ @input = @data
51
+ @expect = [ "Dies\n", "ist\n", "eine\n", "Zeile\n", ".\n", "Dies\n", "ist\n", "eine\n", "zweite\n", "Zeile\n", ".\n" ]
52
+ meet({'sep'=>"\n"}, false)
53
+
54
+ @output = File.readlines('test/test.txt2', encoding: Lingo::ENC)
55
+ assert_equal(@expect, @output)
56
+ end
57
+
58
+ def test_lir_file
59
+ @input = [
60
+ ai('LIR-FORMAT|'), ai('FILE|test/lir.txt'),
61
+ ai('RECORD|00237'),
62
+ '020: GERHARD.',
63
+ '025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
64
+ "056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.\r",
65
+ ai('RECORD|00238'),
66
+ '020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen.',
67
+ "025: das DFG-Projekt GERHARD.\r",
68
+ ai('RECORD|00239'),
69
+ '020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter.',
70
+ "056: \"Das Buch ist ein praxisbezogenes VADEMECUM für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.\r",
71
+ ai('EOF|test/lir.txt')
72
+ ]
73
+ @expect = [
74
+ "00237*020: GERHARD. 025: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressour\
75
+ cen. 056: Die intellektuelle Erschließung des Internet befindet sich in einer Krise. GERHARD ist derzeit weltweit der einzige.\r\n",
76
+ "00238*020: Automatisches Sammeln, Klassifizieren und Indexieren von wissenschaftlich relevanten Informationsressourcen. 025: das D\
77
+ FG-Projekt GERHARD.\r\n",
78
+ "00239*020: Information Retrieval und Dokumentmanagement im Multimedia-Zeitalter. 056: \"Das Buch ist ein praxisbezogenes VADEMECUM\
79
+ für alle, die in einer Welt der Datennetze Wissen/Informationen sammeln.\r\n"
80
+ ]
81
+ meet({'ext'=>'csv', 'lir-format'=>nil}, false)
82
+
83
+ @output = File.readlines('test/lir.csv', encoding: Lingo::ENC)
84
+ assert_equal(@expect, @output)
85
+ end
86
+
87
+ def test_nonewords
88
+ @input = [ai('FILE|test/text.txt'), 'Nonwörter', 'Nonsense', ai('EOF|test/text.txt')]
89
+ @expect = [ "Nonwörter\n", "Nonsense" ]
90
+ meet({'ext'=>'non', 'sep'=>"\n"}, false)
91
+
92
+ @output = File.readlines('test/text.non', encoding: Lingo::ENC)
93
+ assert_equal(@expect, @output)
94
+ end
95
+
96
+ end
97
+ #
98
+ ################################################################################
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+
3
+ ################################################################################
4
+ #
5
+ # Attendee Tokenizer
6
+ #
7
+ class TestAttendeeTokenizer < AttendeeTestCase
8
+
9
+ def test_basic
10
+ @input = ["Dies ist ein Test."]
11
+ @expect = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC')]
12
+ meet({})
13
+ end
14
+
15
+ def test_complex
16
+ @input = ["1964 www.vorhauer.de bzw. nasenbär, ()"]
17
+ @expect = [
18
+ tk('1964|NUMS'),
19
+ tk('www.vorhauer.de|URLS'),
20
+ tk('bzw|WORD'),
21
+ tk('.|PUNC'),
22
+ tk('nasenbär|WORD'),
23
+ tk(',|PUNC'),
24
+ tk('(|OTHR'),
25
+ tk(')|OTHR')
26
+ ]
27
+ meet({})
28
+ end
29
+
30
+ end
31
+ #
32
+ ################################################################################
@@ -0,0 +1,24 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Variator
8
+ #
9
+ class TestAttendeeVariator < AttendeeTestCase
10
+
11
+ def test_basic
12
+ @input = [wd('fchwarz|?'), wd('fchilling|?'), wd('iehwarzfchilling|?'), wd('fchiiiirg|?')]
13
+ @expect = [
14
+ wd('*schwarz|IDF', 'schwarz|s', 'schwarz|a'),
15
+ wd('*schilling|IDF', 'schilling|s'),
16
+ wd('*schwarzschilling|KOM', 'schwarzschilling|k', 'schwarz|a+', 'schilling|s+', 'schwarz|s+'),
17
+ wd('fchiiiirg|?')
18
+ ]
19
+ meet({'source'=>'sys-dic'})
20
+ end
21
+
22
+ end
23
+ #
24
+ ################################################################################
@@ -0,0 +1,62 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Vector_filter
8
+ #
9
+ class TestAttendeeVector_filter < AttendeeTestCase
10
+
11
+ def setup
12
+ @input = [
13
+ ai('FILE|test'),
14
+ wd('Testwort|IDF', 'substantiv|s', 'adjektiv|a', 'verb|v', 'eigenname|e', 'mehrwortbegriff|m'),
15
+ wd('unknown|?'),
16
+ ai('EOF|test')
17
+ ]
18
+ end
19
+
20
+ def test_basic
21
+ @expect = [ai('FILE|test'), 'substantiv', ai('EOF|test')]
22
+ meet({})
23
+ end
24
+
25
+ def test_lexicals
26
+ @expect = [ai('FILE|test'), 'adjektiv', 'eigenname', 'substantiv', 'verb', ai('EOF|test')]
27
+ meet({'lexicals'=>'[save]'})
28
+ end
29
+
30
+ def test_sort_term_abs
31
+ @expect = [ai('FILE|test'), '1 adjektiv', '1 eigenname', '1 substantiv', '1 verb', ai('EOF|test')]
32
+ meet({'lexicals'=>'[save]', 'sort'=>'term_abs'})
33
+ end
34
+
35
+ def test_sort_term_rel
36
+ @expect = [ai('FILE|test'), '0.50000 adjektiv', '0.50000 eigenname', '0.50000 substantiv', '0.50000 verb', ai('EOF|test')]
37
+ meet({'lexicals'=>'[save]', 'sort'=>'term_rel'})
38
+ end
39
+
40
+ def test_sort_sto_abs
41
+ @expect = [ai('FILE|test'), 'adjektiv {1}', 'eigenname {1}', 'substantiv {1}', 'verb {1}', ai('EOF|test')]
42
+ meet({'lexicals'=>'[save]', 'sort'=>'sto_abs'})
43
+ end
44
+
45
+ def test_sort_sto_rel
46
+ @expect = [ai('FILE|test'), 'adjektiv {0.50000}', 'eigenname {0.50000}', 'substantiv {0.50000}', 'verb {0.50000}', ai('EOF|test')]
47
+ meet({'lexicals'=>'[save]', 'sort'=>'sto_rel'})
48
+ end
49
+
50
+ def test_nonword
51
+ @expect = [ai('FILE|test'), 'unknown', ai('EOF|test')]
52
+ meet({'lexicals'=>'\?'})
53
+ end
54
+
55
+ def test_nonword_sort_term_abs
56
+ @expect = [ai('FILE|test'), '1 unknown', ai('EOF|test')]
57
+ meet({'lexicals'=>'\?', 'sort'=>'term_abs'})
58
+ end
59
+
60
+ end
61
+ #
62
+ ################################################################################
@@ -0,0 +1,119 @@
1
+ # encoding: utf-8
2
+
3
+ require_relative '../test_helper'
4
+
5
+ ################################################################################
6
+ #
7
+ # Attendee Wordsearcher
8
+ #
9
+ class TestAttendeeWordsearcher < AttendeeTestCase
10
+
11
+ def setup
12
+ @test_synonyms = [
13
+ lx('experiment|y'), lx('kontrolle|y'), lx('probelauf|y'),
14
+ lx('prüfung|y'), lx('test|y'), lx('testlauf|y'),
15
+ lx('testversuch|y'), lx('trockentest|y'), lx('versuch|y')
16
+ ]
17
+ end
18
+
19
+ def test_basic
20
+ @input = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC'), ai('EOL|')]
21
+ @expect = [
22
+ wd('Dies|IDF', 'dies|w'),
23
+ wd('ist|IDF', 'sein|v'),
24
+ wd('ein|IDF', 'einen|v', 'ein|w'),
25
+ wd('Test|IDF', 'test|s', 'testen|v'),
26
+ tk('.|PUNC'),
27
+ ai('EOL|')
28
+ ]
29
+ meet({'source'=>'sys-dic,sys-syn,sys-mul'})
30
+ end
31
+
32
+ def test_mode
33
+ @input = [tk('Dies|WORD'), tk('ist|WORD'), tk('ein|WORD'), tk('Test|WORD'), tk('.|PUNC'), ai('EOL|')]
34
+ @expect = [
35
+ wd('Dies|IDF', 'dies|w'),
36
+ wd('ist|IDF', 'sein|v'),
37
+ wd('ein|IDF', 'einen|v', 'ein|w'),
38
+ wd('Test|IDF', 'test|s', 'testen|v'),
39
+ tk('.|PUNC'),
40
+ ai('EOL|')
41
+ ]
42
+ meet({'source'=>'sys-syn,sys-dic', 'mode'=>'first'})
43
+ end
44
+
45
+ def test_two_sources_mode_first
46
+ @input = [
47
+ tk('Hasennasen|WORD'),
48
+ tk('Knaller|WORD'),
49
+ tk('Lex-Lingo|WORD'),
50
+ tk('A-Dur|WORD'),
51
+ ai('EOL|')
52
+ ]
53
+ @expect = [
54
+ wd('Hasennasen|?'),
55
+ wd('Knaller|IDF', 'knaller|s'),
56
+ wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
57
+ wd('A-Dur|IDF', 'a-dur|s'),
58
+ ai('EOL|')
59
+ ]
60
+ meet({'source'=>'sys-dic,tst-dic', 'mode'=>'first'})
61
+ end
62
+
63
+ def test_two_sources_mode_first_flipped
64
+ @input = [
65
+ tk('Hasennasen|WORD'),
66
+ tk('Knaller|WORD'),
67
+ tk('Lex-Lingo|WORD'),
68
+ tk('A-Dur|WORD'),
69
+ ai('EOL|')
70
+ ]
71
+ @expect = [
72
+ wd('Hasennasen|?'),
73
+ wd('Knaller|IDF', 'knaller|s'),
74
+ wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
75
+ wd('A-Dur|IDF', 'b-dur|s'),
76
+ ai('EOL|')
77
+ ]
78
+ meet({'source'=>'tst-dic,sys-dic', 'mode'=>'first'})
79
+ end
80
+
81
+ def test_select_two_sources_mode_all
82
+ @input = [
83
+ tk('Hasennasen|WORD'),
84
+ tk('Knaller|WORD'),
85
+ tk('Lex-Lingo|WORD'),
86
+ tk('A-Dur|WORD'),
87
+ ai('EOL|')
88
+ ]
89
+ @expect = [
90
+ wd('Hasennasen|?'),
91
+ wd('Knaller|IDF', 'knaller|s'),
92
+ wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
93
+ wd('A-Dur|IDF', 'a-dur|s', 'b-dur|s'),
94
+ ai('EOL|')
95
+ ]
96
+ meet({'source'=>'sys-dic,tst-dic', 'mode'=>'all'})
97
+ end
98
+
99
+ def test_select_two_sources_mode_def
100
+ @input = [
101
+ tk('Hasennasen|WORD'),
102
+ tk('Knaller|WORD'),
103
+ tk('Lex-Lingo|WORD'),
104
+ tk('A-Dur|WORD'),
105
+ ai('EOL|')
106
+ ]
107
+ @expect = [
108
+ wd('Hasennasen|?'),
109
+ wd('Knaller|IDF', 'knaller|s'),
110
+ wd('Lex-Lingo|IDF', 'super indexierungssystem|m'),
111
+ wd('A-Dur|IDF', 'a-dur|s', 'b-dur|s'),
112
+ ai('EOL|')
113
+ ]
114
+ meet({'source'=>'sys-dic,tst-dic'})
115
+ end
116
+
117
+ end
118
+ #
119
+ ################################################################################