Exemplo n.º 1
0
    def testFilteredIn(self):
        a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
            feature_layer_data=spatial_pb2.ObservationFeatureLayer(
                renders=spatial_pb2.FeatureLayers(
                    height_map=common_pb2.ImageData(
                        bits_per_pixel=32,
                        size=common_pb2.Size2DI(x=4, y=4),
                        data=np.array([[0, 0, 0, 0], [1, 0, 1, 0],
                                       [0, 0, 0, 1], [1, 1, 1, 1]],
                                      dtype=np.int32).tobytes())))))
        b = sc_pb.ResponseObservation(observation=sc_pb.Observation(
            feature_layer_data=spatial_pb2.ObservationFeatureLayer(
                renders=spatial_pb2.FeatureLayers(
                    height_map=common_pb2.ImageData(
                        bits_per_pixel=32,
                        size=common_pb2.Size2DI(x=4, y=4),
                        data=np.array([[0, 0, 0, 0], [0, 1, 1, 0],
                                       [0, 0, 0, 1], [1, 1, 1, 0]],
                                      dtype=np.int32).tobytes())))))

        result = image_differencer.image_differencer(path=proto_diff.ProtoPath(
            ("observation", "feature_layer_data", "renders", "height_map",
             "data")),
                                                     proto_a=a,
                                                     proto_b=b)

        self.assertEqual(
            result,
            "3 element(s) changed - [1][0]: 1 -> 0; [1][1]: 0 -> 1; [3][3]: 1 -> 0"
        )
Exemplo n.º 2
0
 def testRemovedField(self):
     a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         game_loop=1))
     b = sc_pb.ResponseObservation(observation=sc_pb.Observation())
     diff = proto_diff.compute_diff(a, b)
     self.assertIsNotNone(diff)
     self.assertLen(diff.removed, 1, diff)
     self.assertEqual(str(diff.removed[0]), "observation.game_loop")
     self.assertEqual(diff.removed, diff.all_diffs())
     self.assertEqual(diff.report(), "Removed observation.game_loop.")
Exemplo n.º 3
0
    def testGetField(self):
        proto = sc_pb.ResponseObservation(observation=sc_pb.Observation(
            game_loop=1, alerts=[sc_pb.AlertError]))

        game_loop = proto_diff.ProtoPath(("observation", "game_loop"))
        alert = proto_diff.ProtoPath(("observation", "alerts", 0))
        self.assertEqual(game_loop.get_field(proto), 1)
        self.assertEqual(alert.get_field(proto), sc_pb.AlertError)
        self.assertEqual(
            proto_diff.ProtoPath(game_loop.path[:-1]).get_field(proto),
            sc_pb.Observation(game_loop=1, alerts=[sc_pb.AlertError]))
Exemplo n.º 4
0
 def testTruncation(self):
     a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         game_loop=1, alerts=[sc_pb.AlertError, sc_pb.LarvaHatched]))
     b = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         game_loop=2, alerts=[sc_pb.AlertError, sc_pb.MergeComplete]))
     diff = proto_diff.compute_diff(a, b)
     self.assertIsNotNone(diff)
     self.assertEqual(
         diff.report([_alert_formatter], truncate_to=9),
         "Changed observation.alerts[1]: LarvaH....\n"
         "Changed observation.game_loop: 1 -> 2.")
     self.assertEqual(
         diff.report([_alert_formatter], truncate_to=-1),
         "Changed observation.alerts[1]: ....\n"
         "Changed observation.game_loop: ... -> ....")
Exemplo n.º 5
0
 def testAddedFields(self):
     a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         alerts=[sc_pb.AlertError]))
     b = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         alerts=[sc_pb.AlertError, sc_pb.MergeComplete]),
                                   player_result=[sc_pb.PlayerResult()])
     diff = proto_diff.compute_diff(a, b)
     self.assertIsNotNone(diff)
     self.assertLen(diff.added, 2, diff)
     self.assertEqual(str(diff.added[0]), "observation.alerts[1]")
     self.assertEqual(str(diff.added[1]), "player_result")
     self.assertEqual(diff.added, diff.all_diffs())
     self.assertEqual(
         diff.report(), "Added observation.alerts[1].\n"
         "Added player_result.")
Exemplo n.º 6
0
 def setUp(self):
     super(AvailableActionsTest, self).setUp()
     self.obs = text_format.Parse(observation_text_proto,
                                  sc_pb.Observation())
     self.features = features.Features(feature_screen_width=84,
                                       feature_screen_height=80,
                                       feature_minimap_width=64,
                                       feature_minimap_height=67)
Exemplo n.º 7
0
 def testRemovedFields(self):
     a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         game_loop=1,
         score=score_pb2.Score(),
         alerts=[sc_pb.AlertError, sc_pb.MergeComplete]))
     b = sc_pb.ResponseObservation(observation=sc_pb.Observation(
         alerts=[sc_pb.AlertError]))
     diff = proto_diff.compute_diff(a, b)
     self.assertIsNotNone(diff)
     self.assertLen(diff.removed, 3, diff)
     self.assertEqual(str(diff.removed[0]), "observation.alerts[1]")
     self.assertEqual(str(diff.removed[1]), "observation.game_loop")
     self.assertEqual(str(diff.removed[2]), "observation.score")
     self.assertEqual(diff.removed, diff.all_diffs())
     self.assertEqual(
         diff.report(), "Removed observation.alerts[1].\n"
         "Removed observation.game_loop.\n"
         "Removed observation.score.")
Exemplo n.º 8
0
    def testChangedFields(self):
        a = sc_pb.ResponseObservation(observation=sc_pb.Observation(
            game_loop=1, alerts=[sc_pb.AlertError, sc_pb.LarvaHatched]))
        b = sc_pb.ResponseObservation(observation=sc_pb.Observation(
            game_loop=2, alerts=[sc_pb.AlertError, sc_pb.MergeComplete]))
        diff = proto_diff.compute_diff(a, b)
        self.assertIsNotNone(diff)
        self.assertLen(diff.changed, 2, diff)
        self.assertEqual(str(diff.changed[0]), "observation.alerts[1]")
        self.assertEqual(str(diff.changed[1]), "observation.game_loop")
        self.assertEqual(diff.changed, diff.all_diffs())
        self.assertEqual(
            diff.report(), "Changed observation.alerts[1]: 7 -> 8.\n"
            "Changed observation.game_loop: 1 -> 2.")

        self.assertEqual(
            diff.report([_alert_formatter]),
            "Changed observation.alerts[1]: LarvaHatched -> MergeComplete.\n"
            "Changed observation.game_loop: 1 -> 2.")
Exemplo n.º 9
0
 def setUp(self):
   super(AvailableActionsTest, self).setUp()
   self.obs = text_format.Parse(observation_text_proto, sc_pb.Observation())
   self.features = features.Features(screen_size_px=(84, 80),
                                     minimap_size_px=(64, 67))
Exemplo n.º 10
0
 def setUp(self):
     super(AvailableActionsTest, self).setUp()
     self.obs = text_format.Parse(observation_text_proto,
                                  sc_pb.Observation())
     self.hideSpecificActions(True)