001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.junit;
016    
017    
018    import org.apache.tapestry.util.ContentType;
019    import org.testng.annotations.Test;
020    
021    /**
022     * Test the functionality of {@link org.apache.tapestry.util.ContentType}
023     * 
024     * @author Mindbridge
025     * @since 3.0
026     */
027    @Test
028    public class ContentTypeTest extends TapestryTestCase
029    {
030        public void testEquals()
031        {
032            ContentType master = new ContentType("text/html");
033    
034            assertEquals(false, master.equals(null));
035            assertEquals(false, master.equals(this));
036            assertEquals(true, master.equals(master));
037            assertEquals(true, master.equals(new ContentType("text/html")));
038            assertEquals(false, master.equals(new ContentType("foo/bar")));
039            assertEquals(false, master.equals(new ContentType("text/plain")));
040        }
041    
042        public void testEqualsWithParameters()
043        {
044            ContentType master = new ContentType("text/html;charset=utf-8");
045    
046            assertEquals(false, master.equals(new ContentType("text/html")));
047            assertEquals(true, master.equals(new ContentType("text/html;charset=utf-8")));
048            assertEquals(false, master.equals(new ContentType("text/html;charset=utf-8;foo=bar")));
049            
050            // Check that keys are case insensitive
051            
052            assertEquals(true, master.equals(new ContentType("text/html;Charset=utf-8")));
053         
054            master = new ContentType("text/html;foo=bar;biff=bazz");
055            
056            assertEquals(true, master.equals(new ContentType("text/html;foo=bar;biff=bazz")));
057            assertEquals(true, master.equals(new ContentType("text/html;Foo=bar;Biff=bazz")));
058            assertEquals(true, master.equals(new ContentType("text/html;biff=bazz;foo=bar")));
059        }
060    
061        public void testParsing1() throws Exception
062        {
063            ContentType contentType = new ContentType("text/html;charset=utf-8");
064    
065            assertEquals( "text", contentType
066                    .getBaseType());
067    
068            assertEquals( "html", contentType
069                    .getSubType());
070    
071            assertEquals( "text/html", contentType
072                    .getMimeType());
073    
074            String[] parameterNames = contentType.getParameterNames();
075            assertEquals(
076                    1,
077                    parameterNames.length);
078    
079            assertEquals(
080                    "charset",
081                    parameterNames[0]);
082    
083            String charset = contentType.getParameter("charset");
084            assertEquals( "utf-8", charset);
085    
086            String nonexistant = contentType.getParameter("nonexistant");
087            assertTrue(
088                    nonexistant == null);
089        }
090    
091        public void testParsing2() throws Exception
092        {
093            ContentType contentType = new ContentType("text/html");
094    
095            assertEquals( "text", contentType
096                    .getBaseType());
097    
098            assertEquals( "html", contentType
099                    .getSubType());
100    
101            assertEquals( "text/html", contentType
102                    .getMimeType());
103    
104            String[] parameterNames = contentType.getParameterNames();
105            assertEquals(
106                    0,
107                    parameterNames.length);
108    
109            String charset = contentType.getParameter("charset");
110            assertTrue(charset == null);
111        }
112    
113        public void testUnparsing1() throws Exception
114        {
115            ContentType contentType = new ContentType();
116    
117            contentType.setBaseType("text");
118            contentType.setSubType("html");
119            contentType.setParameter("charset", "utf-8");
120    
121            assertEquals(
122                    "text/html;charset=utf-8",
123                    contentType.unparse());
124        }
125    
126        public void testUnparsing2() throws Exception
127        {
128            ContentType contentType = new ContentType();
129    
130            contentType.setBaseType("text");
131            contentType.setSubType("html");
132    
133            assertEquals(
134                    "text/html",
135                    contentType.unparse());
136        }
137    
138    }