/*
Copyright (C) 2008-2010 by Claas Wilke (claas.wilke@tu-dresden.de)
This file is part of the OCL 2 Java Code Generator of Dresden OCL.
Dresden OCL is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by the
Free Software Foundation, either version 3 of the License, or (at your option)
any later version.
Dresden OCL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
for more details.
You should have received a copy of the GNU Lesser General Public License along
with Dresden OCL. If not, see <http://www.gnu.org/licenses/>.
*/
package org.dresdenocl.tools.codegen.ocl2java.types.test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import org.dresdenocl.tools.codegen.ocl2java.types.OclBag;
import org.dresdenocl.tools.codegen.ocl2java.types.OclOrderedSet;
import org.dresdenocl.tools.codegen.ocl2java.types.OclSequence;
import org.dresdenocl.tools.codegen.ocl2java.types.OclSet;
/**
* <p>
* Provides test cases to test the methods of the class {@link OclSet}.
* </p>
*
* @author Claas Wilke
*/
@SuppressWarnings("deprecation")
public class OclSetTest {
@Test
public void testAsBag() {
OclSet<String> set1;
OclBag<String> bag1;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "4";
object4 = "3";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set1.add(object4);
bag1 = set1.asBag();
assertEquals(4, bag1.size());
assertTrue(bag1.contains(object1));
assertTrue(bag1.contains(object2));
assertTrue(bag1.contains(object3));
assertTrue(bag1.contains(object4));
}
@Test
public void testAsOrderedSet() {
OclSet<String> set1;
OclOrderedSet<String> set2;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "4";
object4 = "3";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set1.add(object4);
set2 = set1.asOrderedSet();
assertEquals(4, set2.size());
assertTrue(set2.contains(object1));
assertTrue(set2.contains(object2));
assertTrue(set2.contains(object3));
assertTrue(set2.contains(object4));
}
@Test
public void testAsSequence() {
OclSet<String> set1;
OclSequence<String> sequence1;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "4";
object4 = "3";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set1.add(object4);
sequence1 = set1.asSequence();
for (int i = 1; i <= set1.size(); i++) {
assertTrue(set1.contains(sequence1.get(1)));
}
}
@Test
public void testAsSet() {
OclSet<String> set1;
OclSet<String> set2;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "4";
object4 = "3";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set1.add(object4);
set2 = set1.asSet();
assertEquals(set2, set1);
}
@Test
public void testExcluding() {
OclSet<String> set1;
OclSet<String> set2;
String object1;
String object2;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
object1 = "1";
object2 = "2";
set1.add(object1);
set1.add(object2);
set2.add(object2);
set1 = set1.excluding(object1);
assertEquals(1, set1.size());
assertTrue(set1.equals(set2));
set1.add(object1);
set1.add(object1);
set1 = set1.excluding(object1);
assertTrue(set1.equals(set2));
}
@Test
public void testFlatten1() {
OclSet<String> set1;
OclSet<String> set2;
OclSet<?> set3;
String object1;
String object2;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
object1 = "1";
object2 = "2";
set1.add(object1);
set1.add(object2);
set2.add(object1);
set2.add(object2);
set3 = set1.flatten();
assertTrue(set3.contains(object1));
assertTrue(set3.contains(object2));
assertEquals(2, set3.size());
assertTrue(set3.equals(set2));
}
@SuppressWarnings("unchecked")
@Test
public void testFlatten2() {
OclSet<OclBag<String>> set1;
OclBag<String> bag1;
OclSet<String> set2;
String object1;
String object2;
set1 = new OclSet<OclBag<String>>();
bag1 = new OclBag<String>();
object1 = "1";
object2 = "2";
bag1.add(object1);
bag1.add(object2);
set1.add(bag1);
set2 = (OclSet<String>) set1.flatten();
assertTrue(set2.contains(object1));
assertTrue(set2.contains(object2));
assertEquals(1, set2.count(object1));
assertEquals(1, set2.count(object2));
}
@Test
public void testIncluding() {
OclSet<String> bag1;
OclSet<String> bag2;
String object1;
String object2;
bag1 = new OclSet<String>();
bag2 = new OclSet<String>();
object1 = "1";
object2 = "2";
bag1.add(object2);
bag2.add(object1);
bag2.add(object2);
bag1 = bag1.including(object1);
assertEquals(2, bag1.size());
assertTrue(bag1.equals(bag2));
}
@Test
public void testIntersectionWithBag() {
OclSet<String> set1;
OclBag<String> bag1;
OclSet<String> set2;
OclSet<String> set3;
String object1;
String object2;
String object3;
set1 = new OclSet<String>();
bag1 = new OclBag<String>();
set2 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
set1.add(object1);
set1.add(object2);
bag1.add(object1);
bag1.add(object1);
bag1.add(object2);
bag1.add(object3);
set2.add(object1);
set2.add(object2);
set3 = set1.intersection(bag1);
assertTrue(set2.equals(set3));
}
@Test
public void testIntersectionWithSet() {
OclSet<String> set1;
OclSet<String> set2;
OclSet<String> set3;
OclSet<String> set4;
String object1;
String object2;
String object3;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
set4 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
set1.add(object1);
set1.add(object2);
set4.add(object1);
set4.add(object2);
set4.add(object3);
set2.add(object1);
set2.add(object2);
set3 = set1.intersection(set4);
assertTrue(set3.equals(set2));
}
@Test
public void testMinus() {
OclSet<String> set1;
OclSet<String> set2;
OclSet<String> set3;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
set3 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
object4 = "4";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set1.add(object4);
set2.add(object2);
set2.add(object3);
set3.add(object1);
set3.add(object4);
assertEquals(set3, set1.minus(set2));
}
@Test
public void testSymmetricDifference() {
OclSet<String> set1;
OclSet<String> set2;
OclSet<String> set3;
String object1;
String object2;
String object3;
String object4;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
set3 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
object4 = "4";
set1.add(object1);
set1.add(object2);
set1.add(object3);
set2.add(object2);
set2.add(object3);
set2.add(object4);
set3.add(object1);
set3.add(object4);
assertEquals(set3, set1.symmetricDifference(set2));
}
@Test
public void testUnionWithBag() {
OclSet<String> set1;
OclBag<String> bag1;
OclSet<String> set2;
OclSet<String> set3;
String object1;
String object2;
String object3;
set1 = new OclSet<String>();
bag1 = new OclBag<String>();
set2 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
set1.add(object1);
set1.add(object2);
bag1.add(object1);
bag1.add(object1);
bag1.add(object2);
bag1.add(object3);
set2.add(object1);
set2.add(object2);
set2.add(object3);
set3 = set1.union(bag1);
assertEquals(set2, set3);
}
@Test
public void testUnionWithSet() {
OclSet<String> set1;
OclSet<String> set2;
OclSet<String> set3;
OclSet<String> set4;
String object1;
String object2;
String object3;
set1 = new OclSet<String>();
set2 = new OclSet<String>();
set4 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
set1.add(object1);
set1.add(object2);
set1.add(object2);
set4.add(object1);
set4.add(object2);
set4.add(object3);
set2.add(object1);
set2.add(object2);
set2.add(object3);
set3 = set1.union(set4);
assertTrue(set3.equals(set2));
}
}