Package org.openbel.framework.common.enums

Source Code of org.openbel.framework.common.enums.EnumTest

/**
* Copyright (C) 2012-2013 Selventa, Inc.
*
* This file is part of the OpenBEL Framework.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The OpenBEL Framework 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with the OpenBEL Framework. If not, see <http://www.gnu.org/licenses/>.
*
* Additional Terms under LGPL v3:
*
* This license does not authorize you and you are prohibited from using the
* name, trademarks, service marks, logos or similar indicia of Selventa, Inc.,
* or, in the discretion of other licensors or authors of the program, the
* name, trademarks, service marks, logos or similar indicia of such authors or
* licensors, in any marketing or advertising materials relating to your
* distribution of the program or any covered product. This restriction does
* not waive or limit your obligation to keep intact all copyright notices set
* forth in the program as delivered to you.
*
* If you distribute the program in whole or in part, or any modified version
* of the program, and you assume contractual liability to the recipient with
* respect to the program or modified version, then you will indemnify the
* authors and licensors of the program for any liabilities that these
* contractual assumptions directly impose on those licensors and authors.
*/
package org.openbel.framework.common.enums;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;

import java.util.HashSet;
import java.util.Set;

import org.junit.Test;
import org.openbel.framework.common.lang.Function;

/**
* BEL common enum test cases.
*/
public class EnumTest {

    /**
     * Test all exit code enum values are unique.
     */
    @Test
    public void testExitCodeValues() {
        ExitCode[] codes = ExitCode.values();
        Set<Integer> set = new HashSet<Integer>();
        for (ExitCode e : codes) {
            set.add(e.getValue());
        }
        int expected = codes.length;
        int actual = set.size();
        assertEquals("values not distinct", expected, actual);
    }

    /**
     * Test all annotation type enum values are unique.
     */
    @Test
    public void testAnnotationTypeValues() {
        AnnotationType[] annos = AnnotationType.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (AnnotationType anno : annos) {
            set1.add(anno.getValue());
            set2.add(anno.getDisplayValue());
        }
        int expected = annos.length;
        int actual = set1.size();
        assertEquals("values not distinct", expected, actual);
        actual = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all citation type enum values are unique.
     */
    @Test
    public void testCitationTypeValues() {
        CitationType[] cites = CitationType.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (CitationType cite : cites) {
            set1.add(cite.getValue());
            set2.add(cite.getDisplayValue());
        }
        int actual = cites.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all function enum values are unique.
     */
    @Test
    public void testFunctionEnumValues() {
        FunctionEnum[] funcs = FunctionEnum.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (FunctionEnum func : funcs) {
            set1.add(func.getValue());
            set2.add(func.getDisplayValue());
        }
        int actual = funcs.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all function enums have unique function classes.
     */
    @Test
    public void testFunctionEnumFunctions() {
        FunctionEnum[] funcs = FunctionEnum.values();
        Set<Class<?>> set1 = new HashSet<Class<?>>();
        for (FunctionEnum func : funcs) {
            Function fx = func.getFunction();
            assertNotNull(func + " does not have a function", fx);
            set1.add(fx.getClass());
        }
        int actual = funcs.length;
        int expected = set1.size();
        assertEquals("incorrect number of functions", expected, actual);
    }

    /**
     * Test all function enum abbreviations are unique.
     */
    @Test
    public void testFunctionEnumAbbreviations() {
        FunctionEnum[] funcs = FunctionEnum.values();
        Set<String> abbrs = new HashSet<String>();
        for (FunctionEnum func : funcs) {
            String abbr = func.getAbbreviation();
            if (abbr == null) {
                continue;
            }
            if (abbrs.contains(abbr)) {
                fail(func + " uses existing abbreviation: " + abbr);
            }
            abbrs.add(abbr);
        }
    }

    /**
     * Test all relationship type enum values are unique.
     */
    @Test
    public void testRelationshipValues() {
        RelationshipType[] rels = RelationshipType.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (RelationshipType rel : rels) {
            set1.add(rel.getValue());
            set2.add(rel.getDisplayValue());
        }
        int actual = rels.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all relationship type enum abbreviations are unique.
     */
    @Test
    public void testRelationshipAbbreviations() {
        RelationshipType[] rels = RelationshipType.values();
        Set<String> abbrs = new HashSet<String>();
        for (RelationshipType rel : rels) {
            String abbr = rel.getAbbreviation();
            if (abbr == null) {
                continue;
            }
            if (abbrs.contains(abbr)) {
                fail(rel + " uses existing abbreviation: " + abbr);
            }
            abbrs.add(abbr);
        }
    }

    /**
     * Test all return type enum values are unique.
     */
    @Test
    public void testReturnTypeValues() {
        ReturnType[] rts = ReturnType.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (ReturnType rt : rts) {
            set1.add(rt.getValue());
            set2.add(rt.getDisplayValue());
        }
        int actual = rts.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all return type enums return valid booleans against
     * isAssignableFrom.
     */
    @Test
    public void testReturnTypeAssignables() {
        ReturnType[] rts = ReturnType.values();
        for (ReturnType rt : rts) {
            try {
                if (rt.isAssignableFrom(rt)) {

                }
            } catch (UnsupportedOperationException e) {
                fail(rt + " not handled by ReturnType enum isAssignableFrom");
            }
        }
    }

    /**
     * Test all semantic status enum values are unique.
     */
    @Test
    public void testSemanticStatusValues() {
        SemanticStatus[] status = SemanticStatus.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (SemanticStatus stat : status) {
            set1.add(stat.getValue());
            set2.add(stat.getDisplayValue());
        }
        int actual = status.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all database type enum values are unique.
     */
    @Test
    public void testDatabaseTypeValues() {
        DatabaseType[] dbs = DatabaseType.values();
        Set<Integer> set1 = new HashSet<Integer>();
        Set<String> set2 = new HashSet<String>();
        for (DatabaseType db : dbs) {
            set1.add(db.getValue());
            set2.add(db.getDisplayValue());
        }
        int actual = dbs.length;
        int expected = set1.size();
        assertEquals("values not distinct", expected, actual);
        expected = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all value encoding values are unique.
     */
    @Test
    public void testValueEncodingValues() {
        ValueEncoding[] ves = ValueEncoding.values();
        Set<Character> set1 = new HashSet<Character>();
        Set<String> set2 = new HashSet<String>();
        for (ValueEncoding ve : ves) {
            set1.add(ve.getValue());
            set2.add(ve.getDisplayValue());
        }
        int expected = ves.length;
        int actual = set1.size();
        assertEquals("values not distinct", expected, actual);
        actual = set2.size();
        assertEquals("display values not distinct", expected, actual);
    }

    /**
     * Test all amino acid value properties are unique.
     */
    @Test
    public void testAminoAcids() {
        AminoAcid[] aas = AminoAcid.values();
        Set<String> set1 = new HashSet<String>();
        Set<String> set2 = new HashSet<String>();
        Set<String> set3 = new HashSet<String>();
        Set<Integer> set4 = new HashSet<Integer>();
        for (AminoAcid aa : aas) {
            set1.add(aa.getDisplayValue());
            set2.add(aa.getOneLetter());
            set3.add(aa.getThreeLetter());
            set4.add(aa.getValue());
        }
        int expected = aas.length;
        int actual = set1.size();
        assertEquals("display values not distinct", expected, actual);
        actual = set2.size();
        assertEquals("one-letter values not distinct", expected, actual);
        actual = set3.size();
        assertEquals("three-letter values not distinct", expected, actual);
        actual = set4.size();
        assertEquals("values not distinct", expected, actual);
    }

    /**
     * Test all covalent modification value property are unique.
     */
    @Test
    public void testCovalentModification() {
        CovalentModification[] cms = CovalentModification.values();
        Set<String> set1 = new HashSet<String>();
        Set<String> set2 = new HashSet<String>();
        Set<Integer> set3 = new HashSet<Integer>();
        for (CovalentModification cm : cms) {
            set1.add(cm.getDisplayValue());
            set2.add(cm.getOneLetter());
            set3.add(cm.getValue());
        }
        int expected = cms.length;
        int actual = set1.size();
        assertEquals("display values not distinct", expected, actual);
        actual = set2.size();
        assertEquals("one-letter values not distinct", expected, actual);
        actual = set3.size();
        assertEquals("values not distinct", expected, actual);
    }
}
TOP

Related Classes of org.openbel.framework.common.enums.EnumTest

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.