Package edu.cmu.sphinx.fst

Source Code of edu.cmu.sphinx.fst.ArcSortTest

/**
*
* Copyright 1999-2012 Carnegie Mellon University. 
* Portions Copyright 2002 Sun Microsystems, Inc. 
* Portions Copyright 2002 Mitsubishi Electric Research Laboratories.
* All Rights Reserved.  Use is subject to license terms.
*
* See the file "license.terms" for information on usage and
* redistribution of this file, and for a DISCLAIMER OF ALL
* WARRANTIES.
*
*/

package edu.cmu.sphinx.fst;

import static edu.cmu.sphinx.fst.operations.ArcSort.apply;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;

import org.testng.annotations.Test;

import edu.cmu.sphinx.fst.operations.ILabelCompare;
import edu.cmu.sphinx.fst.operations.OLabelCompare;
import edu.cmu.sphinx.fst.semiring.TropicalSemiring;

public class ArcSortTest {

    /**
     * Create an output label sorted fst as per the example at
     * http://www.openfst.org/twiki/bin/view/FST/ArcSortDoc
     *
     * @return the created fst
     */
    private Fst createOsorted() {
        Fst fst = new Fst(new TropicalSemiring());

        State s1 = new State(0.f);
        State s2 = new State(0.f);
        State s3 = new State(0.f);

        // State 0
        fst.addState(s1);
        s1.addArc(new Arc(4, 1, 0.f, s3));
        s1.addArc(new Arc(5, 2, 0.f, s3));
        s1.addArc(new Arc(2, 3, 0.f, s2));
        s1.addArc(new Arc(1, 4, 0.f, s2));
        s1.addArc(new Arc(3, 5, 0.f, s2));

        // State 1
        fst.addState(s2);
        s2.addArc(new Arc(3, 1, 0.f, s3));
        s2.addArc(new Arc(1, 2, 0.f, s3));
        s2.addArc(new Arc(2, 3, 0.f, s2));

        // State 2 (final)
        fst.addState(s3);

        return fst;
    }

    /**
     * Create an input label sorted fst as per the example at
     * http://www.openfst.org/twiki/bin/view/FST/ArcSortDoc
     *
     * @return the created fst
     */
    private Fst createIsorted() {
        Fst fst = new Fst(new TropicalSemiring());

        State s1 = new State(0.f);
        State s2 = new State(0.f);
        State s3 = new State(0.f);

        // State 0
        fst.addState(s1);
        s1.addArc(new Arc(1, 4, 0.f, s2));
        s1.addArc(new Arc(2, 3, 0.f, s2));
        s1.addArc(new Arc(3, 5, 0.f, s2));
        s1.addArc(new Arc(4, 1, 0.f, s3));
        s1.addArc(new Arc(5, 2, 0.f, s3));

        // State 1
        fst.addState(s2);
        s2.addArc(new Arc(1, 2, 0.f, s3));
        s2.addArc(new Arc(2, 3, 0.f, s2));
        s2.addArc(new Arc(3, 1, 0.f, s3));

        // State 2 (final)
        fst.addState(s3);

        return fst;
    }

    /**
     * Create an unsorted fst as per the example at
     * http://www.openfst.org/twiki/bin/view/FST/ArcSortDoc
     *
     * @return the created fst
     */
    private Fst createUnsorted() {
        Fst fst = new Fst(new TropicalSemiring());

        State s1 = new State(0.f);
        State s2 = new State(0.f);
        State s3 = new State(0.f);

        // State 0
        fst.addState(s1);
        s1.addArc(new Arc(1, 4, 0.f, s2));
        s1.addArc(new Arc(3, 5, 0.f, s2));
        s1.addArc(new Arc(2, 3, 0.f, s2));
        s1.addArc(new Arc(5, 2, 0.f, s3));
        s1.addArc(new Arc(4, 1, 0.f, s3));

        // State 1
        fst.addState(s2);
        s2.addArc(new Arc(2, 3, 0.f, s2));
        s2.addArc(new Arc(3, 1, 0.f, s3));
        s2.addArc(new Arc(1, 2, 0.f, s3));

        // State 2 (final)
        fst.addState(s3);

        return fst;
    }

    @Test
    public void testArcSort() {
        // Input label sort test
        Fst fst1 = createUnsorted();
        Fst fst2 = createIsorted();
        assertThat(fst1, not(equalTo(fst2)));
        apply(fst1, new ILabelCompare());
        assertThat(fst1, equalTo(fst2));

        // Output label sort test
        fst1 = createUnsorted();
        fst2 = createOsorted();
        assertThat(fst1, not(equalTo(fst2)));
        apply(fst1, new OLabelCompare());
        assertThat(fst1, equalTo(fst2));
    }

}
TOP

Related Classes of edu.cmu.sphinx.fst.ArcSortTest

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.