コード例 #1
0
def test_should_add_relationship_to_relationships():
    Vx = Variable()
    Vy = Variable()
    Rxy = Relationship(Vx, Vy)
    Am = AssociationMatrix()
    Am.add_relationship(Rxy)
    assert Am.relationships == {frozenset((Vx.uuid, Vy.uuid)): Rxy}
コード例 #2
0
def test_should_push_to_subscribers():
    rel = Relationship(Variable(), Variable())
    sub = Mock()
    sub.on_data = MagicMock()
    rel.subscribe(sub)
    rel._push_to_subscribers(10)
    sub.on_data.assert_called_with(10)
コード例 #3
0
def test_should_create_db():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")

    var1 = Variable()
    var2 = Variable()
    SpearframeRelationship(var1, var2)

    assert os.path.exists("spearframe.db")
コード例 #4
0
def test_should_return_whole_dict():
    Rxy = SpearframeRelationship(Variable(), Variable())
    Rwz = SpearframeRelationship(Variable(), Variable())
    Am = AssociationMatrix()
    Am.add_relationship(Rxy)
    Am.add_relationship(Rwz)
    key1 = frozenset((Rxy.sensor_x.get_uuid(), Rxy.sensor_y.get_uuid()))
    key2 = frozenset((Rwz.sensor_x.get_uuid(), Rwz.sensor_y.get_uuid()))
    a = Am.get_value_matrix()
    assert a == {key1: 0.0, key2: 0.0}
コード例 #5
0
def test_should_remove_specified_relationship():
    Vx = Variable()
    Vy = Variable()
    Rxy = Relationship(Vx, Vy)
    Rwz = Relationship(Variable(), Variable())
    Am = AssociationMatrix()
    Am.add_relationship(Rxy)
    Am.add_relationship(Rwz)
    Am.remove_relationship(Rwz)
    assert Am.relationships == {frozenset((Vx.uuid, Vy.uuid)): Rxy}
コード例 #6
0
def test_should_delete_db():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    if os.path.exists("spearframe.db"):
        rel.clean_up()

    assert not os.path.exists("spearframe.db")
コード例 #7
0
def test_should_return_float():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    for degree in range(50):
        var1.on_data(math.sin(math.radians(degree * 10)), degree, degree + 1)
        var2.on_data(math.cos(math.radians(degree * 10)), degree, degree + 1)

    assert isinstance(rel.get_correlation_coefficient(), float)
コード例 #8
0
def test_should_show_perfect_association():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    for degree in range(180):
        var1.on_data(math.sin(math.radians(degree * 10)), degree, degree + 1)
        var2.on_data(math.sin(math.radians(degree * 10)), degree, degree + 1)

    assert rel.get_correlation_coefficient() == 1
コード例 #9
0
def test_should_not_return_nan():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    for degree in range(180):
        var1.on_data(math.sin(math.radians(degree * 10)), degree, degree + 1)
        var2.on_data(math.sin(math.radians(degree * 100)), degree, degree + 1)

    assert not math.isnan(rel.get_correlation_coefficient())
コード例 #10
0
def test_should_return_requested_relationship():
    Rxy = Relationship(Variable(), Variable())
    Rwz = Relationship(Variable(), Variable())
    Am = AssociationMatrix()
    Am.add_relationship(Rxy)
    Am.add_relationship(Rwz)

    a = Am.get_relationship_from_sensors(Rxy.sensor_x, Rxy.sensor_y)
    assert a == Rxy

    b = Am.get_relationship_from_sensors(Rwz.sensor_x, Rwz.sensor_y)
    assert b == Rwz
コード例 #11
0
def test_should_return_float_from_frame_db():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    for degree in range(180):
        var1.on_data(math.sin(math.radians(degree * 10)), degree, degree + 1)
        var2.on_data(math.cos(math.radians(degree * 10)), degree, degree + 1)

    assert isinstance(rel.get_value_between_times(0, 63), float)
コード例 #12
0
def test_variable_can_add_and_remove_subscribers():
    var = Variable()
    rel = Mock()
    rel.get_uuid = MagicMock(return_value="abcd")
    var.add_subscriber(rel)
    assert var.subscribers["abcd"] is rel
    var.remove_subscriber("abcd")
    assert not var.subscribers
コード例 #13
0
def test_should_cause_frame_skip():
    if os.path.exists("spearframe.db"):
        os.remove("spearframe.db")
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)

    for degree in range(20):
        if degree > 15 and rel.current_iteration[rel.sensor_x.get_uuid()]:
            var1.on_data(None, degree, degree + 1)
            var2.on_data(math.cos(math.radians(degree * 10)), degree,
                         degree + 1)
            break
        else:
            var1.on_data(math.sin(math.radians(degree * 10)), degree,
                         degree + 1)
            var2.on_data(math.cos(math.radians(degree * 10)), degree,
                         degree + 1)

    assert not rel.current_iteration[rel.sensor_x.get_uuid()]
コード例 #14
0
    def add_sensor(self, sensor):
        """
        This function adds a new sensor to the snapper module and generates
        a corresponding variable object with mappings.

        :return:
        """
        self.sensors.append(sensor)
        self.snapper.add_sensor(sensor)
        newVariable = Variable()

        for var in self.variables:
            relationship = SpearframeRelationship(newVariable, var)
            self.matrix.add_relationship(relationship)

        self.variables.append(newVariable)
        self.route_map[sensor.uuid] = newVariable
        self.reverse_route_map[str(newVariable.uuid)] = sensor.uuid
コード例 #15
0
def test_should_have_last_pushed_value_as_none_on_initialization():
    relationship = Relationship(Variable(), Variable())
    assert relationship.get_last_pushed_value() is None
コード例 #16
0
def test_should_allow_objects_to_subscribe():
    rel = Relationship(Variable(), Variable())
    assert len(rel.subscribers) == 0
    rel.subscribe(2)
    assert len(rel.subscribers) == 1 and rel.subscribers[0] == 2
コード例 #17
0
def test_should_update_last_pushed_value_on_push():
    relationship = Relationship(Variable(), Variable())
    relationship._push_to_subscribers(1)
    assert relationship.get_last_pushed_value() is 1
コード例 #18
0
def test_should_automatically_subscribe_to_variables():
    var1 = Variable()
    var2 = Variable()
    relationship = Relationship(var1, var2)
    assert var1.subscribers[relationship.get_uuid()] is not None
    assert var2.subscribers[relationship.get_uuid()] is not None
コード例 #19
0
def test_should_have_personal_uuid():
    relationship = Relationship(Variable(), Variable())
    assert relationship.get_uuid() is not None
コード例 #20
0
def test_should_should_throw_error_trying_clean_up():
    with pytest.raises(NotImplementedError) as excinfo:
        Relationship(Variable(), Variable()).clean_up()
    assert "Underlying algorithm should implement this" in str(excinfo.value)
コード例 #21
0
def test_should_should_throw_error_trying_to_get_value_between_times():
    with pytest.raises(NotImplementedError) as excinfo:
        Relationship(Variable(), Variable()).get_value_between_times(1, 2)
    assert "Underlying algorithm should implement this" in str(excinfo.value)
コード例 #22
0
def test_should_should_throw_error_trying_get_new_value_from_variables():
    with pytest.raises(NotImplementedError) as excinfo:
        Relationship(Variable(), Variable()).on_new_value(1, 1, 0, 1)
    assert "Underlying algorithm should implement this" in str(excinfo.value)
コード例 #23
0
def test_should_should_throw_error_trying_to_grab_coefficient():
    with pytest.raises(NotImplementedError) as excinfo:
        Relationship(Variable(), Variable()).get_correlation_coefficient()
    assert "Underlying algorithm should implement this" in str(excinfo.value)
コード例 #24
0
def test_should_raise_error_when_unknown_publisher_emits():
    var1 = Variable()
    var2 = Variable()
    rel = SpearframeRelationship(var1, var2)
    with pytest.raises(ValueError):
        rel.on_new_value(1, 4, 0, 1)
コード例 #25
0
def rel_75():
    rel = Relationship(Variable(), Variable())
    rel.get_correlation_coefficient = MagicMock(return_value=0.75)
    return rel