def test_csv_roundtrip(self):
        aesthetic_settings = AestheticSettings()
        paths = AestheticSettings.get_csv_data_paths()
        for i, path in enumerate(paths):
            aesthetic, setting = path
            aesthetic_settings.__dict__[aesthetic].__dict__[setting] = i
        aesthetic_settings.mission_aesthetic.hazard_spread_probability = {
            Tiles.water: 1,
            Tiles.fire: 2
        }
        aesthetic_settings.mission_graph_aesthetic.branch_probability = [
            0, 1, 2, 3
        ]
        csv_data = aesthetic_settings.to_csv_data()
        expected_csv_data = [
            "0", "1", "2", "3", "4", "5", "6", "[1, 2]", "8", "9", "10",
            "[0, 1, 2, 3]", "12", "13", "14", "15", "16", "17", "18", "19"
        ]

        self.assertEqual(expected_csv_data, csv_data)

        aesthetic_settings2 = AestheticSettings()
        aesthetic_settings2.from_csv_data(csv_data)

        expected_values = [
            0.0, 1.0, 2, 3, 4, 5.0, 6.0, {
                Tiles.water: 1.0,
                Tiles.fire: 2.0
            }, 8, 9, 10.0, [0.0, 1.0, 2.0, 3.0], 12.0, 13.0, 14.0, 15, 16, 17,
            18, 19.0
        ]
        for path, expected_value in zip(paths, expected_values):
            aesthetic, setting = path
            value = aesthetic_settings2.__dict__[aesthetic].__dict__[setting]
            self.assertEqual(value, expected_value)
Exemple #2
0
 def level_aesthetic(self, i):
     data = self.file_data.splitlines()[i].split(
         Ratings.CSV_SEPARATOR)[Ratings.
                                SETTINGS_INDEX:Ratings.SETTINGS_INDEX +
                                len(AestheticSettings.get_csv_data_paths())]
     aesthetic = AestheticSettings()
     aesthetic.from_csv_data(data)
     return aesthetic
 def test_get_csv_data_paths(self):
     l = "level_space_aesthetic"
     m = "mission_aesthetic"
     g = "mission_graph_aesthetic"
     t = "tweaker_aesthetic"
     data_paths = AestheticSettings.get_csv_data_paths()
     expected_data_paths = [(l, "noise_empty_percentage"),
                            (l, "noise_percentage"), (l, "rectangle_count"),
                            (l, "rectangle_max"), (l, "rectangle_min"),
                            (l, "x_mirror_probability"),
                            (l, "y_mirror_probability"),
                            (m, "hazard_spread_probability"),
                            (m, "max_seconds_per_move"),
                            (m, "min_seconds_per_move"),
                            (m, "single_lock_is_hazard_probability"),
                            (g, "branch_probability"),
                            (g, "collectable_in_room_probability"),
                            (g, "insert_room_probability"),
                            (g, "key_is_sokoban_probability"),
                            (g, "max_depth"),
                            (g, "max_locks_per_multi_lock"),
                            (g, "max_multi_lock_count"), (g, "min_depth"),
                            (t, "should_fill_unused_space")]
     self.assertEqual(expected_data_paths, data_paths)
Exemple #4
0
 def add_level(self, id, seed):
     settings = ["0"] * len(AestheticSettings.get_csv_data_paths())
     line = [str(id), str(int(seed))] + settings + ["0", "0"]
     self.file_data += Ratings.CSV_SEPARATOR.join(line) + "\n"