/* Copyright (C) 2010 by Claas Wilke (claaswilke@gmx.net) This file is part of the OCL 2 Java Code Generator of Dresden OCL2 for Eclipse. Dresden OCL2 for Eclipse 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 OCL2 for Eclipse 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 OCL2 for Eclipse. If not, see <http://www.gnu.org/licenses/>. */ package org.dresdenocl.tools.codegen.ocl2java.test.aspectj.standardlibrary; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Test; import testpackage.Class1; /** * <p> * Tests generated code for boolean operations of the OCL Standard Library. * </p> * * @author Claas Wilke */ public class TestSet { /** * <p> * Tests the generated code for the method <code>Set.asBag()</code> . * </p> */ @Test public void testAsBag01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); assertEquals(3, class1.testSetAsBag(set01).size()); } /** * <p> * Tests the generated code for the method <code>Set.asOrderedSet()</code> . * </p> */ @Test public void testAsOrderedSet01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); assertEquals(3, class1.testSetAsOrderedSet(set01).size()); } /** * <p> * Tests the generated code for the method <code>Set.asSequence()</code> . * </p> */ @Test public void testAsSequence01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); assertEquals(3, class1.testSetAsSequence(set01).size()); } /** * <p> * Tests the generated code for the method <code>Set.asSet()</code> . * </p> */ @Test public void testAsSet01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); assertEquals(3, class1.testSetAsSet(set01).size()); } /** * <p> * Tests the generated code for the method <code>Set.count()</code> . * </p> */ @Test public void testCount01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); assertEquals(new Integer(1), class1.testSetCount01(set01, 1)); } /** * <p> * Tests the generated code for the method <code>Set.=(Set)</code> . * </p> */ @Test public void testEquals01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(2); set02.add(4); assertTrue(class1.testSetEquals01(set01, set01)); assertFalse(class1.testSetEquals01(set01, set02)); } /** * <p> * Tests the generated code for the method <code>Set.excluding(T)</code>. * </p> */ @Test public void testExcluding01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(2); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(1); set03.add(3); assertEquals(set01, class1.testSetExcluding01(set01, 0)); assertEquals(set02, class1.testSetExcluding01(set01, 3)); assertEquals(set03, class1.testSetExcluding01(set01, 2)); } /** * <p> * Tests the generated code for the method <code>Set.flatten()</code> . * </p> */ @Test public void testFlatten01() { Class1 class1; class1 = new Class1(); Set<Object> containedSet01; containedSet01 = new HashSet<Object>(); containedSet01.add(1); containedSet01.add(2); Set<Object> containedSet02; containedSet02 = new HashSet<Object>(); containedSet02.add(1); containedSet02.add(3); Set<Object> oclSet; oclSet = new HashSet<Object>(); oclSet.add(containedSet01); oclSet.add(containedSet02); Set<Object> expectedSet; expectedSet = new HashSet<Object>(); expectedSet.add(1); expectedSet.add(2); expectedSet.add(3); assertEquals(expectedSet, class1.testSetFlatten(oclSet)); } /** * <p> * Tests the generated code for the method <code>Set.including(T)</code>. * </p> */ @Test public void testIncluding01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(2); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(1); set03.add(3); assertEquals(set01, class1.testSetIncluding01(set02, 3)); assertEquals(set01, class1.testSetIncluding01(set03, 2)); } /** * <p> * Tests the generated code for the method * <code>Set.intersection(Set(T))</code>. * </p> */ @Test public void testIntersection01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(2); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(1); assertEquals(set03, class1.testSetIntersection01(set01, set02)); } /** * <p> * Tests the generated code for the method * <code>Set.intersection(Set(T))</code>. * </p> */ @Test public void testIntersection02() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(3); List<Object> bag01; bag01 = new ArrayList<Object>(); bag01.add(1); bag01.add(2); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); assertEquals(set02, class1.testSetIntersection02(set01, bag01)); } /** * <p> * Tests the generated code for the method <code>Set.-(Set)</code> . * </p> */ @Test public void testMinus01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(2); set02.add(3); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(1); assertEquals(set03, class1.testSetMinus(set01, set02)); } /** * <p> * Tests the generated code for the method * <code>Set.symmetricDifference(Set)</code> . * </p> */ @Test public void testSymmetricDifference01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(3); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(2); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(2); set03.add(3); assertEquals(set03, class1.testSetSymmetricDifference01(set01, set02)); } /** * <p> * Tests the generated code for the method <code>Set.union(Set(T))</code>. * </p> */ @Test public void testUnion01() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); Set<Object> set02; set02 = new HashSet<Object>(); set02.add(1); set02.add(3); Set<Object> set03; set03 = new HashSet<Object>(); set03.add(1); set03.add(2); set03.add(3); assertEquals(set03, class1.testSetUnion01(set01, set02)); } /** * <p> * Tests the generated code for the method <code>Set.union(Set(T))</code>. * </p> */ @Test public void testUnion02() { Class1 class1; class1 = new Class1(); Set<Object> set01; set01 = new HashSet<Object>(); set01.add(1); set01.add(2); List<Object> bag01; bag01 = new ArrayList<Object>(); bag01.add(1); bag01.add(3); List<?> unitedCollection; unitedCollection = class1.testSetUnion02(set01, bag01); int countOfOne = 0; for (Object elem : unitedCollection) { if (elem.equals(1)) countOfOne++; } // end for. assertEquals(2, countOfOne); assertTrue(unitedCollection.contains(2)); assertTrue(unitedCollection.contains(3)); } }