예제 #1
0
    def checkParamAutoma(self, power, sensors, actuators, maxLoad):
        """Return True if conformity of the parameters is verified"""

        if not maxLoad or not isinstance(
                maxLoad, int
        ) or maxLoad < 0 or not power or not isinstance(power, int) or not (
                power <= 100 and power >= 0) or not sensors or not isinstance(
                    sensors[0], Sensor) or not Sensor.checkSensorList(
                        sensors[0],
                        sensors) or not actuators or not isinstance(
                            actuators[0],
                            Actuator) or not Actuator.checkActuatorList(
                                actuators[0], actuators):
            return False
        return True
예제 #2
0
def testClassSensor():

    result = True
    sensor = Sensor(position=(0, 0, 0), range_max=(10, 10, 10), typ="thermal")

    if sensor._position != (
            0, 0, 0
    ) or not sensor._sensibility or not isinstance(
            sensor._sensibility, Sensibility
    ) or sensor._power != 100 or sensor._resilience != 100 or not sensor._name or not sensor._state or not sensor._type or sensor._type != 'thermal':
        print('Sensor Failed!! ', sensor._sensibility, sensor._power,
              sensor._resilience)
        result = False

    sensor = Sensor(typ="radio",
                    position=(0, 0, 0),
                    range_max=(100, 100, 100),
                    accuracy=20,
                    power=20,
                    resilience=20,
                    name='tullio')

    if sensor._position != (
            0, 0, 0
    ) or not sensor._sensibility or sensor._power != 20 or sensor._resilience != 20 or sensor._name != 'tullio' or not sensor._state or not sensor._type or sensor._type != 'radio':
        print('Sensor Failed!! ', sensor._sensibility, sensor._power,
              sensor._resilience, sensor._name, sensor._state)
        result = False

    try:
        sensor = Sensor(position=(0, 0, 0),
                        sensibility=-1,
                        power=-1,
                        resilience=-1,
                        typ="radio")

    except Exception:
        pass

    else:
        print('Sensor Failed!!  Not launch Exception', sensor._sensibility,
              sensor._power, sensor._resilience, sensor._name, sensor._state,
              sensor._type)
        result = False

    try:
        sensor = Sensor(position=(0, 0, 0),
                        sensibility=10,
                        power=1,
                        resilience=101,
                        typ="radio")

    except Exception:
        pass

    else:
        print('Sensor Failed!!  Not launch Exception', sensor._sensibility,
              sensor._power, sensor._resilience, sensor._name, sensor._state,
              sensor._type)
        result = False

    # test Sensor.evalutateDamage( energy, power )
    sensor = Sensor(typ="radio",
                    position=(0, 0, 0),
                    range_max=(50, 50, 50),
                    power=50,
                    resilience=50,
                    accuracy=7)
    sensor.evalutateSelfDamage(power=60)

    if sensor._state._health != 90:
        print('Sensor.evalutatSelfDamage(energy = 100, power = 60) Failed!! ',
              sensor._sensibility, sensor._power, sensor._resilience,
              sensor._name, sensor._state, sensor._state._health)
        result = False

    # test checkSensorClass()

    if not Sensor.checkSensorClass(sensor, sensor):
        print('Sensor.checkSensorClass(sensor) Failed!! ', sensor._state,
              sensor._state._health)
        result = False

    # test checkSensorList()

    sensors = [
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100)),
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100)),
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100)),
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100))
    ]

    if not Sensor.checkSensorList(sensor, sensors):
        print('Sensor.checkSensorList(sensors) Failed!! ', sensors[0]._id,
              sensors[0]._state, sensors[0]._state._health)
        result = False

    sensors = [
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100)),
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100)),
        list(),
        Sensor(typ="radio", position=(0, 0, 0), range_max=(100, 100, 100))
    ]

    if Sensor.checkSensorList(sensor, sensors):
        print('Sensor.checkSensorList(sensors) Failed!! ', sensors[0]._id,
              sensors[0]._state, sensors[0]._state._health)
        result = False

    # test sensor.perception()-test with object emissivity > sensor emissivity_perception: sensor should be percept object
    num_objects = 100
    num_objects_for_linear = int((num_objects)**(1 / 3))
    object_dimension = (3, 2, 1)
    separation_from_objects = 7
    incr = (object_dimension[0] + separation_from_objects,
            object_dimension[2] + separation_from_objects,
            object_dimension[2] + separation_from_objects)
    dim_linear = (num_objects_for_linear * incr[0],
                  num_objects_for_linear * incr[2],
                  num_objects_for_linear * incr[2])
    bound = (int(dim_linear[0] / 2), int(dim_linear[1] / 2),
             int(dim_linear[2] / 2))
    logger.logger.info(
        "num_objects:{0},  num_objects_for_linear:{1},  object_dimension:{2},  separation_from_objects:{3},  incr:{4},  dim_linear:{5},  bound:{6}"
        .format(num_objects, num_objects_for_linear, object_dimension,
                separation_from_objects, incr, dim_linear, bound))

    pm = Position_manager(name='position manager',
                          limits=[[-bound[0], -bound[1], -bound[2]],
                                  [bound[0], bound[1], bound[2]]])

    for z in range(-bound[2], bound[2], incr[2]):
        for y in range(-bound[1], bound[1], incr[1]):
            for x in range(-bound[0], bound[0], incr[0]):
                pm.insertObject(
                    position=(x, y, z),
                    obj=Object(name='New_' + str(
                        int(((bound[0] + x) % dim_linear[0]) / incr[0] +
                            num_objects_for_linear *
                            ((bound[1] + y) % dim_linear[1]) / incr[1] +
                            num_objects_for_linear * num_objects_for_linear *
                            ((bound[2] + z) % dim_linear[2]) / incr[2])),
                               dimension=(object_dimension[0],
                                          object_dimension[1],
                                          object_dimension[2]),
                               emissivity={
                                   "radio": 5,
                                   "thermal": 0,
                                   "optical": 0,
                                   "nuclear": 0,
                                   "electric": 0,
                                   "acoustics": 0,
                                   "chemist": 0
                               }))

    sensor.perception(pm, sensor._position)

    # test sensor.perception()-test with object emissivity < sensor emissivity_perception: sensor not should be percept object
    num_objects = 100
    num_objects_for_linear = int((num_objects)**(1 / 3))
    object_dimension = (3, 2, 1)
    separation_from_objects = 7
    incr = (object_dimension[0] + separation_from_objects,
            object_dimension[2] + separation_from_objects,
            object_dimension[2] + separation_from_objects)
    dim_linear = (num_objects_for_linear * incr[0],
                  num_objects_for_linear * incr[2],
                  num_objects_for_linear * incr[2])
    bound = (int(dim_linear[0] / 2), int(dim_linear[1] / 2),
             int(dim_linear[2] / 2))
    logger.logger.info(
        "num_objects:{0},  num_objects_for_linear:{1},  object_dimension:{2},  separation_from_objects:{3},  incr:{4},  dim_linear:{5},  bound:{6}"
        .format(num_objects, num_objects_for_linear, object_dimension,
                separation_from_objects, incr, dim_linear, bound))

    pm = Position_manager(name='position manager',
                          limits=[[-bound[0], -bound[1], -bound[2]],
                                  [bound[0], bound[1], bound[2]]])

    for z in range(-bound[2], bound[2], incr[2]):
        for y in range(-bound[1], bound[1], incr[1]):
            for x in range(-bound[0], bound[0], incr[0]):
                pm.insertObject(
                    position=(x, y, z),
                    obj=Object(name='New_' + str(
                        int(((bound[0] + x) % dim_linear[0]) / incr[0] +
                            num_objects_for_linear *
                            ((bound[1] + y) % dim_linear[1]) / incr[1] +
                            num_objects_for_linear * num_objects_for_linear *
                            ((bound[2] + z) % dim_linear[2]) / incr[2])),
                               dimension=(object_dimension[0],
                                          object_dimension[1],
                                          object_dimension[2]),
                               emissivity={
                                   "radio": 0,
                                   "thermal": 0,
                                   "optical": 0,
                                   "nuclear": 0,
                                   "electric": 0,
                                   "acoustics": 0,
                                   "chemist": 0
                               }))

    sensor.perception(pm, sensor._position)

    return result