Given a list of integers, write a Python generator that yields the integers from the list while handling edge cases such as None values, empty input, duplicates, very large inputs (avoid loading everything into memory at once), and non-integer items. Clearly define and document the behavior for None and invalid items (e.g., skip, convert, or raise). Write comprehensive unit tests covering normal paths and edge cases, including input validation, iteration order, resource usage, and error handling.