Package etc.aloe.filters

Source Code of etc.aloe.filters.AbstractRegexFilterTest$AbstractRegexFilterImpl

/*
* This file is part of ALOE.
*
* ALOE is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.

* ALOE is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.

* You should have received a copy of the GNU General Public License
* along with ALOE.  If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (c) 2012 SCCL, University of Washington (http://depts.washington.edu/sccl)
*/
package etc.aloe.filters;

import etc.aloe.filters.AbstractRegexFilter.NamedRegex;
import java.util.ArrayList;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import weka.core.Attribute;
import weka.core.DenseInstance;
import weka.core.Instance;
import weka.core.Instances;

/**
*
* @author Michael Brooks <mjbrooks@uw.edu>
*/
public class AbstractRegexFilterTest {

    public AbstractRegexFilterTest() {
    }

    @BeforeClass
    public static void setUpClass() {
    }

    @AfterClass
    public static void tearDownClass() {
    }

    @Before
    public void setUp() {
    }

    @After
    public void tearDown() {
    }

    /**
     * Test of getStringAttributeName method, of class AbstractRegexFilter.
     */
    @Test
    public void testGetStringAttributeName() {
        System.out.println("getStringAttributeName");
        AbstractRegexFilter instance = new AbstractRegexFilterImpl();
        String expResult = "my name";
        instance.setStringAttributeName(expResult);
        String result = instance.getStringAttributeName();
        assertEquals(expResult, result);
    }

    /**
     * Test of determineOutputFormat method, of class AbstractRegexFilter.
     */
    @Test
    public void testDetermineOutputFormat() throws Exception {
        System.out.println("determineOutputFormat");

        AbstractRegexFilter instance = new AbstractRegexFilterImpl();
        instance.setStringAttributeName("string_attr");

        ArrayList<Attribute> attrs = new ArrayList<Attribute>();
        attrs.add(new Attribute("string_attr", (List<String>) null));
        attrs.add(new Attribute("another_attr"));
        Instances inputFormat = new Instances("data", attrs, 0);

        instance.setCountRegexLengths(false);
        Instances output = instance.determineOutputFormat(inputFormat);
        assertEquals(3, output.numAttributes());
        assertEquals("regex", output.attribute(2).name());

        instance.setCountRegexLengths(true);
        output = instance.determineOutputFormat(inputFormat);
        assertEquals(4, output.numAttributes());
        assertEquals("regex", output.attribute(2).name());
        assertEquals("regex_L", output.attribute(3).name());

    }

    /**
     * Test of process method, of class AbstractRegexFilter.
     */
    @Test
    public void testProcess() throws Exception {
        System.out.println("process");
        AbstractRegexFilter filter = new AbstractRegexFilterImpl();
        filter.setStringAttributeName("string_attr");

        ArrayList<Attribute> attrs = new ArrayList<Attribute>();
        attrs.add(new Attribute("string_attr", (List<String>) null));
        attrs.add(new Attribute("another_attr"));

        Instances inputFormat = new Instances("data", attrs, 0);
        Attribute stringAttr = inputFormat.attribute("string_attr");
        Attribute anotherAttr = inputFormat.attribute("another_attr");

        List<Instance> instances = new ArrayList<Instance>();
        Instance a = new DenseInstance(2);
        a.setValue(stringAttr, "i have one");
        a.setValue(anotherAttr, 1);
        instances.add(a);

        Instance b = new DenseInstance(2);
        b.setValue(stringAttr, "aaaaa");
        b.setValue(anotherAttr, 5);
        instances.add(b);

        Instance c = new DenseInstance(2);
        c.setValue(stringAttr, "nothing here");
        c.setValue(anotherAttr, 0);
        instances.add(c);

        inputFormat.addAll(instances);
        filter.setInputFormat(inputFormat);
        Instances output = filter.getOutputFormat();

        for (int i = 0; i < instances.size(); i++) {
            Instance original = inputFormat.get(i);
            Instance filtered = filter.process(original);
            filtered.setDataset(output);

            assertEquals(original.stringValue(0), filtered.stringValue(0));
            assertEquals(original.value(1), filtered.value(1), 0);
            assertEquals(original.value(1), filtered.value(2), 0);
        }
    }

    /**
     * Test of globalInfo method, of class AbstractRegexFilter.
     */
    @Test
    public void testGlobalInfo() {
        System.out.println("globalInfo");
        AbstractRegexFilter instance = new AbstractRegexFilterImpl();
        String result = instance.globalInfo();
        assertTrue(result.length() > 0);
    }

    /**
     * Test of toRegex method, of class AbstractRegexFilter.
     */
    @Test
    public void testToRegex_StringArr() {
        System.out.println("toRegex");
        String[] fragments = new String[]{
            "abc",
            "def",
            "ghi"
        };
        AbstractRegexFilter instance = new AbstractRegexFilterImpl();
        String expResult = "\\Qabc\\E|\\Qdef\\E|\\Qghi\\E";
        String result = instance.toRegex(fragments);
        assertEquals(expResult, result);

        fragments = new String[]{
            "abc(d)",
            "e[f*]+"
        };
        expResult = "\\Qabc(d)\\E|\\Qe[f*]+\\E";
        result = instance.toRegex(fragments);
        assertEquals(expResult, result);
    }

    /**
     * Test of toRegex method, of class AbstractRegexFilter.
     */
    @Test
    public void testToRegex_StringArr_boolean() {
        System.out.println("toRegex");
        String[] fragments = new String[]{
            "abc",
            "def",
            "ghi"
        };
        AbstractRegexFilter instance = new AbstractRegexFilterImpl();
        String expResult = "abc|def|ghi";
        String result = instance.toRegex(fragments, false);
        assertEquals(expResult, result);

        fragments = new String[]{
            "abc(d)",
            "e[f*]+"
        };
        expResult = "abc(d)|e[f*]+";
        result = instance.toRegex(fragments, false);
        assertEquals(expResult, result);
    }

    public class AbstractRegexFilterImpl extends AbstractRegexFilter {

        @Override
        public NamedRegex[] getRegexFeatures() {
            return new NamedRegex[]{
                        new NamedRegex("regex", "a")
                    };
        }
    }
}
TOP

Related Classes of etc.aloe.filters.AbstractRegexFilterTest$AbstractRegexFilterImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.