Пример #1
0
        public void StringTest1()
        {
            var stream = CharStreams.fromstring(@"package RobotsTestModel
            context aMotorsForward
            inv@0:
            ""ABC""->toLower() = ""abc""
            inv@0:
            ""123""->toInteger() = 123
            inv@0:
            ""123""->toReal() = 123
            inv@0:
            ""abc""->toUpper() = ""ABC""
            inv@0:
            ""abc""->concat(""cde"")->toUpper() = ""ABCCDE""
            inv@0:
            ""abc""->substring(1, 1) = ""a""
            endpackage");

            ITokenSource lexer  = new OclLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new OclParser(tokens)
            {
                BuildParseTree = true
            };
            IParseTree tree = parser.oclFile();

            Assert.IsTrue(tree.Accept(interpreter));
        }
Пример #2
0
        public void CollectionTest1()
        {
            var stream = CharStreams.fromstring(@"package RobotsTestModel
            context aMotorsForward
            inv@0:
            Bag{ ""a"", ""bb"", ""ccc""}->select(self->size() = 2)->size() = 1
            inv@0:
            Bag{1,2,3}->forAll(x, y | x <> y implies x*y > 1)
            inv@0:
            Bag{1,2,3}->iterate(x; y : T = 0 | y + x) = 6
            inv@0:
            Set{""1"",""2"",""3""}->collect(self = ""0"")->size() = 3
            inv@0:
            Bag{""1"",""2"",""3""}->any(self.toInteger() > 2).toInteger() = 3
            inv@0:
            aMotorsForward->allInstances()->size() > -1
            endpackage");

            ITokenSource lexer  = new OclLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new OclParser(tokens)
            {
                BuildParseTree = true
            };
            IParseTree tree = parser.oclFile();

            Assert.IsTrue(tree.Accept(interpreter));
        }
Пример #3
0
        public void NumberTest1()
        {
            var stream = CharStreams.fromstring(@"package RobotsTestModel
            context aMotorsForward
            inv@0:
            1->max(2) = 2
            inv@0:
            5->div(2) = 2
            inv@0:
            5->min(2) = 2
            inv@0:
            5->mod(2) = 1
            inv@0:
            5->abs() = 5
            endpackage");

            ITokenSource lexer  = new OclLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new OclParser(tokens)
            {
                BuildParseTree = true
            };
            IParseTree tree = parser.oclFile();

            Assert.IsTrue(tree.Accept(interpreter));
        }
Пример #4
0
        public void FuncTest1()
        {
            var stream = CharStreams.fromstring(@"package ObjectMetamodel
            context FunctionNode
            inv@2:
            self.params@1 <> self.callParams@2
            endpackage");

            ITokenSource lexer  = new OclLexer(stream);
            ITokenStream tokens = new CommonTokenStream(lexer);
            var          parser = new OclParser(tokens)
            {
                BuildParseTree = true
            };
            IParseTree tree = parser.oclFile();

            Assert.IsTrue(tree.Accept(interpreter));
        }