blob: 802dfc7c7fd26b3d0ef2a8687b7a8876dc7ccb10 [file] [log] [blame]
/*
* Copyright (c) 2004 - 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
* Simon McDuff - maintenance
*/
package org.eclipse.emf.cdo.tests;
import org.eclipse.emf.cdo.common.revision.CDORevisionData;
import org.eclipse.emf.cdo.eresource.CDOResource;
import org.eclipse.emf.cdo.session.CDOSession;
import org.eclipse.emf.cdo.tests.model1.Product1;
import org.eclipse.emf.cdo.tests.model1.Supplier;
import org.eclipse.emf.cdo.tests.model1.VAT;
import org.eclipse.emf.cdo.tests.model3.Point;
import org.eclipse.emf.cdo.tests.model3.Polygon;
import org.eclipse.emf.cdo.tests.model3.PolygonWithDuplicates;
import org.eclipse.emf.cdo.transaction.CDOTransaction;
import org.eclipse.emf.cdo.util.CDOUtil;
import org.eclipse.emf.cdo.view.CDOView;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.util.EcoreUtil;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.Arrays;
/**
* @author Eike Stepper
*/
public class AttributeTest extends AbstractCDOTest
{
public void testPrimitiveDefaults() throws Exception
{
{
Supplier supplier = getModel1Factory().createSupplier();
supplier.setName("Preferred Supplier");
assertEquals(true, supplier.isPreferred());
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(supplier);
assertEquals(true, supplier.isPreferred());
transaction.commit();
assertEquals(true, supplier.isPreferred());
session.close();
}
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
Supplier supplier = (Supplier)resource.getContents().get(0);
assertEquals(true, supplier.isPreferred());
view.close();
session.close();
}
}
public void testEnumDefaults() throws Exception
{
{
Product1 product = getModel1Factory().createProduct1();
product.setName("Test Product");
assertEquals(VAT.VAT15, product.getVat());
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(product);
assertEquals(VAT.VAT15, product.getVat());
transaction.commit();
assertEquals(VAT.VAT15, product.getVat());
session.close();
}
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
Product1 product = (Product1)resource.getContents().get(0);
assertEquals(VAT.VAT15, product.getVat());
view.close();
session.close();
}
}
// XXX disabled because of Bug 289445
// @Skips("Postgresql")
@CleanRepositoriesBefore
public void testByteArray() throws Exception
{
byte saveByteArray[] = new byte[] { 0, 1, 2, 3, 0, 1, 0, 100 };
{
EPackage packageWithBytes = createDynamicEPackageWithByte();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(packageWithBytes);
CDOTransaction transaction = session.openTransaction();
EClass eClass = (EClass)packageWithBytes.getEClassifier("GenOfByteArray");
EObject genOfByteArray = packageWithBytes.getEFactoryInstance().create(eClass);
genOfByteArray.eSet(genOfByteArray.eClass().getEStructuralFeature("bytes"), saveByteArray);
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(genOfByteArray);
transaction.commit();
session.close();
}
clearCache(getRepository().getRevisionManager());
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
EObject genOfByteArray = resource.getContents().get(0);
byte storeByteArray[] = (byte[])genOfByteArray.eGet(genOfByteArray.eClass().getEStructuralFeature("bytes"));
assertEquals(storeByteArray.length, saveByteArray.length);
for (int i = 0; i < storeByteArray.length; i++)
{
assertEquals(storeByteArray[i], saveByteArray[i]);
}
view.close();
session.close();
}
}
// XXX disabled because of Bug 289445
// @Skips("Postgresql")
@CleanRepositoriesBefore
public void testByteArrayEmpty() throws Exception
{
byte saveByteArray[] = new byte[0];
{
EPackage packageWithBytes = createDynamicEPackageWithByte();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(packageWithBytes);
CDOTransaction transaction = session.openTransaction();
EClass eClass = (EClass)packageWithBytes.getEClassifier("GenOfByteArray");
EObject genOfByteArray = packageWithBytes.getEFactoryInstance().create(eClass);
genOfByteArray.eSet(genOfByteArray.eClass().getEStructuralFeature("bytes"), saveByteArray);
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(genOfByteArray);
transaction.commit();
session.close();
}
clearCache(getRepository().getRevisionManager());
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
EObject genOfByteArray = resource.getContents().get(0);
byte storeByteArray[] = (byte[])genOfByteArray.eGet(genOfByteArray.eClass().getEStructuralFeature("bytes"));
assertEquals(0, storeByteArray.length);
view.close();
session.close();
}
}
// XXX disabled because of Bug 289445
// @Skips("Postgresql")
@CleanRepositoriesBefore
public void testByteArrayNull() throws Exception
{
byte saveByteArray[] = null;
{
EPackage packageWithBytes = createDynamicEPackageWithByte();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(packageWithBytes);
CDOTransaction transaction = session.openTransaction();
EClass eClass = (EClass)packageWithBytes.getEClassifier("GenOfByteArray");
EObject genOfByteArray = packageWithBytes.getEFactoryInstance().create(eClass);
genOfByteArray.eSet(genOfByteArray.eClass().getEStructuralFeature("bytes"), saveByteArray);
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(genOfByteArray);
transaction.commit();
session.close();
}
clearCache(getRepository().getRevisionManager());
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
EObject genOfByteArray = resource.getContents().get(0);
byte storeByteArray[] = (byte[])genOfByteArray.eGet(genOfByteArray.eClass().getEStructuralFeature("bytes"));
assertEquals(true, storeByteArray == null || storeByteArray.length == 0);
view.close();
session.close();
}
}
@CleanRepositoriesBefore
public void testBigDecimalAndBigInteger() throws Exception
{
BigDecimal bigDecimal = new BigDecimal(10);
BigInteger bigInteger = BigInteger.valueOf(10);
{
EPackage ePackage = createDynamicEPackageBigIntegerAndBigDecimal();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(ePackage);
CDOTransaction transaction = session.openTransaction();
EClass eClass = (EClass)ePackage.getEClassifier("Gen");
EStructuralFeature bigDecimalFeature = eClass.getEStructuralFeature("bigDecimal");
EStructuralFeature bigIntegerFeature = eClass.getEStructuralFeature("bigInteger");
EObject gen = ePackage.getEFactoryInstance().create(eClass);
gen.eSet(bigDecimalFeature, bigDecimal);
gen.eSet(bigIntegerFeature, bigInteger);
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(gen);
CDORevisionData data = CDOUtil.getCDOObject(gen).cdoRevision().data();
assertEquals(BigDecimal.class, data.get(bigDecimalFeature, -1).getClass());
assertEquals(BigInteger.class, data.get(bigIntegerFeature, -1).getClass());
transaction.commit();
session.close();
}
clearCache(getRepository().getRevisionManager());
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
EObject gen = resource.getContents().get(0);
BigDecimal bigDecimalStore = (BigDecimal)gen.eGet(gen.eClass().getEStructuralFeature("bigDecimal"));
BigInteger bigIntegerStore = (BigInteger)gen.eGet(gen.eClass().getEStructuralFeature("bigInteger"));
assertEquals(bigDecimal, bigDecimalStore);
assertEquals(bigInteger, bigIntegerStore);
view.close();
session.close();
}
}
@CleanRepositoriesBefore
public void testBigDecimalAndBigIntegerNull() throws Exception
{
BigDecimal bigDecimal = null;
BigInteger bigInteger = null;
{
EPackage ePackage = createDynamicEPackageBigIntegerAndBigDecimal();
CDOSession session = openSession();
session.getPackageRegistry().putEPackage(ePackage);
CDOTransaction transaction = session.openTransaction();
EClass eClass = (EClass)ePackage.getEClassifier("Gen");
EStructuralFeature bigDecimalFeature = eClass.getEStructuralFeature("bigDecimal");
EStructuralFeature bigIntegerFeature = eClass.getEStructuralFeature("bigInteger");
EObject gen = ePackage.getEFactoryInstance().create(eClass);
gen.eSet(bigDecimalFeature, bigDecimal);
gen.eSet(bigIntegerFeature, bigInteger);
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(gen);
transaction.commit();
session.close();
}
clearCache(getRepository().getRevisionManager());
{
CDOSession session = openSession();
CDOView view = session.openView();
CDOResource resource = view.getResource(getResourcePath("/my/resource"));
EObject gen = resource.getContents().get(0);
BigDecimal bigDecimalStore = (BigDecimal)gen.eGet(gen.eClass().getEStructuralFeature("bigDecimal"));
BigInteger bigIntegerStore = (BigInteger)gen.eGet(gen.eClass().getEStructuralFeature("bigInteger"));
assertNull(bigDecimalStore);
assertNull(bigIntegerStore);
view.close();
session.close();
}
}
private EPackage createDynamicEPackageWithByte()
{
final EcoreFactory efactory = EcoreFactory.eINSTANCE;
final EcorePackage epackage = EcorePackage.eINSTANCE;
EClass schoolBookEClass = efactory.createEClass();
schoolBookEClass.setName("GenOfByteArray");
// create a new attribute for this EClass
EAttribute level = efactory.createEAttribute();
level.setName("bytes");
level.setEType(epackage.getEByteArray());
schoolBookEClass.getEStructuralFeatures().add(level);
// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
schoolPackage.setName("EPackageTest");
schoolPackage.setNsPrefix("EPackageTest");
schoolPackage.setNsURI("http:///www.cdo.org/testcase");
schoolPackage.getEClassifiers().add(schoolBookEClass);
return schoolPackage;
}
private EPackage createDynamicEPackageBigIntegerAndBigDecimal()
{
final EcoreFactory efactory = EcoreFactory.eINSTANCE;
final EcorePackage epackage = EcorePackage.eINSTANCE;
EClass schoolBookEClass = efactory.createEClass();
schoolBookEClass.setName("Gen");
// create a new attribute for this EClass
EAttribute attrBigDecimal = efactory.createEAttribute();
attrBigDecimal.setName("bigDecimal");
attrBigDecimal.setEType(epackage.getEBigDecimal());
schoolBookEClass.getEStructuralFeatures().add(attrBigDecimal);
EAttribute attrBigInteger = efactory.createEAttribute();
attrBigInteger.setName("bigInteger");
attrBigInteger.setEType(epackage.getEBigInteger());
schoolBookEClass.getEStructuralFeatures().add(attrBigInteger);
// Create a new EPackage and add the new EClasses
EPackage schoolPackage = efactory.createEPackage();
schoolPackage.setName("EPackageTest");
schoolPackage.setNsPrefix("EPackageTest");
schoolPackage.setNsURI("http:///www.cdo.org/testcase");
schoolPackage.getEClassifiers().add(schoolBookEClass);
return schoolPackage;
}
public void testManyValuedCustomDataType_Get() throws Exception
{
Polygon polygon = getModel3Factory().createPolygon();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points = polygon.getPoints();
assertEquals(3, points.size());
assertInstanceOf(Point.class, points.get(0));
assertInstanceOf(Point.class, points.get(1));
assertInstanceOf(Point.class, points.get(2));
Object[] array1 = points.toArray();
assertEquals(points.size(), array1.length);
assertInstanceOf(Point.class, array1[0]);
assertInstanceOf(Point.class, array1[1]);
assertInstanceOf(Point.class, array1[2]);
Point[] array2 = points.toArray(new Point[3]);
assertEquals(points.size(), array2.length);
assertInstanceOf(Point.class, array2[0]);
assertInstanceOf(Point.class, array2[1]);
assertInstanceOf(Point.class, array2[2]);
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
points = polygon.getPoints();
assertEquals(3, points.size());
assertInstanceOf(Point.class, points.get(0));
assertInstanceOf(Point.class, points.get(1));
assertInstanceOf(Point.class, points.get(2));
array1 = points.toArray();
assertEquals(points.size(), array1.length);
assertInstanceOf(Point.class, array1[0]);
assertInstanceOf(Point.class, array1[1]);
assertInstanceOf(Point.class, array1[2]);
array2 = points.toArray(new Point[3]);
assertEquals(points.size(), array2.length);
assertInstanceOf(Point.class, array2[0]);
assertInstanceOf(Point.class, array2[1]);
assertInstanceOf(Point.class, array2[2]);
transaction.commit();
points = polygon.getPoints();
assertEquals(3, points.size());
assertInstanceOf(Point.class, points.get(0));
assertInstanceOf(Point.class, points.get(1));
assertInstanceOf(Point.class, points.get(2));
array1 = points.toArray();
assertEquals(points.size(), array1.length);
assertInstanceOf(Point.class, array1[0]);
assertInstanceOf(Point.class, array1[1]);
assertInstanceOf(Point.class, array1[2]);
array2 = points.toArray(new Point[3]);
assertEquals(points.size(), array2.length);
assertInstanceOf(Point.class, array2[0]);
assertInstanceOf(Point.class, array2[1]);
assertInstanceOf(Point.class, array2[2]);
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
polygon = (Polygon)resource.getContents().get(0);
points = polygon.getPoints();
assertEquals(3, points.size());
assertInstanceOf(Point.class, points.get(0));
assertInstanceOf(Point.class, points.get(1));
assertInstanceOf(Point.class, points.get(2));
array1 = points.toArray();
assertEquals(points.size(), array1.length);
assertInstanceOf(Point.class, array1[0]);
assertInstanceOf(Point.class, array1[1]);
assertInstanceOf(Point.class, array1[2]);
array2 = points.toArray(new Point[3]);
assertEquals(points.size(), array2.length);
assertInstanceOf(Point.class, array2[0]);
assertInstanceOf(Point.class, array2[1]);
assertInstanceOf(Point.class, array2[2]);
}
public void testManyValuedCustomDataType_Contains() throws Exception
{
Polygon polygon = getModel3Factory().createPolygon();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
assertEquals(true, points.contains(new Point(1, 2)));
assertEquals(true, points.contains(new Point(3, 4)));
assertEquals(true, points.contains(new Point(5, 6)));
assertEquals(true, points.contains(new Point(7, 8)));
assertEquals(true, points.contains(new Point(9, 0)));
assertEquals(false, points.contains(new Point(0, 2)));
assertEquals(false, points.contains(new Point(0, 4)));
assertEquals(false, points.contains(new Point(0, 6)));
assertEquals(false, points.contains(new Point(0, 8)));
assertEquals(false, points.contains(new Point(0, 0)));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
points = polygon.getPoints();
assertEquals(true, points.contains(new Point(1, 2)));
assertEquals(true, points.contains(new Point(3, 4)));
assertEquals(true, points.contains(new Point(5, 6)));
assertEquals(true, points.contains(new Point(7, 8)));
assertEquals(true, points.contains(new Point(9, 0)));
assertEquals(false, points.contains(new Point(0, 2)));
assertEquals(false, points.contains(new Point(0, 4)));
assertEquals(false, points.contains(new Point(0, 6)));
assertEquals(false, points.contains(new Point(0, 8)));
assertEquals(false, points.contains(new Point(0, 0)));
transaction.commit();
points = polygon.getPoints();
assertEquals(true, points.contains(new Point(1, 2)));
assertEquals(true, points.contains(new Point(3, 4)));
assertEquals(true, points.contains(new Point(5, 6)));
assertEquals(true, points.contains(new Point(7, 8)));
assertEquals(true, points.contains(new Point(9, 0)));
assertEquals(false, points.contains(new Point(0, 2)));
assertEquals(false, points.contains(new Point(0, 4)));
assertEquals(false, points.contains(new Point(0, 6)));
assertEquals(false, points.contains(new Point(0, 8)));
assertEquals(false, points.contains(new Point(0, 0)));
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
polygon = (Polygon)resource.getContents().get(0);
points = polygon.getPoints();
assertEquals(true, points.contains(new Point(1, 2)));
assertEquals(true, points.contains(new Point(3, 4)));
assertEquals(true, points.contains(new Point(5, 6)));
assertEquals(true, points.contains(new Point(7, 8)));
assertEquals(true, points.contains(new Point(9, 0)));
assertEquals(false, points.contains(new Point(0, 2)));
assertEquals(false, points.contains(new Point(0, 4)));
assertEquals(false, points.contains(new Point(0, 6)));
assertEquals(false, points.contains(new Point(0, 8)));
assertEquals(false, points.contains(new Point(0, 0)));
}
public void testManyValuedCustomDataType_ContainsAll() throws Exception
{
Polygon polygon = getModel3Factory().createPolygon();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
assertEquals(true, points.containsAll(points));
assertEquals(
true,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(9, 0) })));
assertEquals(true,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(9, 0) })));
assertEquals(
false,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(0, 0) })));
assertEquals(false,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(0, 0) })));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
points = polygon.getPoints();
assertEquals(true, points.containsAll(points));
assertEquals(
true,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(9, 0) })));
assertEquals(true,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(9, 0) })));
assertEquals(
false,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(0, 0) })));
assertEquals(false,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(0, 0) })));
transaction.commit();
points = polygon.getPoints();
assertEquals(true, points.containsAll(points));
assertEquals(
true,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(9, 0) })));
assertEquals(true,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(9, 0) })));
assertEquals(
false,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(0, 0) })));
assertEquals(false,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(0, 0) })));
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
polygon = (Polygon)resource.getContents().get(0);
points = polygon.getPoints();
assertEquals(true, points.containsAll(points));
assertEquals(
true,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(9, 0) })));
assertEquals(true,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(9, 0) })));
assertEquals(true, points.containsAll(Arrays.asList(new Point[] { new Point(9, 0) })));
assertEquals(
false,
points.containsAll(Arrays.asList(new Point[] { new Point(3, 4), new Point(5, 6), new Point(7, 8),
new Point(0, 0) })));
assertEquals(false,
points.containsAll(Arrays.asList(new Point[] { new Point(5, 6), new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(7, 8), new Point(0, 0) })));
assertEquals(false, points.containsAll(Arrays.asList(new Point[] { new Point(0, 0) })));
}
public void testManyValuedCustomDataType_IndexOf() throws Exception
{
PolygonWithDuplicates polygon = getModel3Factory().createPolygonWithDuplicates();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
assertEquals(0, points.indexOf(new Point(1, 2)));
assertEquals(1, points.indexOf(new Point(3, 4)));
assertEquals(2, points.indexOf(new Point(5, 6)));
assertEquals(3, points.indexOf(new Point(7, 8)));
assertEquals(4, points.indexOf(new Point(9, 0)));
assertEquals(-1, points.indexOf(new Point(0, 2)));
assertEquals(-1, points.indexOf(new Point(0, 4)));
assertEquals(-1, points.indexOf(new Point(0, 6)));
assertEquals(-1, points.indexOf(new Point(0, 8)));
assertEquals(-1, points.indexOf(new Point(0, 0)));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
points = polygon.getPoints();
assertEquals(0, points.indexOf(new Point(1, 2)));
assertEquals(1, points.indexOf(new Point(3, 4)));
assertEquals(2, points.indexOf(new Point(5, 6)));
assertEquals(3, points.indexOf(new Point(7, 8)));
assertEquals(4, points.indexOf(new Point(9, 0)));
assertEquals(-1, points.indexOf(new Point(0, 2)));
assertEquals(-1, points.indexOf(new Point(0, 4)));
assertEquals(-1, points.indexOf(new Point(0, 6)));
assertEquals(-1, points.indexOf(new Point(0, 8)));
assertEquals(-1, points.indexOf(new Point(0, 0)));
transaction.commit();
points = polygon.getPoints();
assertEquals(0, points.indexOf(new Point(1, 2)));
assertEquals(1, points.indexOf(new Point(3, 4)));
assertEquals(2, points.indexOf(new Point(5, 6)));
assertEquals(3, points.indexOf(new Point(7, 8)));
assertEquals(4, points.indexOf(new Point(9, 0)));
assertEquals(-1, points.indexOf(new Point(0, 2)));
assertEquals(-1, points.indexOf(new Point(0, 4)));
assertEquals(-1, points.indexOf(new Point(0, 6)));
assertEquals(-1, points.indexOf(new Point(0, 8)));
assertEquals(-1, points.indexOf(new Point(0, 0)));
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
polygon = (PolygonWithDuplicates)resource.getContents().get(0);
points = polygon.getPoints();
assertEquals(0, points.indexOf(new Point(1, 2)));
assertEquals(1, points.indexOf(new Point(3, 4)));
assertEquals(2, points.indexOf(new Point(5, 6)));
assertEquals(3, points.indexOf(new Point(7, 8)));
assertEquals(4, points.indexOf(new Point(9, 0)));
assertEquals(-1, points.indexOf(new Point(0, 2)));
assertEquals(-1, points.indexOf(new Point(0, 4)));
assertEquals(-1, points.indexOf(new Point(0, 6)));
assertEquals(-1, points.indexOf(new Point(0, 8)));
assertEquals(-1, points.indexOf(new Point(0, 0)));
}
public void testManyValuedCustomDataType_LastIndexOf() throws Exception
{
PolygonWithDuplicates polygon = getModel3Factory().createPolygonWithDuplicates();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
points.add(new Point(7, 8));
points.add(new Point(9, 0));
assertEquals(5, points.lastIndexOf(new Point(1, 2)));
assertEquals(6, points.lastIndexOf(new Point(3, 4)));
assertEquals(7, points.lastIndexOf(new Point(5, 6)));
assertEquals(8, points.lastIndexOf(new Point(7, 8)));
assertEquals(9, points.lastIndexOf(new Point(9, 0)));
assertEquals(-1, points.lastIndexOf(new Point(0, 2)));
assertEquals(-1, points.lastIndexOf(new Point(0, 4)));
assertEquals(-1, points.lastIndexOf(new Point(0, 6)));
assertEquals(-1, points.lastIndexOf(new Point(0, 8)));
assertEquals(-1, points.lastIndexOf(new Point(0, 0)));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
points = polygon.getPoints();
assertEquals(5, points.lastIndexOf(new Point(1, 2)));
assertEquals(6, points.lastIndexOf(new Point(3, 4)));
assertEquals(7, points.lastIndexOf(new Point(5, 6)));
assertEquals(8, points.lastIndexOf(new Point(7, 8)));
assertEquals(9, points.lastIndexOf(new Point(9, 0)));
assertEquals(-1, points.lastIndexOf(new Point(0, 2)));
assertEquals(-1, points.lastIndexOf(new Point(0, 4)));
assertEquals(-1, points.lastIndexOf(new Point(0, 6)));
assertEquals(-1, points.lastIndexOf(new Point(0, 8)));
assertEquals(-1, points.lastIndexOf(new Point(0, 0)));
transaction.commit();
points = polygon.getPoints();
assertEquals(5, points.lastIndexOf(new Point(1, 2)));
assertEquals(6, points.lastIndexOf(new Point(3, 4)));
assertEquals(7, points.lastIndexOf(new Point(5, 6)));
assertEquals(8, points.lastIndexOf(new Point(7, 8)));
assertEquals(9, points.lastIndexOf(new Point(9, 0)));
assertEquals(-1, points.lastIndexOf(new Point(0, 2)));
assertEquals(-1, points.lastIndexOf(new Point(0, 4)));
assertEquals(-1, points.lastIndexOf(new Point(0, 6)));
assertEquals(-1, points.lastIndexOf(new Point(0, 8)));
assertEquals(-1, points.lastIndexOf(new Point(0, 0)));
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
polygon = (PolygonWithDuplicates)resource.getContents().get(0);
points = polygon.getPoints();
assertEquals(5, points.lastIndexOf(new Point(1, 2)));
assertEquals(6, points.lastIndexOf(new Point(3, 4)));
assertEquals(7, points.lastIndexOf(new Point(5, 6)));
assertEquals(8, points.lastIndexOf(new Point(7, 8)));
assertEquals(9, points.lastIndexOf(new Point(9, 0)));
assertEquals(-1, points.lastIndexOf(new Point(0, 2)));
assertEquals(-1, points.lastIndexOf(new Point(0, 4)));
assertEquals(-1, points.lastIndexOf(new Point(0, 6)));
assertEquals(-1, points.lastIndexOf(new Point(0, 8)));
assertEquals(-1, points.lastIndexOf(new Point(0, 0)));
}
public void testManyValuedCustomDataType_Bugzilla_319950() throws Exception
{
Polygon polygon = getModel3Factory().createPolygon();
EList<Point> points = polygon.getPoints();
points.add(new Point(1, 2));
points.add(new Point(3, 4));
points.add(new Point(5, 6));
CDOSession session = openSession();
CDOTransaction transaction = session.openTransaction();
CDOResource resource = transaction.createResource(getResourcePath("/my/resource"));
resource.getContents().add(polygon);
transaction.commit();
session.close();
session = openSession();
transaction = session.openTransaction();
resource = transaction.getResource(getResourcePath("/my/resource"));
EList<EObject> contents = resource.getContents();
// java.lang.ClassCastException: org.eclipse.emf.internal.cdo.revision.CDOListWithElementProxiesImpl
EcoreUtil.copyAll(contents);
}
}