Yes this is the code for the testbench so there is no need to be able to actually synthesize this one. All legal VHDL constructs are OK.
On the other hand the expression addr = addr +1 does not work at all. ISE complains that it cannot resolve the '+' operator so the type is not obvious, or at least the expression does not resolve.
Explicitly typecasting does work and as far as i understand, the end result is the same.
Somehow these simple things get very contorted in VHDL but i guess that's where you end when the requirement is to synthesize a circuit based on the expressions. The lack of support for constant arrays was a big disappointment however. That doesn't seem so hard to do.
----
Late breaking news: Curiouser and curiouser. When i discarded the incrementing part altogether, just setting addr <= "00001111"; ISim didn't show the change. Addr still lies at 0, not reacting to the assignment at all. However, removing the clock from around the assignment allowed it to go through so the value was finally visible in ISim. And the lookup value correctly reflected the address. So the complaint regarding lack of support for constant arrays was some kind of bullshit, ISim supports this one at least no problem.
Now to discover how to actually increment the f-ing addr %-B.
Blood pressure decreasing at least marginally, however

.