/*
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.assertFalse;
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 OclBag}.
* </p>
*
* @author Claas Wilke
*/
@SuppressWarnings("deprecation")
public class OclBagTest {
@Test
public void testAsBag() {
OclBag<String> bag1;
OclBag<String> bag2;
String object1;
String object2;
bag1 = new OclBag<String>();
object1 = "1";
object2 = "2";
bag1.add(object1);
bag1.add(object2);
bag2 = bag1.asBag();
assertTrue(bag1.equals(bag2));
}
@Test
public void testAsOrderedSet() {
OclBag<String> bag1;
OclOrderedSet<String> set1;
String object1;
String object2;
bag1 = new OclBag<String>();
object1 = "1";
object2 = "1";
bag1.add(object1);
bag1.add(object2);
set1 = bag1.asOrderedSet();
assertTrue(set1.contains(object1));
assertEquals(1, set1.count(object1));
assertEquals(1, set1.size());
}
@Test
public void testAsSequence() {
OclBag<String> bag1;
OclSequence<String> sequence1;
String object1;
String object2;
bag1 = new OclBag<String>();
object1 = "1";
object2 = "1";
bag1.add(object1);
bag1.add(object2);
sequence1 = bag1.asSequence();
assertEquals(2, sequence1.size());
assertEquals(2, sequence1.count(object1));
assertEquals(2, sequence1.count(object2));
}
@Test
public void testAsSet() {
OclBag<String> bag1;
OclSet<String> set1;
String object1;
String object2;
bag1 = new OclBag<String>();
object1 = "1";
object2 = "1";
bag1.add(object1);
bag1.add(object2);
set1 = bag1.asSet();
assertTrue(set1.contains(object1));
assertEquals(1, set1.count(object1));
assertEquals(1, set1.size());
}
@Test
public void testEquals() {
OclBag<String> bag1;
OclBag<String> bag2;
String object1;
String object2;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
object1 = "1";
object2 = "1";
bag1.add(object1);
bag1.add(object2);
assertFalse(bag1.equals(bag2));
bag2.add(object1);
bag2.add(object1);
assertTrue(bag1.equals(bag2));
bag2.add(object1);
bag2.add(object1);
assertFalse(bag1.equals(bag2));
}
@Test
public void testExcluding() {
OclBag<String> bag1;
OclBag<String> bag2;
String object1;
String object2;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
object1 = "1";
object2 = "2";
bag1.add(object1);
bag1.add(object2);
bag2.add(object2);
bag1 = bag1.excluding(object1);
assertEquals(1, bag1.size());
assertTrue(bag1.equals(bag2));
bag1.add(object1);
bag1.add(object1);
bag1 = bag1.excluding(object1);
assertTrue(bag1.equals(bag2));
}
@Test
public void testFlatten1() {
OclBag<String> bag1;
OclBag<String> bag2;
OclBag<?> bag3;
String object1;
String object2;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
object1 = "1";
object2 = "2";
bag1.add(object1);
bag1.add(object2);
bag2.add(object1);
bag2.add(object2);
bag3 = bag1.flatten();
assertTrue(bag3.contains(object1));
assertTrue(bag3.contains(object2));
assertEquals(2, bag3.size());
assertTrue(bag3.equals(bag2));
}
@SuppressWarnings("unchecked")
@Test
public void testFlatten2() {
OclBag<OclBag<String>> bag1;
OclBag<String> bag2;
OclBag<String> bag3;
String object1;
String object2;
bag1 = new OclBag<OclBag<String>>();
bag2 = new OclBag<String>();
object1 = "1";
object2 = "2";
bag2.add(object1);
bag2.add(object2);
bag1.add(bag2);
bag1.add(bag2);
bag3 = (OclBag<String>) bag1.flatten();
assertTrue(bag3.contains(object1));
assertTrue(bag3.contains(object2));
assertEquals(2, bag3.count(object1));
assertEquals(2, bag3.count(object2));
}
@Test
public void testIncluding() {
OclBag<String> bag1;
OclBag<String> bag2;
String object1;
String object2;
bag1 = new OclBag<String>();
bag2 = new OclBag<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() {
OclBag<String> bag1;
OclBag<String> bag2;
OclBag<String> bag3;
OclBag<String> bag4;
String object1;
String object2;
String object3;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
bag3 = new OclBag<String>();
object1 = "1";
object2 = "2";
object3 = "3";
bag1.add(object1);
bag1.add(object2);
bag1.add(object2);
bag2.add(object1);
bag2.add(object1);
bag2.add(object2);
bag2.add(object3);
bag3.add(object1);
bag3.add(object2);
bag4 = bag1.intersection(bag2);
assertTrue(bag3.equals(bag4));
}
@Test
public void testIntersectionWithSet() {
OclBag<String> bag1;
OclBag<String> bag2;
OclBag<String> bag3;
OclSet<String> set1;
String object1;
String object2;
String object3;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
bag1.add(object1);
bag1.add(object2);
bag1.add(object2);
set1.add(object1);
set1.add(object2);
set1.add(object3);
bag2.add(object1);
bag2.add(object2);
bag3 = bag1.intersection(set1);
assertTrue(bag3.equals(bag2));
}
@Test
public void testUnionWithBag() {
OclBag<String> bag1;
OclBag<String> bag2;
OclBag<String> bag3;
OclBag<String> bag4;
String object1;
String object2;
String object3;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
bag3 = new OclBag<String>();
object1 = "1";
object2 = "2";
object3 = "3";
bag1.add(object1);
bag1.add(object2);
bag1.add(object2);
bag2.add(object1);
bag2.add(object1);
bag2.add(object2);
bag2.add(object3);
bag3.add(object1);
bag3.add(object1);
bag3.add(object1);
bag3.add(object2);
bag3.add(object2);
bag3.add(object2);
bag3.add(object3);
bag4 = bag1.union(bag2);
assertTrue(bag3.equals(bag4));
}
@Test
public void testUnionWithSet() {
OclBag<String> bag1;
OclBag<String> bag2;
OclBag<String> bag3;
OclSet<String> set1;
String object1;
String object2;
String object3;
bag1 = new OclBag<String>();
bag2 = new OclBag<String>();
set1 = new OclSet<String>();
object1 = "1";
object2 = "2";
object3 = "3";
bag1.add(object1);
bag1.add(object2);
bag1.add(object2);
set1.add(object1);
set1.add(object2);
set1.add(object3);
bag2.add(object1);
bag2.add(object1);
bag2.add(object2);
bag2.add(object2);
bag2.add(object2);
bag2.add(object3);
bag3 = bag1.union(set1);
assertTrue(bag3.equals(bag2));
}
}