001/*
002 * Copyright 2005,2009 Ivan SZKIBA
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.ini4j;
017
018import org.ini4j.sample.Dwarf;
019import org.ini4j.sample.Dwarfs;
020
021import org.ini4j.test.DwarfsData;
022import org.ini4j.test.Helper;
023import org.ini4j.test.TaleData;
024
025import static org.junit.Assert.assertArrayEquals;
026import static org.junit.Assert.assertEquals;
027import static org.junit.Assert.assertNull;
028import static org.junit.Assert.assertSame;
029
030import org.junit.Test;
031
032public class BasicProfileSectionTest extends Ini4jCase
033{
034    @Test public void testAddChild() throws Exception
035    {
036        Profile prof = Helper.newTaleIni();
037        Profile.Section dwarfs = prof.get(TaleData.PROP_DWARFS);
038        Profile.Section doc = dwarfs.getChild(Dwarfs.PROP_DOC);
039        Profile.Section dopey2 = doc.addChild(Dwarfs.PROP_DOPEY);
040
041        assertSame(doc, dopey2.getParent());
042        assertSame(dopey2, dwarfs.lookup(Dwarfs.PROP_DOC, Dwarfs.PROP_DOPEY));
043        assertSame(dopey2, dwarfs.lookup(Dwarfs.PROP_DOC + '/' + Dwarfs.PROP_DOPEY));
044        assertEquals(1, doc.childrenNames().length);
045        doc.removeChild(Dwarfs.PROP_DOPEY);
046        assertEquals(0, doc.childrenNames().length);
047        assertNull(dwarfs.lookup(Dwarfs.PROP_DOC, Dwarfs.PROP_DOPEY));
048        assertNull(dwarfs.lookup(Dwarfs.PROP_DOC + '/' + Dwarfs.PROP_DOPEY));
049    }
050
051    @Test public void testGetChild() throws Exception
052    {
053        Profile prof = Helper.newTaleIni();
054        Profile.Section dwarfs = prof.get(TaleData.PROP_DWARFS);
055
056        assertArrayEquals(DwarfsData.dwarfNames, dwarfs.childrenNames());
057        assertSame(prof.get(TaleData.bashful.name), dwarfs.getChild(Dwarfs.PROP_BASHFUL));
058        assertSame(prof.get(TaleData.doc.name), dwarfs.getChild(Dwarfs.PROP_DOC));
059        assertSame(prof.get(TaleData.dopey.name), dwarfs.getChild(Dwarfs.PROP_DOPEY));
060        assertSame(prof.get(TaleData.grumpy.name), dwarfs.getChild(Dwarfs.PROP_GRUMPY));
061        assertSame(prof.get(TaleData.happy.name), dwarfs.getChild(Dwarfs.PROP_HAPPY));
062        assertSame(prof.get(TaleData.sleepy.name), dwarfs.getChild(Dwarfs.PROP_SLEEPY));
063        assertSame(prof.get(TaleData.sneezy.name), dwarfs.getChild(Dwarfs.PROP_SNEEZY));
064    }
065
066    @Test public void testGetParent() throws Exception
067    {
068        Profile prof = Helper.newTaleIni();
069        Profile.Section dwarfs = prof.get(TaleData.PROP_DWARFS);
070
071        assertNull(dwarfs.getParent());
072        assertSame(dwarfs, prof.get(TaleData.bashful.name).getParent());
073        assertSame(dwarfs, prof.get(TaleData.doc.name).getParent());
074        assertSame(dwarfs, prof.get(TaleData.dopey.name).getParent());
075        assertSame(dwarfs, prof.get(TaleData.grumpy.name).getParent());
076        assertSame(dwarfs, prof.get(TaleData.happy.name).getParent());
077        assertSame(dwarfs, prof.get(TaleData.sleepy.name).getParent());
078        assertSame(dwarfs, prof.get(TaleData.sneezy.name).getParent());
079    }
080
081    @Test public void testLoad() throws Exception
082    {
083        Profile prof = Helper.loadTaleIni();
084        Profile.Section dwarfs = prof.get(TaleData.PROP_DWARFS);
085
086        Helper.assertEquals(DwarfsData.bashful, dwarfs.getChild(Dwarfs.PROP_BASHFUL).as(Dwarf.class));
087        Helper.assertEquals(DwarfsData.doc, dwarfs.getChild(Dwarfs.PROP_DOC).as(Dwarf.class));
088        Helper.assertEquals(DwarfsData.dopey, dwarfs.getChild(Dwarfs.PROP_DOPEY).as(Dwarf.class));
089        Helper.assertEquals(DwarfsData.grumpy, dwarfs.getChild(Dwarfs.PROP_GRUMPY).as(Dwarf.class));
090        Helper.assertEquals(DwarfsData.happy, dwarfs.getChild(Dwarfs.PROP_HAPPY).as(Dwarf.class));
091        Helper.assertEquals(DwarfsData.sleepy, dwarfs.getChild(Dwarfs.PROP_SLEEPY).as(Dwarf.class));
092        Helper.assertEquals(DwarfsData.sneezy, dwarfs.getChild(Dwarfs.PROP_SNEEZY).as(Dwarf.class));
093    }
094}