Package org.eclipse.sapphire.tests.observable

Source Code of org.eclipse.sapphire.tests.observable.ObservableMapTests

/******************************************************************************
* Copyright (c) 2014 Oracle
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
*    Konstantin Komissarchik - initial implementation and ongoing maintenance
******************************************************************************/

package org.eclipse.sapphire.tests.observable;

import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;

import org.eclipse.sapphire.ObservableMap;
import org.eclipse.sapphire.tests.EventLog;
import org.eclipse.sapphire.tests.SapphireTestCase;
import org.eclipse.sapphire.util.MapFactory;
import org.junit.Test;

/**
* Tests ObservableMap.
*
* @author <a href="mailto:konstantin.komissarchik@oracle.com">Konstantin Komissarchik</a>
*/

public final class ObservableMapTests extends SapphireTestCase
{
    @Test
   
    public void Size() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        assertEquals( 0, observable.size() );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
       
        assertEquals( 2, observable.size() );
       
        base.clear();
       
        assertEquals( 0, observable.size() );
    }

    @Test
   
    public void Empty() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        assertTrue( observable.isEmpty() );
       
        base.put( "a", "1" );
       
        assertFalse( observable.isEmpty() );
       
        base.clear();
       
        assertTrue( observable.isEmpty() );
    }

    @Test
   
    public void ContainsKey() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
       
        assertTrue( observable.containsKey( "a" ) );
        assertFalse( observable.containsKey( "b" ) );
        assertFalse( observable.containsKey( "1" ) );
        assertFalse( observable.containsKey( new Object() ) );
    }

    @Test
   
    public void ContainsValue() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
       
        assertTrue( observable.containsValue( "1" ) );
        assertFalse( observable.containsValue( "2" ) );
        assertFalse( observable.containsValue( "a" ) );
        assertFalse( observable.containsValue( new Object() ) );
    }

    @Test
   
    public void EntrySet() throws Exception
    {
        final Map<String,String> base = new LinkedHashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
        base.put( "c", "3" );
       
        final EventLog log = new EventLog();
        observable.attach( log );
       
        final Iterator<Map.Entry<String,String>> itr = observable.entrySet().iterator();
       
        assertTrue( itr.hasNext() );
       
        final Map.Entry<String,String> a = itr.next();
       
        assertEquals( "a", a.getKey() );
        assertEquals( "1", a.getValue() );
       
        assertTrue( itr.hasNext() );
       
        final Map.Entry<String,String> b = itr.next();
       
        assertEquals( "b", b.getKey() );
        assertEquals( "2", b.getValue() );
       
        itr.remove();
       
        assertEquals( MapFactory.start().add( "a", "1" ).add( "c", "3" ).result(), base );
        assertEquals( 1, log.size() );
       
        assertTrue( itr.hasNext() );
       
        final Map.Entry<String,String> c = itr.next();
       
        assertEquals( "c", c.getKey() );
        assertEquals( "3", c.getValue() );
       
        assertFalse( itr.hasNext() );
    }

    @Test
   
    public void Get() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
       
        assertEquals( "1", observable.get( "a" ) );
        assertEquals( "2", observable.get( "b" ) );
        assertNull( observable.get( "c" ) );
    }

    @Test
   
    public void Put() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
       
        final EventLog log = new EventLog();
        observable.attach( log );
       
        observable.put( "c", "3" );

        assertEquals( MapFactory.start().add( "a", "1" ).add( "b", "2" ).add( "c", "3" ).result(), base );
        assertEquals( 1, log.size() );
       
        log.clear();
        observable.put( "b", "22" );

        assertEquals( MapFactory.start().add( "a", "1" ).add( "b", "22" ).add( "c", "3" ).result(), base );
        assertEquals( 1, log.size() );
       
        log.clear();
        observable.put( "c", "3" );

        assertEquals( MapFactory.start().add( "a", "1" ).add( "b", "22" ).add( "c", "3" ).result(), base );
        assertEquals( 0, log.size() );
    }

    @Test
   
    public void PutAll() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
       
        final EventLog log = new EventLog();
        observable.attach( log );
       
        observable.putAll( MapFactory.<String,String>start().add( "c", "3" ).add( "d", "4" ).result() );

        assertEquals( MapFactory.start().add( "a", "1" ).add( "b", "2" ).add( "c", "3" ).add( "d", "4" ).result(), base );
        assertEquals( 1, log.size() );

        log.clear();
        observable.putAll( MapFactory.<String,String>start().add( "a", "11" ).add( "b", "22" ).result() );

        assertEquals( MapFactory.start().add( "a", "11" ).add( "b", "22" ).add( "c", "3" ).add( "d", "4" ).result(), base );
        assertEquals( 1, log.size() );
       
        log.clear();
        observable.putAll( MapFactory.<String,String>start().add( "c", "3" ).add( "d", "4" ).result() );

        assertEquals( MapFactory.start().add( "a", "11" ).add( "b", "22" ).add( "c", "3" ).add( "d", "4" ).result(), base );
        assertEquals( 0, log.size() );
    }

    @Test
   
    public void Remove() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
        base.put( "c", "3" );
       
        final EventLog log = new EventLog();
        observable.attach( log );
       
        observable.remove( "b" );

        assertEquals( MapFactory.start().add( "a", "1" ).add( "c", "3" ).result(), base );
        assertEquals( 1, log.size() );

        log.clear();
        observable.remove( "d" );
       
        assertEquals( MapFactory.start().add( "a", "1" ).add( "c", "3" ).result(), base );
        assertEquals( 0, log.size() );
    }

    @Test
   
    public void Clear() throws Exception
    {
        final Map<String,String> base = new HashMap<String,String>();
        final ObservableMap<String,String> observable = new ObservableMap<String,String>( base );
       
        base.put( "a", "1" );
        base.put( "b", "2" );
        base.put( "c", "3" );
       
        final EventLog log = new EventLog();
        observable.attach( log );
       
        observable.clear();

        assertTrue( base.isEmpty() );
        assertEquals( 1, log.size() );

        log.clear();
        observable.clear();
       
        assertTrue( base.isEmpty() );
        assertEquals( 0, log.size() );
    }

}
TOP

Related Classes of org.eclipse.sapphire.tests.observable.ObservableMapTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.