ICU-13569 RBBI State table size reduction, move reduced tables to ICU4J; better testing and small bug fix in ICU4J builder.
X-SVN-Rev: 40926
This commit is contained in:
parent
4298f41e35
commit
25950362de
@ -30,10 +30,10 @@ public final class RBBIDataWrapper {
|
||||
// read from the file.
|
||||
//
|
||||
public RBBIDataHeader fHeader;
|
||||
public short fFTable[];
|
||||
short fRTable[];
|
||||
short fSFTable[];
|
||||
short fSRTable[];
|
||||
public short fFTable[];
|
||||
public short fRTable[];
|
||||
public short fSFTable[];
|
||||
public short fSRTable[];
|
||||
Trie2 fTrie;
|
||||
String fRuleSource;
|
||||
int fStatusTable[];
|
||||
@ -339,7 +339,7 @@ public final class RBBIDataWrapper {
|
||||
|
||||
///CLOVER:OFF
|
||||
/* Debug function to display the break iterator data. */
|
||||
void dump(java.io.PrintStream out) {
|
||||
public void dump(java.io.PrintStream out) {
|
||||
if (fFTable.length == 0) {
|
||||
// There is no table. Fail early for testing purposes.
|
||||
throw new NullPointerException();
|
||||
|
@ -1046,7 +1046,7 @@ class RBBITableBuilder {
|
||||
|
||||
// Size of table size in shorts.
|
||||
// the "4" is the size of struct RBBIStateTableRow, the row header part only.
|
||||
int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories();
|
||||
int rowLen = 4 + fRB.fSetBuilder.getNumCharCategories(); // Row Length in shorts.
|
||||
int tableSize = getTableSize() / 2;
|
||||
|
||||
|
||||
@ -1060,9 +1060,10 @@ class RBBITableBuilder {
|
||||
table[RBBIDataWrapper.NUMSTATES] = (short)(numStates >>> 16);
|
||||
table[RBBIDataWrapper.NUMSTATES+1] = (short)(numStates & 0x0000ffff);
|
||||
|
||||
// RBBIStateTable.fRowLen
|
||||
table[RBBIDataWrapper.ROWLEN] = (short)(rowLen >>> 16);
|
||||
table[RBBIDataWrapper.ROWLEN+1] = (short)(rowLen & 0x0000ffff);
|
||||
// RBBIStateTable.fRowLen. In bytes.
|
||||
int rowLenInBytes = rowLen * 2;
|
||||
table[RBBIDataWrapper.ROWLEN] = (short)(rowLenInBytes >>> 16);
|
||||
table[RBBIDataWrapper.ROWLEN+1] = (short)(rowLenInBytes & 0x0000ffff);
|
||||
|
||||
// RBBIStateTable.fFlags
|
||||
int flags = 0;
|
||||
|
@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:f78382b447bb13c03234b53e18b013cea1d2ff6a0f71679885ee00d787003822
|
||||
size 12475101
|
||||
oid sha256:fa37df37ddad555dfc900d38890567a820d0efa27e72b9d9db81e914e2b558ec
|
||||
size 12461103
|
||||
|
@ -18,6 +18,7 @@ package com.ibm.icu.dev.test.rbbi;
|
||||
// or simply retired if it is no longer interesting.
|
||||
import java.text.CharacterIterator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
||||
@ -622,4 +623,25 @@ public class RBBITest extends TestFmwk {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void TestTableRebuild() {
|
||||
// Test to verify that rebuilding the state tables from rule source for the standard
|
||||
// break iterator types yields the same tables as are imported from ICU4C as part of the default data.
|
||||
List<RuleBasedBreakIterator> breakIterators = new ArrayList<RuleBasedBreakIterator>();
|
||||
breakIterators.add((RuleBasedBreakIterator)BreakIterator.getCharacterInstance(Locale.ENGLISH));
|
||||
breakIterators.add((RuleBasedBreakIterator)BreakIterator.getWordInstance(Locale.ENGLISH));
|
||||
breakIterators.add((RuleBasedBreakIterator)BreakIterator.getSentenceInstance(Locale.ENGLISH));
|
||||
breakIterators.add((RuleBasedBreakIterator)BreakIterator.getLineInstance(Locale.ENGLISH));
|
||||
|
||||
for (RuleBasedBreakIterator bi: breakIterators) {
|
||||
String rules = bi.toString();
|
||||
RuleBasedBreakIterator bi2 = new RuleBasedBreakIterator(rules);
|
||||
|
||||
assertTrue("Forward Table", Arrays.equals(bi.fRData.fFTable, bi2.fRData.fFTable));
|
||||
assertTrue("Reverse Table", Arrays.equals(bi.fRData.fRTable, bi2.fRData.fRTable));
|
||||
assertTrue("Safe Forward Table", Arrays.equals(bi.fRData.fSFTable, bi2.fRData.fSFTable));
|
||||
assertTrue("SafeForward Table", Arrays.equals(bi.fRData.fSRTable, bi2.fRData.fSRTable));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user