Пример #1
0
        public void MinMaxSumTest()
        {
            OclBag source = TestUtils.CreateIntBag(1, 2, 3, 1);

            TestUtils.AreEqual((OclInteger)7, source.sum((OclInteger)0, (x, y) => x + y));
            TestUtils.AreEqual((OclInteger)1, source.min <OclInteger>((x, y) => x.min(y)));
            TestUtils.AreEqual((OclInteger)3, source.max <OclInteger>((x, y) => x.max(y)));
        }
Пример #2
0
        public void ProductTest()
        {
            OclBag       a         = TestUtils.CreateIntBag(1, 2);
            OclBag       b         = TestUtils.CreateIntBag(1, 3);
            OclTupleType tupleType = OclTupleType.Tuple(OclTupleType.Part("first", OclInteger.Type), OclTupleType.Part("second", OclInteger.Type));
            OclSet       pr        = new OclSet(tupleType,
                                                new OclTuple(tupleType, (OclInteger)1, (OclInteger)1),
                                                new OclTuple(tupleType, (OclInteger)1, (OclInteger)3),
                                                new OclTuple(tupleType, (OclInteger)2, (OclInteger)1),
                                                new OclTuple(tupleType, (OclInteger)2, (OclInteger)3)
                                                );

            TestUtils.AreEqual(pr, a.product(b));
        }
Пример #3
0
        public void UnorderedClosureTest()
        {
            Func <OclInteger, OclAny> body = x => new OclSequence(OclInteger.Type, x.div((OclInteger)2), x.op_UnaryNegation());

            OclBag l = TestUtils.CreateIntBag();

            TestUtils.AreEqual(TestUtils.CreateIntSet(), l.closure(OclInteger.Type, body));
            l = l.including(OclInteger.Type, (OclInteger)3);
            TestUtils.AreEqual(TestUtils.CreateIntSet(3, 1, 0, -1, -3), l.closure(OclInteger.Type, body));
            l = l.including(OclInteger.Type, (OclInteger)16);
            OclSet set = TestUtils.CreateIntSet(0, 1, 2, 3, 4, 8, 16, -1, -2, -3, -4, -8, -16);

            TestUtils.AreEqual(set, l.closure(OclInteger.Type, body));
            l = l.including(OclInteger.Type, (OclInteger)(-4));
            TestUtils.AreEqual(set, l.closure(OclInteger.Type, body));
        }
Пример #4
0
        public void OperationsTest()
        {
            OclBag bag  = TestUtils.CreateIntBag(1, 1, 2);
            OclBag bag2 = TestUtils.CreateIntBag(2, 3);
            OclBag bag3 = TestUtils.CreateIntBag(1, 2, 2);

            TestUtils.AreEqual((OclInteger)3, bag.size());
            TestUtils.AreEqual((OclBoolean)true, bag.includes((OclInteger)1));
            TestUtils.AreEqual((OclBoolean)false, bag.excludes((OclInteger)1));
            TestUtils.AreEqual((OclInteger)2, bag.count((OclInteger)1));
            TestUtils.AreEqual((OclBoolean)false, bag.includesAll(TestUtils.CreateIntSet(1, 4)));
            TestUtils.AreEqual((OclBoolean)false, bag.excludesAll(TestUtils.CreateIntSet(1, 4)));
            TestUtils.AreEqual((OclBoolean)false, bag.isEmpty());
            TestUtils.AreEqual((OclBoolean)true, bag.notEmpty());


            TestUtils.AreEqual(TestUtils.CreateIntBag(1, 1, 2, 2, 3), bag.union(OclInteger.Type, bag2));
            TestUtils.AreEqual(TestUtils.CreateIntBag(1, 1, 2, 2, 3), bag.union(OclInteger.Type, TestUtils.CreateIntSet(2, 3)));
            TestUtils.AreEqual(TestUtils.CreateIntBag(1, 2), bag.intersection(bag3));
            TestUtils.AreEqual(TestUtils.CreateIntSet(2), bag.intersection(TestUtils.CreateIntSet(2, 3)));
            TestUtils.AreEqual(TestUtils.CreateIntBag(1, 1, 1, 2), bag.including(OclInteger.Type, (OclInteger)1));
            TestUtils.AreEqual(TestUtils.CreateIntBag(2), bag.excluding(OclInteger.Type, (OclInteger)1));
            TestUtils.AreEqual((OclInteger)2, bag.count((OclInteger)1));
        }