def METHOD_NAME(self) -> None:
    """
    Verify that _defines() function can handle either or neither source or
    target being specified
    """
    env = DummyEnvironment()
    with self.subTest():
        # Neither source or target specified
        x = _defines('-D', ['A', 'B', 'C'], 'XYZ', env)
        self.assertEqual(x, ['-DAXYZ', '-DBXYZ', '-DCXYZ'])
    with self.subTest():
        # only source specified
        y = _defines('-D', ['AA', 'BA', 'CA'], 'XYZA', env, 'XYZ')
        self.assertEqual(y, ['-DAAXYZA', '-DBAXYZA', '-DCAXYZA'])
    with self.subTest():
        # source and target specified
        z = _defines('-D', ['AAB', 'BAB', 'CAB'], 'XYZAB', env, 'XYZ', 'abc')
        self.assertEqual(z, ['-DAABXYZAB', '-DBABXYZAB', '-DCABXYZAB'])