Ejemplo n.º 1
0
    def test_once_0_1(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = once[0:1](req)'
        spec.parse()

        out = spec.update(0, [['req', 5]])
        self.assertEqual(5, out, 'Once [0,1] reset assertion')

        out = spec.update(1, [['req', 4.8]])
        self.assertEqual(5, out, 'Once [0,1] reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 4.3]])
        self.assertEqual(4.3, out, 'Once [0,1] reset assertion')
Ejemplo n.º 2
0
    def test_historically_0_1(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = historically[0:1](req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(1.1, out, 'Historically [0,1] reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(1.1, out, 'Historically [0,1] reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 4.3]])
        self.assertEqual(4.3, out, 'Historically [0,1] reset assertion')
Ejemplo n.º 3
0
    def test_abs(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = abs(req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(1.1, out, 'Abs reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(2, out, 'Abs reset assertion')

        spec.reset()

        out = spec.update(0, [['req', -3.3]])
        self.assertEqual(3.3, out, 'Abs reset assertion')
Ejemplo n.º 4
0
    def test_since(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req since gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(2.2, out, 'Since reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(2, out, 'Since reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 1.6]])
        self.assertEqual(1.6, out, 'Since reset assertion')
Ejemplo n.º 5
0
    def test_predicate_greater(self):
        spec = STLDiscreteTimeSpecification(0)
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req >= gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(-2.2 + 1.1, out, 'Predicate > reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(1 + 2, out, 'Predicate > reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(-4.3 + 3.3, out, 'Predicate > reset assertion')
Ejemplo n.º 6
0
    def test_prev(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = prev(req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(float("inf"), out, 'Fall reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(1.1, out, 'Fall reset assertion')

        spec.reset()

        out = spec.update(0, [['req', -3]])
        self.assertEqual(float("inf"), out, 'Rise reset assertion')
Ejemplo n.º 7
0
    def test_implication(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req implies gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(2.2, out, 'Implies reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(-1, out, 'Implies reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(4.3, out, 'Implies reset assertion')
Ejemplo n.º 8
0
    def test_subtraction(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req - gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(1.1 - 2.2, out, 'Subtraction reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(2 + 1, out, 'Subtraction reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(3.3 - 4.3, out, 'Subtraction reset assertion')
Ejemplo n.º 9
0
    def test_predicate_neq(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req !== gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(2.2 - 1.1, out, 'Predicate == reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(1 + 2, out, 'Predicate == reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(4.3 - 3.3, out, 'Predicate == reset assertion')
Ejemplo n.º 10
0
    def test_conjunction(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req and gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(1.1, out, 'And reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(-1, out, 'And reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(3.3, out, 'And reset assertion')
Ejemplo n.º 11
0
    def test_pow(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = pow(2,req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(math.pow(2, 1.1), out, 'Abs reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(math.pow(2, 2), out, 'Abs reset assertion')

        spec.reset()

        out = spec.update(0, [['req', -3.3]])
        self.assertEqual(math.pow(2, -3.3), out, 'Abs reset assertion')
Ejemplo n.º 12
0
    def test_eventually(self):
        spec = STLDiscreteTimeSpecification(0)
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = eventually(req)'
        spec.parse()

        out = spec.update(0, [['req', 5]])
        self.assertEqual(5, out, 'Eventually reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(5, out, 'Eventually reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 4.3]])
        self.assertEqual(4.3, out, 'Eventually reset assertion')
Ejemplo n.º 13
0
    def test_fall(self):
        spec = STLDiscreteTimeSpecification(0)
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = fall(req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(-1.1, out, 'Fall reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(-2, out, 'Fall reset assertion')

        spec.reset()

        out = spec.update(0, [['req', -3]])
        self.assertEqual(3, out, 'Rise reset assertion')
Ejemplo n.º 14
0
    def test_precedes_0_1(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req until[0:1] gnt'
        spec.parse()
        spec.pastify()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(2.2, out, 'Precedes [0:1] reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(2.2, out, 'Precedes [0:1] reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 1.6]])
        self.assertEqual(1.6, out, 'Precedes [0:1] reset assertion')
Ejemplo n.º 15
0
    def test_xor(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req xor gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(-(1.1 - 2.2), out, 'Xor reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(1 + 2, out, 'Xor reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(4.3 - 3.3, out, 'Xor reset assertion')
Ejemplo n.º 16
0
    def test_constant(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('out', 'float')
        spec.spec = 'out = 5'
        spec.parse()

        out = spec.update(0, [])
        self.assertEqual(5, out, 'Constant reset assertion')

        out = spec.update(0, [])
        self.assertEqual(5, out, 'Constant reset assertion')

        spec.reset()

        out = spec.update(0, [])
        self.assertEqual(5, out, 'Constant reset assertion')
Ejemplo n.º 17
0
    def test_rise(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = rise(req)'
        spec.parse()

        out = spec.update(0, [['req', 1.1]])
        self.assertEqual(1.1, out, 'Rise reset assertion')

        out = spec.update(1, [['req', 2]])
        self.assertEqual(-1.1, out, 'Rise reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 4.3]])
        self.assertEqual(4.3, out, 'Rise reset assertion')
Ejemplo n.º 18
0
    def test_multiplication(self):
        spec = STLDiscreteTimeSpecification()
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req * gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(1.1 * 2.2, out, 'Multiplication reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(2 * -1, out, 'Multiplication reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(3.3 * 4.3, out, 'Multiplication reset assertion')
Ejemplo n.º 19
0
    def test_division(self):
        spec = STLDiscreteTimeSpecification(0)
        spec.declare_var('req', 'float')
        spec.declare_var('gnt', 'float')
        spec.declare_var('out', 'float')
        spec.spec = 'out = req / gnt'
        spec.parse()

        out = spec.update(0, [['req', 1.1], ['gnt', 2.2]])
        self.assertEqual(1.1 / 2.2, out, 'Division reset assertion')

        out = spec.update(1, [['req', 2], ['gnt', -1]])
        self.assertEqual(2 / -1, out, 'Division reset assertion')

        spec.reset()

        out = spec.update(0, [['req', 3.3], ['gnt', 4.3]])
        self.assertEqual(3.3 / 4.3, out, 'Division reset assertion')