Package org.eclipse.sapphire.tests.property

Source Code of org.eclipse.sapphire.tests.property.PropertyTests

/******************************************************************************
* 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.property;

import org.eclipse.sapphire.Disposable;
import org.eclipse.sapphire.tests.EventLog;
import org.eclipse.sapphire.tests.SapphireTestCase;
import org.eclipse.sapphire.tests.element.TestElement;
import org.junit.Test;

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

public final class PropertyTests extends SapphireTestCase
{
    @Test
   
    public void HoldsElement() throws Exception
    {
        final TestElement a = TestElement.TYPE.instantiate();
       
        try
        {
            final TestElement aa = a.getElement().content( true );
           
            assertTrue( a.getElement().holds( aa ) );
            assertFalse( a.getValue().holds( aa ) );
            assertFalse( a.getTransient().holds( aa ) );
            assertFalse( a.getList().holds( aa ) );
           
            final TestElement aaa = aa.getList().insert();
   
            assertTrue( a.getElement().holds( aaa ) );
            assertFalse( a.getValue().holds( aaa ) );
            assertFalse( a.getTransient().holds( aaa ) );
            assertFalse( a.getList().holds( aaa ) );
           
            assertTrue( aa.getList().holds( aaa ) );
            assertFalse( aa.getValue().holds( aaa ) );
            assertFalse( aa.getTransient().holds( aaa ) );
            assertFalse( aa.getElement().holds( aaa ) );
        }
        finally
        {
            a.dispose();
        }
    }

    @Test
   
    public void HoldsProperty() throws Exception
    {
        final TestElement a = TestElement.TYPE.instantiate();
       
        try
        {
            final TestElement aa = a.getElement().content( true );
           
            assertTrue( a.getElement().holds( aa.getValue() ) );
            assertTrue( a.getElement().holds( aa.getTransient() ) );
            assertTrue( a.getElement().holds( aa.getElement() ) );
            assertTrue( a.getElement().holds( aa.getList() ) );
           
            assertFalse( a.getValue().holds( aa.getValue() ) );
            assertFalse( a.getTransient().holds( aa.getValue() ) );
            assertFalse( a.getList().holds( aa.getValue() ) );
           
            final TestElement aaa = aa.getList().insert();
   
            assertTrue( a.getElement().holds( aaa.getValue() ) );
            assertTrue( a.getElement().holds( aaa.getTransient() ) );
            assertTrue( a.getElement().holds( aaa.getElement() ) );
            assertTrue( a.getElement().holds( aaa.getList() ) );
           
            assertFalse( a.getValue().holds( aaa.getValue() ) );
            assertFalse( a.getTransient().holds( aaa.getValue() ) );
            assertFalse( a.getList().holds( aaa.getValue() ) );
           
            assertTrue( aa.getList().holds( aaa.getValue() ) );
            assertTrue( aa.getList().holds( aaa.getTransient() ) );
            assertTrue( aa.getList().holds( aaa.getElement() ) );
            assertTrue( aa.getList().holds( aaa.getList() ) );
           
            assertFalse( aa.getValue().holds( aaa.getValue() ) );
            assertFalse( aa.getTransient().holds( aaa.getValue() ) );
            assertFalse( aa.getElement().holds( aaa.getValue() ) );
        }
        finally
        {
            a.dispose();
        }
    }

    @Test
   
    public void Suspend()
    {
        final EventLog log = new EventLog();
        final TestElement a = TestElement.TYPE.instantiate();
       
        try
        {
            a.attach( log, "*" );
           
            final TestElement aa = a.getElement().content( true );
           
            aa.setValue( "abc" );
            aa.getList().insert();
           
            assertEquals( 3, log.size() );
            assertPropertyContentEvent( log.event( 0 ), a.getElement() );
            assertPropertyContentEvent( log.event( 1 ), aa.getValue() );
            assertPropertyContentEvent( log.event( 2 ), aa.getList() );
           
            log.clear();
           
            final Disposable suspension = a.getElement().suspend();
           
            try
            {
                aa.setValue( "def" );
                aa.getList().insert().setValue( "ghi" );
                aa.getElement().content( true ).setValue( "klm" );
               
                assertEquals( 0, log.size() );
               
                a.setValue( "nop" );
               
                assertEquals( 1, log.size() );
                assertPropertyContentEvent( log.event( 0 ), a.getValue() );
               
                log.clear();
            }
            finally
            {
                suspension.dispose();
            }
           
            assertEquals( 5, log.size() );
            assertPropertyContentEvent( log.event( 0 ), aa.getValue() );
            assertPropertyContentEvent( log.event( 1 ), aa.getList() );
            assertPropertyContentEvent( log.event( 2 ), aa.getList().get( 1 ).getValue() );
            assertPropertyContentEvent( log.event( 3 ), aa.getElement() );
            assertPropertyContentEvent( log.event( 4 ), aa.getElement().content().getValue() );
        }
        finally
        {
            a.dispose();
        }
    }
   
}
TOP

Related Classes of org.eclipse.sapphire.tests.property.PropertyTests

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.