You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
104 lines
3.2 KiB
104 lines
3.2 KiB
# Copyright 2015-2016 ARM Limited |
|
# |
|
# 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. |
|
# |
|
|
|
import pandas as pd |
|
import trappy |
|
from utils_tests import TestBART |
|
from bart.common.signal import SignalCompare |
|
import numpy as np |
|
|
|
|
|
class TestSignalCompare(TestBART): |
|
|
|
def __init__(self, *args, **kwargs): |
|
super(TestSignalCompare, self).__init__(*args, **kwargs) |
|
|
|
def test_conditional_compare(self): |
|
"""Test conditional_compare""" |
|
|
|
# Refer to the example in |
|
# bart.common.signal.SignalCompare.conditional_compare |
|
# doc-strings which explains the calculation for the |
|
# data set below |
|
A = [0, 0, 0, 3, 3, 0, 0, 0] |
|
B = [0, 0, 2, 2, 2, 2, 1, 1] |
|
|
|
trace = trappy.BareTrace() |
|
df = pd.DataFrame({"A": A, "B": B}) |
|
trace.add_parsed_event("event", df) |
|
|
|
s = SignalCompare(trace, "event:A", "event:B") |
|
expected = (1.5, 2.0 / 7) |
|
self.assertEqual( |
|
s.conditional_compare( |
|
"event:A > event:B", |
|
method="rect"), |
|
expected) |
|
|
|
def test_get_overshoot(self): |
|
"""Test get_overshoot""" |
|
|
|
A = [0, 0, 0, 3, 3, 0, 0, 0] |
|
B = [0, 0, 2, 2, 2, 2, 1, 1] |
|
|
|
trace = trappy.BareTrace() |
|
df = pd.DataFrame({"A": A, "B": B}) |
|
trace.add_parsed_event("event", df) |
|
|
|
s = SignalCompare(trace, "event:A", "event:B") |
|
expected = (1.5, 2.0 / 7) |
|
self.assertEqual( |
|
s.get_overshoot(method="rect"), |
|
expected) |
|
|
|
A = [0, 0, 0, 1, 1, 0, 0, 0] |
|
B = [0, 0, 2, 2, 2, 2, 1, 1] |
|
|
|
df = pd.DataFrame({"A": A, "B": B}) |
|
trace.event.data_frame = df |
|
s = SignalCompare(trace, "event:A", "event:B") |
|
|
|
expected = (float("nan"), 0.0) |
|
result = s.get_overshoot(method="rect") |
|
self.assertTrue(np.isnan(result[0])) |
|
self.assertEqual(result[1], expected[1]) |
|
|
|
def test_get_undershoot(self): |
|
"""Test get_undershoot""" |
|
|
|
A = [0, 0, 0, 1, 1, 1, 1, 1] |
|
B = [2, 2, 2, 2, 2, 2, 2, 2] |
|
|
|
trace = trappy.BareTrace() |
|
df = pd.DataFrame({"A": A, "B": B}) |
|
trace.add_parsed_event("event", df) |
|
|
|
s = SignalCompare(trace, "event:A", "event:B") |
|
expected = (4.0 / 14.0, 1.0) |
|
self.assertEqual( |
|
s.get_undershoot(method="rect"), |
|
expected) |
|
|
|
A = [3, 3, 3, 3, 3, 3, 3, 3] |
|
B = [2, 2, 2, 2, 2, 2, 1, 1] |
|
|
|
df = pd.DataFrame({"A": A, "B": B}) |
|
trace.event.data_frame = df |
|
s = SignalCompare(trace, "event:A", "event:B") |
|
|
|
expected = (float("nan"), 0.0) |
|
result = s.get_undershoot(method="rect") |
|
self.assertTrue(np.isnan(result[0])) |
|
self.assertEqual(result[1], expected[1])
|
|
|