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 org.junit.Assert;
021    
022    import org.apache.commons.codec.EncoderException;
023    import org.apache.commons.codec.StringEncoderAbstractTest;
024    import org.junit.Test;
025    
026    /**
027     * Tests Caverphone1.
028     *
029     * @version $Id: Caverphone1Test.html 889935 2013-12-11 05:05:13Z ggregory $
030     * @since 1.5
031     */
032    public class Caverphone1Test extends StringEncoderAbstractTest<Caverphone1> {
033    
034        @Override
035        protected Caverphone1 createStringEncoder() {
036            return new Caverphone1();
037        }
038    
039        /**
040         * Tests example adapted from version 2.0  http://caversham.otago.ac.nz/files/working/ctp150804.pdf
041         *
042         * AT1111 words: add, aid, at, art, eat, earth, head, hit, hot, hold, hard, heart, it, out, old
043         *
044         * @throws EncoderException
045         */
046        @Test
047        public void testCaverphoneRevisitedCommonCodeAT1111() throws EncoderException {
048            this.checkEncodingVariations("AT1111", new String[]{
049                "add",
050                "aid",
051                "at",
052                "art",
053                "eat",
054                "earth",
055                "head",
056                "hit",
057                "hot",
058                "hold",
059                "hard",
060                "heart",
061                "it",
062                "out",
063                "old"});
064        }
065    
066        @Test
067        public void testEndMb() throws EncoderException {
068            final String[][] data = {{"mb", "M11111"}, {"mbmb", "MPM111"}};
069            this.checkEncodings(data);
070        }
071    
072        /**
073         * Tests some examples from version 2.0 http://caversham.otago.ac.nz/files/working/ctp150804.pdf
074         *
075         * @throws EncoderException
076         */
077        @Test
078        public void testIsCaverphoneEquals() throws EncoderException {
079            final Caverphone1 caverphone = new Caverphone1();
080            Assert.assertFalse("Caverphone encodings should not be equal", caverphone.isEncodeEqual("Peter", "Stevenson"));
081            Assert.assertTrue("Caverphone encodings should be equal", caverphone.isEncodeEqual("Peter", "Peady"));
082        }
083    
084        /**
085         * Tests example from http://caversham.otago.ac.nz/files/working/ctp060902.pdf
086         *
087         * @throws EncoderException
088         */
089        @Test
090        public void testSpecificationV1Examples() throws EncoderException {
091            final String[][] data = {{"David", "TFT111"}, {"Whittle", "WTL111"}};
092            this.checkEncodings(data);
093        }
094    
095        /**
096         * Tests examples from http://en.wikipedia.org/wiki/Caverphone
097         *
098         * @throws EncoderException
099         */
100        @Test
101        public void testWikipediaExamples() throws EncoderException {
102            final String[][] data = {{"Lee", "L11111"}, {"Thompson", "TMPSN1"}};
103            this.checkEncodings(data);
104        }
105    
106    }