It is unsigned in Bitcoin Core, so the tests should match it:
Large positive values, or “negative” values, are rejected anyway, but it still seems fine to fix this.
The bug was introduced when the code was written in d280617bf569f84457eaea546541dc74c67cd1e4.
(Lowercase i
means signed, see https://docs.python.org/3/library/struct.html#format-characters)