Skip to main content
summaryrefslogblamecommitdiffstats
blob: df30e640da16889549b16a15197842bdea2a3203 (plain) (tree)
1
2
  
                                                                                 


































































































































                                                                                     
/*
 * Copyright (c) 2007-2009, 2011, 2012 Eike Stepper (Berlin, Germany) and others.
 * 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:
 *    Eike Stepper - initial API and implementation
 */
package org.eclipse.emf.cdo.tests;

import org.eclipse.emf.cdo.tests.util.TestEMFUtil;

import org.eclipse.net4j.util.io.IOUtil;
import org.eclipse.net4j.util.tests.AbstractOMTest;

import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EFactory;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.InternalEObject;

/**
 * @author Eike Stepper
 */
public class EMFTest extends AbstractOMTest
{
  public EMFTest()
  {
  }

  public void testProxy() throws Exception
  {
    EPackage model2 = (EPackage)TestEMFUtil.loadXMI("model2.ecore");
    EClass companyProxy = (EClass)model2.getEClassifier("CompanyProxy");
    EReference reference = (EReference)companyProxy.getEStructuralFeature("company");

    EClass type = (EClass)reference.getEType();
    dumpProxy(type);
    IOUtil.OUT().println(type.getName());
    dumpProxy(type);

    IOUtil.OUT().println();

    // if (false)
    // {
    // model2.eResource().getResourceSet().getResources().get(1).unload();
    // }
    // else
    {
      ((InternalEObject)type).eSetProxyURI(URI.createURI("model1.ecore#//Company"));
    }

    if (true)
    {
      type = (EClass)reference.getEType();
    }

    dumpProxy(type);
    IOUtil.OUT().println(type.getName());
    dumpProxy(type);
  }

  public void testDefaultValue() throws Exception
  {
    final String DEFAULT = "Simon";

    EAttribute assignee = EcoreFactory.eINSTANCE.createEAttribute();
    assignee.setName("assignee");
    assignee.setEType(EcorePackage.eINSTANCE.getEString());
    assignee.setDefaultValueLiteral(DEFAULT);
    assignee.setUnsettable(true);

    EClass bugzilla = EcoreFactory.eINSTANCE.createEClass();
    bugzilla.setName("Bugzilla");
    bugzilla.getEStructuralFeatures().add(assignee);

    EPackage p = EcoreFactory.eINSTANCE.createEPackage();
    p.setName("p");
    p.getEClassifiers().add(bugzilla);

    EFactory f = p.getEFactoryInstance();
    EObject object = f.create(bugzilla);
    assertEquals(DEFAULT, object.eGet(assignee));
    assertEquals(false, object.eIsSet(assignee));

    object.eSet(assignee, DEFAULT);
    assertEquals(DEFAULT, object.eGet(assignee));
    assertEquals(true, object.eIsSet(assignee));

    object.eUnset(assignee);
    assertEquals(DEFAULT, object.eGet(assignee));
    assertEquals(false, object.eIsSet(assignee));
  }

  private void dumpProxy(EObject object)
  {
    InternalEObject eObject = (InternalEObject)object;
    String label = eObject.eClass().getName();

    IOUtil.OUT().println(label + ": " + eObject.eIsProxy());
    IOUtil.OUT().println(label + ": " + eObject.eProxyURI());
  }

  public static void main(String[] args)
  {
    dump(URI.createURI("cdo:///a/b/c"));
    dump(URI.createURI("cdo://a/b/c"));
    dump(URI.createURI("cdo:/a/b/c"));
    dump(URI.createURI("cdo:a/b/c"));
  }

  private static void dump(URI uri)
  {
    System.out.println(uri);
    System.out.println();
    System.out.println("    isHierarchical: " + uri.isHierarchical());
    System.out.println("    isPrefix:       " + uri.isPrefix());
    System.out.println("    isRelative:     " + uri.isRelative());
    System.out.println("    authority:      " + uri.authority());
    System.out.println("    path:           " + uri.path());
    System.out.println("    devicePath:     " + uri.devicePath());
    System.out.println("    segmentsList:   " + uri.segmentsList());
    System.out.println("    opaquePart:     " + uri.opaquePart());
    System.out.println();
  }
}

Back to the top