Systemd compares the amount of memory used to the available swap space
and does not offer hibernation if there isn't enough. I haven't seen
reports that this calculation is not done properly.
I was told years ago that there's no way userspace can reliably know, and even if we activated a dedicated bigger-than-memory sized swap partition immediately before hibernate started it could still fail. maybe things have improved since then, or maybe it wasn't accurate information. dunno.