001    /*
002     * Licensed to the Apache Software Foundation (ASF) under one or more
003     * contributor license agreements.  See the NOTICE file distributed with
004     * this work for additional information regarding copyright ownership.
005     * The ASF licenses this file to You under the Apache License, Version 2.0
006     * (the "License"); you may not use this file except in compliance with
007     * the License.  You may obtain a copy of the License at
008     *
009     *      http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    
018    package org.apache.commons.codec.language;
019    
020    import junit.framework.Assert;
021    
022    import org.apache.commons.codec.EncoderException;
023    import org.apache.commons.codec.StringEncoder;
024    import org.apache.commons.codec.StringEncoderAbstractTest;
025    import org.junit.Test;
026    
027    /**
028     * Tests Caverphone1.
029     *
030     * @version $Id: Caverphone1Test.html 889935 2013-12-11 05:05:13Z ggregory $
031     * @since 1.5
032     */
033    public class Caverphone1Test extends StringEncoderAbstractTest {
034    
035        @Override
036        protected StringEncoder createStringEncoder() {
037            return new Caverphone1();
038        }
039    
040        /**
041         * Tests example adapted from version 2.0  http://caversham.otago.ac.nz/files/working/ctp150804.pdf
042         *
043         * AT1111 words: add, aid, at, art, eat, earth, head, hit, hot, hold, hard, heart, it, out, old
044         *
045         * @throws EncoderException
046         */
047        @Test
048        public void testCaverphoneRevisitedCommonCodeAT1111() throws EncoderException {
049            this.checkEncodingVariations("AT1111", new String[]{
050                "add",
051                "aid",
052                "at",
053                "art",
054                "eat",
055                "earth",
056                "head",
057                "hit",
058                "hot",
059                "hold",
060                "hard",
061                "heart",
062                "it",
063                "out",
064                "old"});
065        }
066    
067        @Test
068        public void testEndMb() throws EncoderException {
069            String[][] data = {{"mb", "M11111"}, {"mbmb", "MPM111"}};
070            this.checkEncodings(data);
071        }
072    
073        /**
074         * Tests some examples from version 2.0 http://caversham.otago.ac.nz/files/working/ctp150804.pdf
075         *
076         * @throws EncoderException
077         */
078        @Test
079        public void testIsCaverphoneEquals() throws EncoderException {
080            Caverphone1 caverphone = new Caverphone1();
081            Assert.assertFalse("Caverphone encodings should not be equal", caverphone.isEncodeEqual("Peter", "Stevenson"));
082            Assert.assertTrue("Caverphone encodings should be equal", caverphone.isEncodeEqual("Peter", "Peady"));
083        }
084    
085        /**
086         * Tests example from http://caversham.otago.ac.nz/files/working/ctp060902.pdf
087         *
088         * @throws EncoderException
089         */
090        @Test
091        public void testSpecificationV1Examples() throws EncoderException {
092            String[][] data = {{"David", "TFT111"}, {"Whittle", "WTL111"}};
093            this.checkEncodings(data);
094        }
095    
096        /**
097         * Tests examples from http://en.wikipedia.org/wiki/Caverphone
098         *
099         * @throws EncoderException
100         */
101        @Test
102        public void testWikipediaExamples() throws EncoderException {
103            String[][] data = {{"Lee", "L11111"}, {"Thompson", "TMPSN1"}};
104            this.checkEncodings(data);
105        }
106    
107    }