code: def test_general_attack(self):
      self.create_unit(
          unit_type=units.Protoss.Zealot, owner=1, pos=(30, 30)
      )
      self.create_unit(
          unit_type=units.Protoss.Observer, owner=1, pos=(30, 30)
      )
  
      self.step()
      obs = self.observe()
  
      zealot = utils.get_unit(obs[0], unit_type=units.Protoss.Zealot)
      observer = utils.get_unit(
          obs[0], unit_type=units.Protoss.Observer
      )
  
      self.raw_unit_command(
          0, "Attack_screen", (zealot.tag, observer.tag), (32, 32)
      )
  
      self.step(64)
      obs = self.observe()
  
      zealot = utils.get_unit(obs[0], unit_type=units.Protoss.Zealot)
      observer = utils.get_unit(
          obs[0], unit_type=units.Protoss.Observer
      )
      self.assert_point(zealot.pos, (32, 32))
      self.assert_point(observer.pos, (32, 32))
      self.assertEqual(
          raw_ability_ids(obs[0]),
          [actions.FUNCTIONS.Attack_Attack_screen.ability_id],
      )
  
      self.raw_unit_command(0, "Attack_screen", zealot.tag, (34, 34))
  
      self.step(64)
      obs = self.observe()
  
      zealot = utils.get_unit(obs[0], unit_type=units.Protoss.Zealot)
      observer = utils.get_unit(
          obs[0], unit_type=units.Protoss.Observer
      )
      self.assert_point(zealot.pos, (34, 34))
      self.assert_point(observer.pos, (32, 32))
      self.assertEqual(
          raw_ability_ids(obs[0]),
          [actions.FUNCTIONS.Attack_Attack_screen.ability_id],
      )
  
      self.raw_unit_command(0, "Attack_screen", observer.tag, (34, 34))
  
      self.step(64)
      obs = self.observe()
      zealot = utils.get_unit(obs[0], unit_type=units.Protoss.Zealot)
      observer = utils.get_unit(
          obs[0], unit_type=units.Protoss.Observer
      )
      self.assert_point(zealot.pos, (34, 34))
      self.assert_point(observer.pos, (34, 34))
      self.assertEqual(
          raw_ability_ids(obs[0]),
          [actions.FUNCTIONS.Scan_Move_screen.ability_id],
      )
  
file_path: pysc2/pysc2/tests/actions_test.py
imports: from absl.testing import absltest
  from pysc2.lib import actions
  from pysc2.lib import units
  from pysc2.tests import utils
label_desc: Use image node_id 1 for calling the ActionsTest obj's underlying member method code with example usage: obj.test_general_attack() without return types