1383N/Apackage org.opensolaris.opengrok.analysis.php;
1383N/A
1393N/Aimport java.io.Reader;
1393N/Aimport java.io.InputStream;
1393N/Aimport java.io.UnsupportedEncodingException;
1383N/Aimport org.opensolaris.opengrok.analysis.JFlexTokenizer;
1383N/Aimport java.io.IOException;
1393N/Aimport java.io.InputStreamReader;
1383N/Aimport java.io.StringReader;
1383N/Aimport java.util.LinkedList;
1383N/Aimport java.util.List;
1383N/Aimport org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
1383N/Aimport org.junit.Test;
1383N/Aimport org.opensolaris.opengrok.analysis.FileAnalyzer;
1383N/Aimport static org.junit.Assert.*;
1383N/A
1383N/A/**
1383N/A * Tests the {@link PhpSymbolTokenizer} class.
1416N/A *
1383N/A * @author Gustavo Lopes
1383N/A */
1383N/Apublic class PhpSymbolTokenizerTest {
1383N/A
1383N/A private FileAnalyzer analyzer;
1383N/A
1383N/A public PhpSymbolTokenizerTest() {
1383N/A PhpAnalyzerFactory analFact = new PhpAnalyzerFactory();
1383N/A this.analyzer = analFact.getAnalyzer();
1383N/A }
1383N/A
1383N/A private String[] getTermsFor(String s) {
1393N/A return getTermsFor(new StringReader(s));
1393N/A }
1393N/A
1393N/A private String[] getTermsFor(Reader r) {
1383N/A List<String> l = new LinkedList<String>();
1416N/A JFlexTokenizer ts = (JFlexTokenizer) this.analyzer.createComponents("refs", r).getTokenStream();
1393N/A ts.yyreset(r);
1383N/A CharTermAttribute term = ts.addAttribute(CharTermAttribute.class);
1383N/A try {
1383N/A while (ts.yylex()) {
1383N/A l.add(term.toString());
1383N/A }
1383N/A } catch (IOException ex) {
1383N/A throw new RuntimeException(ex);
1383N/A }
1393N/A
1383N/A return l.toArray(new String[l.size()]);
1383N/A }
1383N/A
1383N/A @Test
1383N/A public void basicTest() {
1393N/A String s = "<?php foobar eval $eval 0sdf _ds˙d";
1383N/A String[] termsFor = getTermsFor(s);
1383N/A assertArrayEquals(
1393N/A new String[]{"foobar", "eval", "sdf", "_ds˙d"},
1393N/A termsFor);
1393N/A }
1393N/A
1393N/A @Test
1393N/A public void sampleTest() throws UnsupportedEncodingException {
1393N/A InputStream res = getClass().getClassLoader().getResourceAsStream(
1393N/A "org/opensolaris/opengrok/analysis/php/sample.php");
1393N/A InputStreamReader r = new InputStreamReader(res, "UTF-8");
1393N/A String[] termsFor = getTermsFor(r);
1393N/A assertArrayEquals(
1393N/A new String[]{
1393N/A "a", //line 3
1394N/A "foo", "bar", //line 5
1393N/A "g", "a", "c", //line 6
1393N/A "b", "c", "a", "a", //line 7
1393N/A "doo", //line 9
1393N/A "a", //line 10
1393N/A "foo", "bar", //line 12
1393N/A "name", //line 13
1393N/A "foo", "bar", //line 14
1393N/A "foo", //line 15
1393N/A "ff", //line 20
1393N/A "foo", //line 21
1393N/A "FooException", //line 28
1396N/A "used",
1396N/A "Foo", "Bar", //line 30
1396N/A "Foo", "Foo", "param", //line 31
1393N/A "gata", //line 37
1396N/A "gata", //line 38
1396N/A "foo", "_SERVER", "_SERVER", "_SERVER", //line 39
1396N/A "foo", "bar", "foo", "bar", "foo", "a", //line 40
1393N/A },
1383N/A termsFor);
1383N/A }
1383N/A}