Exemplo n.º 1
0
 def test_eq(self):
     expressions1 = [
         None,
         Expression(Type.int(), 1),
         Expression(Type.decimal(), 1.1),
         Expression(Type.boolean(), False),
         Expression(Type.vector(), [1.1, 2.2, -1.1]),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4]),
         Expression(Type.list_of(Type.int()), []),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0]),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]]),
         Expression(Type.int(), 1, "a"),
         Expression(Type.decimal(), 1.1, "a"),
         Expression(Type.boolean(), False, "a"),
         Expression(Type.vector(), [1.1, 2.2, -1.1], "a"),
         Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()),
                    "a"),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4], "a"),
         Expression(Type.list_of(Type.int()), [], "a"),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0],
                    "a"),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]], "a")
     ]
     expressions2 = [
         None,
         Expression(Type.int(), 1),
         Expression(Type.decimal(), 1.1),
         Expression(Type.boolean(), False),
         Expression(Type.vector(), [1.1, 2.2, -1.1]),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4]),
         Expression(Type.list_of(Type.int()), []),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0]),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]]),
         Expression(Type.int(), 1, "a"),
         Expression(Type.decimal(), 1.1, "a"),
         Expression(Type.boolean(), False, "a"),
         Expression(Type.vector(), [1.1, 2.2, -1.1], "a"),
         Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()),
                    "a"),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4], "a"),
         Expression(Type.list_of(Type.int()), [], "a"),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0],
                    "a"),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]], "a")
     ]
     for i in range(len(expressions1)):
         for j in range(len(expressions2)):
             if i == j:
                 self.assertEqual(expressions1[i], expressions2[j])
             else:
                 self.assertNotEqual(expressions1[i], expressions2[j])
Exemplo n.º 2
0
 def test_to_expression_should_equal_self(self):
     expressions = [
         Expression(Type.int(), 1),
         Expression(Type.decimal(), 1.1),
         Expression(Type.boolean(), False),
         Expression(Type.vector(), [1.1, 2.2, -1.1]),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4]),
         Expression(Type.list_of(Type.int()), []),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0]),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]]),
         Expression(Type.int(), 1, "a"),
         Expression(Type.decimal(), 1.1, "a"),
         Expression(Type.boolean(), False, "a"),
         Expression(Type.vector(), [1.1, 2.2, -1.1], "a"),
         Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()),
                    "a"),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4], "a"),
         Expression(Type.list_of(Type.int()), [], "a"),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0],
                    "a"),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]], "a")
     ]
     for expression in expressions:
         self.assertEqual(expression, expression.to_expression())
 def test_eq(self):
     self.assertEqual(Drone("a", DefaultDroneConfig()),
                      Drone("a", DefaultDroneConfig()))
     self.assertNotEqual(Drone("b", DefaultDroneConfig()),
                         Drone("a", DefaultDroneConfig()))
     self.assertNotEqual(Drone("a", DroneConfig((1, 2, 3), 1, 90, 2)),
                         Drone("a", DefaultDroneConfig()))
     self.assertNotEqual(None, Drone("a", DefaultDroneConfig()))
Exemplo n.º 4
0
 def test_container_not_list_should_give_error(self):
     none_list_exprs = [
         Expression(Type.int(), 1, "a"),
         Expression(Type.decimal(), 1.0, "a"),
         Expression(Type.boolean(), True, "a"),
         Expression(Type.string(), "abc", "a"),
         Expression(Type.vector(), [1.0, 1.0, 1.0], "a"),
         Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()), "a")
     ]
     for none_list_expr in none_list_exprs:
         with self.assertRaises(AssertionError) as context:
             ListElem("a", none_list_expr, 0)
Exemplo n.º 5
0
    def test_str(self):
        self.assertEqual("Expression: { type: int, value: 1, ident: None }",
                         str(Expression(Type.int(), 1)))
        self.assertEqual(
            "Expression: { type: decimal, value: 1.1, ident: None }",
            str(Expression(Type.decimal(), 1.1)))
        self.assertEqual(
            "Expression: { type: boolean, value: False, ident: None }",
            str(Expression(Type.boolean(), False)))
        self.assertEqual(
            "Expression: { type: vector, value: [1.1, 2.2, -1.1], ident: None }",
            str(Expression(Type.vector(), [1.1, 2.2, -1.1])))
        self.assertEqual(
            "Expression: { type: list[int], value: [1, 2, 3, 4], ident: None }",
            str(Expression(Type.list_of(Type.int()), [1, 2, 3, 4])))
        self.assertEqual(
            "Expression: { type: list[int], value: [], ident: None }",
            str(Expression(Type.list_of(Type.int()), [])))
        self.assertEqual(
            "Expression: { type: list[list[vector]], value: [[[1.1, 2.2, -1.1], [1, 2, -1]]], ident: None }",
            str(
                Expression(Type.list_of(Type.list_of(Type.vector())),
                           [[[1.1, 2.2, -1.1], [1, 2, -1]]])))

        self.assertEqual("Expression: { type: int, value: 1, ident: a }",
                         str(Expression(Type.int(), 1, "a")))
        self.assertEqual("Expression: { type: decimal, value: 1.1, ident: a }",
                         str(Expression(Type.decimal(), 1.1, "a")))
        self.assertEqual(
            "Expression: { type: boolean, value: False, ident: a }",
            str(Expression(Type.boolean(), False, "a")))
        self.assertEqual(
            "Expression: { type: vector, value: [1.1, 2.2, -1.1], ident: a }",
            str(Expression(Type.vector(), [1.1, 2.2, -1.1], "a")))
        self.assertEqual(
            "Expression: { type: drone, value: Drone: { name: DRONE, config: DroneConfig: "
            "{ init_position: (0, 0, 0), speed_mps: 1, rotate_speed_dps: 90, takeoff_height_meters: 1 } "
            "}, ident: a }",
            str(
                Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()),
                           "a")))
        self.assertEqual(
            "Expression: { type: list[int], value: [1, 2, 3, 4], ident: a }",
            str(Expression(Type.list_of(Type.int()), [1, 2, 3, 4], "a")))
        self.assertEqual(
            "Expression: { type: list[int], value: [], ident: a }",
            str(Expression(Type.list_of(Type.int()), [], "a")))
        self.assertEqual(
            "Expression: { type: list[list[vector]], value: [[[1.1, 2.2, -1.1], [1, 2, -1]]], ident: a }",
            str(
                Expression(Type.list_of(Type.list_of(Type.vector())),
                           [[[1.1, 2.2, -1.1], [1, 2, -1]]], "a")))
 def test_declare_and_assign_drone_should_change_symbol_table(self):
     actual = SymbolTable()
     generate_commands("""
         main () { drone a <- DRONE1; }
         """,
                       drone_config_map={"DRONE1": DefaultDroneConfig()},
                       symbol_table=actual)
     expected = SymbolTable()
     expected.store(
         "a",
         Expression(Type.drone(),
                    Drone("DRONE1", DefaultDroneConfig()),
                    ident="a"))
     self.assertEqual(expected, actual)
Exemplo n.º 7
0
    def __init__(self, drone_config_map: Dict[str, DroneConfig],
                 symbol_table: SymbolTable, function_table: FunctionTable):
        super().__init__()

        self.drones = {
            name: Drone(name, config)
            for name, config in drone_config_map.items()
        }  # global constant table
        self.symbol_table = [symbol_table]
        self.function_table = function_table

        self.returned = [False]
        self.returned_value = []

        self.commands = [[]]
Exemplo n.º 8
0
 def test_to_expression_should_return_correct_value(self):
     expressions = [
         None,
         Expression(Type.int(), 1, "a"),
         Expression(Type.decimal(), 1.1, "a"),
         Expression(Type.boolean(), False, "a"),
         Expression(Type.vector(), [1.1, 2.2, -1.1], "a"),
         Expression(Type.drone(), Drone("DRONE", DefaultDroneConfig()),
                    "a"),
         Expression(Type.list_of(Type.int()), [1, 2, 3, 4], "a"),
         Expression(Type.list_of(Type.int()), [], "a"),
         Expression(Type.list_of(Type.decimal()), [1.0, 2.0, 3.0, 4.0],
                    "a"),
         Expression(Type.list_of(Type.list_of(Type.vector())),
                    [[[1.1, 2.2, -1.1], [1, 2, -1]]], "a")
     ]
     for expression in expressions:
         self.assertEqual(expression,
                          Identifier("a", expression).to_expression())
 def test_property(self):
     self.assertEqual("a", Drone("a", DefaultDroneConfig()).name)
     self.assertEqual(DefaultDroneConfig(),
                      Drone("a", DefaultDroneConfig()).config)
Exemplo n.º 10
0
 def test_eq(self):
     self.assertEqual(NullDrone(), NullDrone())
     self.assertNotEqual(Drone("a", DefaultDroneConfig()), NullDrone())
     self.assertNotEqual(Drone("null", DefaultDroneConfig()), NullDrone())
     self.assertNotEqual(None, NullDrone())
Exemplo n.º 11
0
 def test_str(self):
     self.assertEqual(
         "Drone: { name: a, config: DroneConfig: { init_position: (0, 0, 0), speed_mps: 1, "
         + "rotate_speed_dps: 90, takeoff_height_meters: 1 } }",
         str(Drone("a", DefaultDroneConfig())))