9a26a3f4c3
* H307 like imports should be grouped together Change-Id: I9fa443c9b7380e4c589793caf35c80ba6afbe9f0
113 lines
4.3 KiB
Python
113 lines
4.3 KiB
Python
# Copyright (c) 2014 Mirantis, Inc.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
|
|
from testtools import matchers
|
|
|
|
from murano.dsl import exceptions
|
|
from murano.tests.unit.dsl.foundation import object_model as om
|
|
from murano.tests.unit.dsl.foundation import test_case
|
|
|
|
|
|
class TestMacros(test_case.DslTestCase):
|
|
def setUp(self):
|
|
super(TestMacros, self).setUp()
|
|
self._runner = self.new_runner(om.Object('MacroExamples'))
|
|
|
|
def test_if(self):
|
|
self.assertEqual('gt', self._runner.testIf(6))
|
|
self.assertEqual('def', self._runner.testIf(4))
|
|
self.assertEqual('gt', self._runner.testIfElse(6))
|
|
self.assertEqual('lt', self._runner.testIfElse(4))
|
|
|
|
def test_while(self):
|
|
self.assertEqual(0, self._runner.testWhile(3))
|
|
self.assertEqual([3, 2, 1], self.traces)
|
|
|
|
def test_for(self):
|
|
self.assertIsNone(self._runner.testFor())
|
|
self.assertEqual(['x', 'y', 'z', 2, 5, 10], self.traces)
|
|
|
|
def test_repeat(self):
|
|
self._runner.testRepeat(4)
|
|
self.assertEqual(['run', 'run', 'run', 'run'], self.traces)
|
|
|
|
def test_break(self):
|
|
self.assertRaises(exceptions.DslInvalidOperationError,
|
|
self._runner.testBreak)
|
|
self.assertEqual([0, 1, 2, 'breaking', 'method_break'], self.traces)
|
|
|
|
def test_continue(self):
|
|
self.assertRaises(exceptions.DslInvalidOperationError,
|
|
self._runner.testContinue)
|
|
self.assertEqual([0, 1, 2, 5, 6, 'method_continue'], self.traces)
|
|
|
|
def test_match(self):
|
|
self.assertEqual('y', self._runner.testMatch(1))
|
|
self.assertEqual('x', self._runner.testMatch(2))
|
|
self.assertEqual('z', self._runner.testMatch(3))
|
|
self.assertIsNone(self._runner.testMatch(0))
|
|
self.assertEqual('y', self._runner.testMatchDefault(1))
|
|
self.assertEqual('x', self._runner.testMatchDefault(2))
|
|
self.assertEqual('z', self._runner.testMatchDefault(3))
|
|
self.assertEqual('def', self._runner.testMatchDefault(0))
|
|
|
|
def test_switch(self):
|
|
self.assertIsNone(self._runner.testSwitch(20))
|
|
self.assertEqual(['gt'], self.traces)
|
|
del self.traces
|
|
self.assertIsNone(self._runner.testSwitch(200))
|
|
self.assertThat(
|
|
self.traces,
|
|
matchers.MatchesSetwise(
|
|
matchers.Equals('gt100'), matchers.Equals('gt')))
|
|
del self.traces
|
|
self.assertIsNone(self._runner.testSwitch(2))
|
|
self.assertEqual(['lt'], self.traces)
|
|
|
|
def test_switch_with_default(self):
|
|
self.assertIsNone(self._runner.testSwitchDefault(20))
|
|
self.assertEqual(['gt'], self.traces)
|
|
del self.traces
|
|
self.assertIsNone(self._runner.testSwitchDefault(200))
|
|
self.assertThat(
|
|
self.traces,
|
|
matchers.MatchesSetwise(
|
|
matchers.Equals('gt100'), matchers.Equals('gt')))
|
|
del self.traces
|
|
self.assertIsNone(self._runner.testSwitchDefault(-20))
|
|
self.assertEqual(['lt'], self.traces)
|
|
del self.traces
|
|
self.assertIsNone(self._runner.testSwitchDefault(5))
|
|
self.assertEqual(['def'], self.traces)
|
|
|
|
def test_code_block(self):
|
|
self.assertEqual(123, self._runner.testCodeBlock())
|
|
self.assertEqual(['a', 123], self.traces)
|
|
|
|
def test_parallel(self):
|
|
self.assertIsNone(self._runner.testParallel())
|
|
self.assertEqual(['enter', 'enter', 'exit', 'exit'], self.traces)
|
|
|
|
def test_parallel_with_limit(self):
|
|
self.assertIsNone(self._runner.testParallelWithLimit())
|
|
self.assertEqual(['enter', 'enter',
|
|
'exit', 'exit',
|
|
'enter', 'exit'], self.traces)
|
|
|
|
def test_scope_within_macro(self):
|
|
self.assertEqual(
|
|
87654321,
|
|
self._runner.testScopeWithinMacro())
|