001/*
002 * ModeShape (http://www.modeshape.org)
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 *       http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016package org.modeshape.common.xml;
017
018import static org.hamcrest.core.Is.is;
019import static org.junit.Assert.assertThat;
020import org.junit.Test;
021
022/**
023 * 
024 */
025public class XmlCharactersTest {
026
027    @Test
028    public void shouldNotAllowColonInNcName() {
029        assertThat(XmlCharacters.isValidNcNameStart(':'), is(false));
030    }
031
032    @Test
033    public void shouldNotAllowDigitAsFirstCharacterInName() {
034        assertThat(XmlCharacters.isValidNameStart('0'), is(false));
035        assertThat(XmlCharacters.isValidNameStart('1'), is(false));
036        assertThat(XmlCharacters.isValidNameStart('2'), is(false));
037        assertThat(XmlCharacters.isValidNameStart('3'), is(false));
038        assertThat(XmlCharacters.isValidNameStart('4'), is(false));
039        assertThat(XmlCharacters.isValidNameStart('5'), is(false));
040        assertThat(XmlCharacters.isValidNameStart('6'), is(false));
041        assertThat(XmlCharacters.isValidNameStart('7'), is(false));
042        assertThat(XmlCharacters.isValidNameStart('8'), is(false));
043        assertThat(XmlCharacters.isValidNameStart('9'), is(false));
044    }
045
046    @Test
047    public void shouldAllowLettersAsFirstCharacterInName() {
048        for (char c = 'a'; c <= 'z'; ++c) {
049            assertThat(XmlCharacters.isValidNameStart(c), is(true));
050        }
051        for (char c = 'A'; c <= 'Z'; ++c) {
052            assertThat(XmlCharacters.isValidNameStart(c), is(true));
053        }
054    }
055
056    @Test
057    public void shouldNotAllowDigitAsFirstCharacterInNcName() {
058        assertThat(XmlCharacters.isValidNcNameStart('0'), is(false));
059        assertThat(XmlCharacters.isValidNcNameStart('1'), is(false));
060        assertThat(XmlCharacters.isValidNcNameStart('2'), is(false));
061        assertThat(XmlCharacters.isValidNcNameStart('3'), is(false));
062        assertThat(XmlCharacters.isValidNcNameStart('4'), is(false));
063        assertThat(XmlCharacters.isValidNcNameStart('5'), is(false));
064        assertThat(XmlCharacters.isValidNcNameStart('6'), is(false));
065        assertThat(XmlCharacters.isValidNcNameStart('7'), is(false));
066        assertThat(XmlCharacters.isValidNcNameStart('8'), is(false));
067        assertThat(XmlCharacters.isValidNcNameStart('9'), is(false));
068    }
069}