public void testGrow() { CharTermAttributeImpl t = new CharTermAttributeImpl(); StringBuilder buf = new StringBuilder("ab"); for (int i = 0; i < 20; i++) { char[] content = buf.toString().toCharArray(); t.copyBuffer(content, 0, content.length); assertEquals(buf.length(), t.length()); assertEquals(buf.toString(), t.toString()); buf.append(buf.toString()); } assertEquals(1048576, t.length()); // now as a StringBuilder, first variant t = new CharTermAttributeImpl(); buf = new StringBuilder("ab"); for (int i = 0; i < 20; i++) { t.setEmpty().append(buf); assertEquals(buf.length(), t.length()); assertEquals(buf.toString(), t.toString()); buf.append(t); } assertEquals(1048576, t.length()); // Test for slow growth to a long term t = new CharTermAttributeImpl(); buf = new StringBuilder("a"); for (int i = 0; i < 20000; i++) { t.setEmpty().append(buf); assertEquals(buf.length(), t.length()); assertEquals(buf.toString(), t.toString()); buf.append("a"); } assertEquals(20000, t.length()); }
public void testCharSequenceInterface() { final String s = "0123456789"; final CharTermAttributeImpl t = new CharTermAttributeImpl(); t.append(s); assertEquals(s.length(), t.length()); assertEquals("12", t.subSequence(1, 3).toString()); assertEquals(s, t.subSequence(0, s.length()).toString()); assertTrue(Pattern.matches("01\\d+", t)); assertTrue(Pattern.matches("34", t.subSequence(3, 5))); assertEquals(s.subSequence(3, 7).toString(), t.subSequence(3, 7).toString()); for (int i = 0; i < s.length(); i++) { assertTrue(t.charAt(i) == s.charAt(i)); } }